Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
Welcome to syntax on
0:02
this Friday separate club. We have
0:04
Carson gross here. We're going to
0:06
be talking all about HTM X.
0:10
We're going to be able to pick the
0:12
brain of the hyper media man
0:14
himself and talk all about everything,
0:17
uh, that you all have
0:19
been asking about since our first HTM X
0:21
episode, my name is Scott to lens game,
0:23
a developer from Denver with me, as always
0:25
is West boss. What's up, Wes? Hey,
0:28
uh, not too much. Excited to have Carson on
0:30
today to ask him all the questions
0:32
that we have about HTM X and, uh, understand
0:37
what's going on here and hopefully clarify. Cause it's
0:40
like, we had tons and tons of feedback from
0:42
that show. And some of the
0:44
stuff was valid and some of the stuff was just like,
0:46
oh, you actually, I don't think that you totally understand how
0:48
it works. So hopefully we're going to clarify all of that.
0:51
Yeah, totally. And, uh, also
0:53
if you're asking questions of your code, like,
0:55
Hey, why did this bug happen? Maybe you
0:57
want to have a tool like century on
0:59
your side to reveal all of those bugs
1:01
and why they happen so that way you
1:04
can go solve them. So if you want
1:06
to use a tool like that, I had
1:08
on over two century.io/syntax sign up
1:10
and you'll get two months
1:12
for free. Carson,
1:14
how's it going? My man. Uh,
1:17
it's going pretty well. Uh, a little
1:19
crazy things have been crazy since, uh,
1:21
last July in HTM X land for
1:24
sure. Um, got a lot more attention than
1:26
I was certainly used to. Um,
1:29
when the
1:31
primary gen picked it up and fire
1:33
ship dev, um, did a short on
1:35
it. And so there's been a sort
1:37
of a huge amount of attention, um,
1:39
little overwhelming, but you know, it's
1:41
all good. It's fun. Yeah. Was
1:43
that the sort of catalyst for the, it
1:46
was, I was sitting
1:48
on a, on a bucket at
1:50
a, at the state youth baseball
1:52
championship. Um,
1:54
uh, baseball coach here and, uh, I just
1:56
checked Twitter and was like, that can't be
1:59
right. And
2:01
it's kind of it's been that
2:03
can't be writing for since about July. It
2:05
was really good I got very lucky because
2:07
I released a book like you know I'm
2:11
at the end of July middle and end of July last year
2:14
And so it really helped just a lot of
2:16
things kind of came together at one time So
2:18
very lucky in that in that sense Cool.
2:22
Well, do you want to give a brief introduction
2:24
to who you are and what you do
2:26
to our audience? Yeah,
2:29
I so my name is Carson gross I
2:31
run big sky software, which is a
2:34
big sky dot software and That's
2:37
just a consulting company that I run that supports
2:39
my open source work for the most part And
2:42
then I teach my primary job is I teach
2:44
at Montana State Which is where
2:46
the primogen actually went for under that nice
2:49
So funny connection. Did you teach him?
2:52
I didn't I you know, I did not I
2:54
know people who taught him though There are people
2:56
that are still there that he that he knows
2:59
So all of these hdmx ideas
3:01
are like institutionalized at a very
3:03
high level. Yeah, we're trying
3:05
I mean, I'm yeah, it's I'm trying
3:07
to write actual academic papers on it
3:10
and we'll see Academies
3:12
kind of its own things. So So
3:15
you're out in Bozeman. Yeah, Bozeman, Montana.
3:17
Yeah, I've been there a few times.
3:20
Yeah Cool town the
3:22
joke is that the nice thing
3:24
about Bozeman is like it's right next to
3:26
Montana You
3:29
can see you can see Montana from Bozeman so
3:33
There's some just I don't know that the
3:35
vibe out there is really great Obviously
3:37
that the skiing and mountain stuff is wonderful
3:39
too. But yeah, big. Yeah Yeah,
3:42
it's cool town. Don't move here, but it's
3:44
cool town Yeah,
3:47
I get it And
3:49
like what led you to Developing
3:52
what hdmx is actually maybe let's step back one
3:54
step further because people are probably tuning into the
3:56
first couple of minutes I mean like should I
3:58
listen to the rest of this one? Read.
4:00
What is Ht Max for anyone who
4:03
hadn't heard of it? Sorry, she makes
4:05
it So basically you can think of
4:07
it as Html Plus plus it's it.
4:09
Takes the ideas of Html and particular
4:11
anchor tags and forms and I'm what
4:14
I say those are. to use some
4:16
fancy terminology those are what are called
4:18
hyper media controls. One of the interesting
4:20
things about Html as the you embed
4:22
these controls the things the things we
4:25
do stuff inside the document itself, arm
4:27
and a sorry what is too much
4:29
does it takes us. To ideas,
4:31
forms and legs and then tries
4:33
to generalize that idea. So I'd
4:36
is it lets you put attributes
4:38
on it in Html that led
4:41
you trigger are an http requests
4:43
based on whatever of that you'd
4:45
like and then that issues be
4:48
requests is going to be returning
4:50
Html rather than juri sandwiches was
4:53
normally. Used for
4:55
for Ajax request used as and
4:57
then at a similar was placed
4:59
in that dom somehow. Com
5:01
has reached efficient as basically just
5:03
provides you. There's like seven or
5:05
eight core attributes that let you
5:07
generalize that idea and others The
5:10
surprisingly powerful seven or eight attributes.
5:12
He knew quite a bit with
5:14
it. So if list serves, want
5:16
to go raised your max.org/examples we
5:18
have like infinite Scroll can be
5:20
implemented in those terms active search
5:22
were like two types I'm playing
5:24
and then the results kind of
5:26
immediately come back There can be
5:29
implemented. he's three or four. html
5:31
attributes and it's all done in
5:33
terms of html rather than sort
5:35
of or bridge and for at
5:37
a thicker client side model on
5:40
such that's the big idea their
5:42
harm it's again i think it's
5:44
probably submitted sounds pretty simple in
5:46
it isn't super complicated temple many
5:49
other arm but it's a surprisingly
5:51
powerful idea i think that hyper
5:53
media is under us made by
5:55
most people today because html has
5:58
unfortunately to sort of stopped making
6:00
progress in that area. And
6:03
so people when they think about hypermedia,
6:05
they think about clunky full
6:07
page refreshes and so forth. All
6:10
the browsers have gotten better at that stuff. One
6:14
thing that I really noticed is that when
6:16
you bring up HTML people are so quick
6:18
to say, well, you can't do X, Y,
6:20
and Z with it. And I
6:22
do think that one of the
6:25
smartest things that you've done on the site
6:27
is have this examples page because if people
6:29
were to just take a quick glance at
6:31
this examples page, you can
6:33
see that they're really, that kind
6:35
of invalidates many of those conversations because
6:38
people just straight up, they
6:40
underestimate it like you said, and they underestimate
6:42
what it's capable of, especially in
6:45
the fact that many of the times when
6:47
we're doing a lot of this stuff, deleting
6:49
a row or like you said, searching, you're
6:51
having to hit the database anyways, right? You're
6:53
having to make a server trip. So what
6:57
are we doing just sending JSON and then using
7:00
JavaScript to distribute that? And
7:03
so I think that's really powerful.
7:05
I wanted to know like what
7:07
was the catalyst that made you
7:09
want to create something like HTML? Yeah,
7:13
so the original HTML was intercooler
7:15
JS, which was released back in
7:17
2013. And
7:20
that was based on some work that I had
7:22
done internally at a startup for a friend where,
7:25
and it's kind of funny, but I
7:28
was trying to sort a table and I was
7:30
trying to do it client side because in 2013,
7:32
all the cool kids were doing stuff client side
7:35
and JavaScript. I was using
7:37
jQuery because in 2013, everyone was using
7:39
jQuery. And I
7:41
just couldn't make it fast. I was trying
7:43
to sort a table, there were a couple thousand
7:45
rows in it and browsers at the time, I'm
7:48
sure now browsers can handle it without breaking a
7:50
sweat. But at the time, the
7:52
browser runtimes were not as good. And
7:54
so it was very slow. And
7:57
I ended up out of desperation just trying.
8:00
this technique out where jQuery
8:02
had a few methods for issuing
8:04
a request and then slamming
8:06
the results into the DOM. And
8:09
I did that and it was very
8:11
fast. This was a
8:13
Rails app at the time and I
8:15
was a little bit shocked by that
8:17
and so I started writing, I recognized
8:19
that technique. There's also something
8:22
called Pjax which is sort of an older
8:24
take on this idea. So
8:26
there were some ideas floating around and I then
8:29
saw Angular 1 and the
8:31
way they used attributes and I thought
8:33
to myself, well, I'll just use
8:35
this attribute idea, this custom attribute
8:38
idea to basically drive this little
8:40
custom function that I've been using
8:42
to do this same pattern. And
8:46
that eventually grew into intercooler JS. So it
8:48
came out of a performance, what at the
8:50
end of the day was a performance issue.
8:52
I wasn't super passionate about hypermedia at the
8:54
time. It was only after
8:56
I released it that people pointed out to
8:59
me, hey, this is restful, this is like real
9:01
rest. I don't know if we want to get into
9:03
that or not but this is a – the language
9:05
I would use today is
9:07
like this is a hypermedia oriented
9:09
approach to web development that you're
9:12
doing. So eventually I learned
9:14
a bunch more about that and kind of
9:17
wrote a bunch of essays and understood
9:19
what I was doing a lot better over time. And
9:23
the HTMX is basically a rewrite of
9:25
intercooler JS where I pulled out the
9:27
jQuery dependency just because JavaScript
9:30
has made so much progress in the last 10
9:32
years. It was possible to
9:34
do that in a way that worked across most of
9:37
the major browsers. Yeah. I
9:39
remember Pjax first hitting the scene and
9:42
it blowing my mind. Being like, wait a
9:44
second. We're doing a route here
9:46
without a full page load. Wow,
9:48
this is crazy. Yeah. I
9:51
was building like an audio player on a site
9:53
and the fact that I could change routes and
9:55
have that audio not restart without having to pop
9:58
it into a second window was like pretty pretty
10:00
mind blowing. I often wonder
10:02
what HTML would look like
10:04
if you were to totally
10:06
scrap out everything we've done and
10:09
done it from the beginning. Do
10:11
you think that we would have some
10:14
declarative ways to do what we're doing
10:17
to run fetch and get parts back?
10:19
Do you think that HTML might look
10:21
like HTML
10:24
if we were to scrap it
10:26
and start fresh? I don't think
10:28
you even need to scrap it and start fresh. I
10:30
think that the ideas of HTML, I say this a
10:32
lot, like HTML is cool and it's
10:34
not like it's a big library. It'll
10:38
be useful for people that adopt
10:40
it. But I think the idea
10:42
is like the essays, the hgmx.org/essays
10:44
page and then our book at
10:46
hypermedia.systems, which you can read online
10:48
for free. It just talks a
10:50
lot about hypermedia in terms that
10:52
normal developers can understand. Unfortunately, the
10:54
hypermedia world can often be pretty
10:57
academic. There's a lot of
10:59
negativity in it as well, I've noticed.
11:01
I don't know what it's, you know,
11:03
but it's whatever. But the
11:05
ideas there are good and they're interesting. And
11:07
so I think you could take the ideas
11:09
of hgmx and integrate them into HTML in
11:11
maybe a more standardized form. Like, okay,
11:14
maybe you don't want everything to be
11:16
a hypermedia control because of accessibility issues.
11:19
But let's just look at buttons and
11:21
make it so that buttons have the
11:23
ability to be standalone hypermedia controls. I
11:25
think you could start making progress again
11:28
as a hypermedia. There's also
11:30
some like frame sets. There's some ideas that
11:33
hgmx kind of lets you, gives you
11:35
a lot of flexibility around that were
11:37
there in nascent form early on. Like
11:39
frame sets and you can target an
11:41
iframe with a link. It's just that
11:43
iframes kind of stink, they can't participate
11:45
in the DOM. There are frames and
11:47
there are frame sets and those have
11:49
been deprecated to an extent. And so I
11:51
think the ideas are kind of laying around.
11:54
And my hope is that hgmx helps sort
11:56
of spark those, you know,
11:58
spark the thinking around. What could HTML
12:01
be? Because I don't think HTML can,
12:03
you know, Figma, for example, like you're
12:05
not building Figma in HTML, or
12:07
at least you're not building it in, you know, HTML-based
12:10
logic, like there's just too much going on
12:12
there. But on the other
12:14
hand, there's a lot of apps that probably could be
12:16
built in pure HTML, and very
12:19
effectively if they were to start, you know,
12:21
picking off some of the bigger ideas from
12:23
HTML. Yeah, you
12:26
know, it is something that I've been
12:28
really paying attention to when I use
12:30
various apps that I use day-to-day. Like,
12:33
I tweeted about this. It was, you know,
12:35
like how many of these things really
12:37
need anything more than
12:39
HTML to do what they're doing? And
12:42
I don't know if it's that people don't realize that you
12:44
can do things like, you know, streams
12:47
or server-sent events or stuff
12:49
like that, but it's really
12:52
way more capable. But
12:54
the one comment I tend to get on repeat
12:57
whenever I bring this up to people
12:59
is, why would we
13:02
go backwards when
13:05
we went forwards to this,
13:07
you know, client side and now
13:09
SSR and hydration world or even
13:12
resumability world, and
13:14
that it's a step backwards into,
13:16
you know, old-school Ajax?
13:19
Do you have like a comment on
13:21
that kind of response that people
13:24
typically have? Yeah, I think,
13:26
you know, I look at it like
13:28
more of a Hegelian dialect. Like, you
13:30
know, it's a dialectic. Like, we
13:33
were all server-side.
13:36
It's not thin client, but
13:39
hypermedia-oriented, where
13:41
hypermedia was really running the show.
13:44
And then we moved to the
13:47
reactive thick client
13:50
model. And, you know, in some ways,
13:52
I have to say, even reactivity isn't
13:54
new. Like, in the 80s, we were
13:56
building apps in this way, you know?
13:58
Like, we had... you look at like
14:01
Java swing, for example, it
14:03
has reactive aspects to it. There's a lot of
14:05
infrastructure there. And you know, I built I
14:08
built apps like that. Initially, this is kind
14:10
of ironic. But initially, I sort of rejected
14:12
the web. And I built web Java
14:15
based remote app, you know, using what I
14:17
would consider a real remote protocol, as in
14:19
JSON. And so I've, you know, I'm pretty
14:22
familiar with that stuff, or at least that
14:24
was, it's been a long So,
14:27
you know, I think there's there's been more and
14:29
back more back and forth,
14:31
particularly if you step back, then
14:34
probably appears to particularly younger web
14:36
developers. And so, you
14:38
know, I think there's a there's again, there's a
14:40
dialectic here, the original web
14:42
HTML, it was amazing what we accomplished with
14:44
HTML, you know, like the web apps that
14:47
we were able to able to build, it
14:50
just showed the power of, you
14:52
know, the network. And because
14:54
it was clunkier, and a lot of
14:56
people complained about, you know, web apps
14:58
versus the thick apps they were used to,
15:00
but web apps still kind of one and the web
15:02
still kind of one. But then
15:05
eventually, we realized, okay, this user,
15:07
the user experience that we can
15:09
produce with hypermedia isn't good enough.
15:11
So we need to start moving
15:13
towards JavaScript based applications. And
15:16
that's fine. But then there was also,
15:18
you know, in my mind, HTML just
15:20
kind of was always hamstrung
15:23
by not continuing to add
15:25
features, hypermedia features in any event,
15:28
as it made progress. And so I view
15:30
HTML is sort of like a
15:32
not necessarily a return to, you
15:35
know, an older model, so much as
15:38
it's a, it's building, taking some of
15:40
the good ideas from today, you know,
15:43
and then building on some of these older
15:45
ideas as well. And so I think there's
15:47
a dialectic in play there. And so HTML,
15:49
HTML isn't right for everything. There's a lot
15:51
of apps that it doesn't, it just won't
15:53
work for. Yeah. And we have an essay
15:55
up on that when to use when to
15:57
use hypermedia. So, you know,
16:00
I think I just you know, oh, it's
16:02
an endless cycle. I don't know. I mean
16:04
we're making progress HTMX is better than pjax
16:06
in many ways. So we're making progress. Yeah,
16:09
what are some examples of apps that are Like
16:13
you shouldn't build with with htmX. Like when
16:15
should you? Personally, do you
16:17
think that you should reach for react or some
16:19
sort of spa framework? Yeah,
16:21
well, I don't know about react cuz I just to be honest.
16:23
I don't have a ton of experience with it So I don't
16:26
know what it's good at Okay,
16:28
obviously Figma is something you're not
16:31
building in htmX And
16:34
similarly, I you know another example that's
16:36
given in that essay is something like
16:38
Google Sheets would be difficult to implement
16:41
in htmX
16:43
because In Google Sheets
16:45
you've got very fiddly Interactions
16:47
you update one cell in one part of the screen
16:49
and then you've got to update some other cell in
16:51
another part of the screen and that's all highly dependent
16:53
on the Formulas and it's very difficult
16:55
like all you you know with htmX You kind
16:58
of want to refresh the whole thing and that's
17:00
not gonna work in a spreadsheet environment
17:02
now on the other hand I will say if
17:05
you've got like an enterprise application and you
17:07
can do sort of a row editing of
17:10
tabular data Then htmX can
17:12
be very effective like if most of your value
17:15
is being added on the server side Rather
17:17
than on these client-side interactions, which is the
17:19
case in a lot like ERP apps
17:21
and you know any sort of app
17:24
where you're coordinating human or not any
17:26
Coordinating activities like very often
17:28
the the value of the app is is
17:30
on the back end It's not in the
17:32
front end and in those types of applications
17:34
htmX is maybe a better option because not
17:37
because you can do better You UI with it, but
17:39
just because you can do good enough UI and You're
17:43
adding your value on the back end and then
17:45
you save a tremendous amount of complexity Hopefully and
17:47
then that you know that complexity that you save
17:50
on your front end can be dumped into
17:52
Functionality on your back end instead where
17:54
where there's more value to be found
17:57
and do you think that puts more of a
18:00
more of a load onto the server to
18:03
do more. I think that's a comment I
18:05
get a lot. I've been talking a lot
18:07
of HTMX in the Svelte
18:10
discords and stuff like that and people say
18:12
well that's putting a lot of that resources
18:15
now that you need onto the server rather
18:17
than dumping it into the client. Yeah,
18:19
I mean there's some truth
18:21
to that. An HTMX app
18:24
is going to be less
18:27
burdensome on the client because
18:29
first of all we're just parsing HTML which
18:32
is done and we
18:34
don't have a lot of heavy JavaScript logic. That's
18:37
actually typically a good thing because it
18:39
means your client can often perform more
18:41
quickly. One
18:45
thing I've tried to point out to people is that
18:49
the difference between rendering a JSON
18:51
representation and rendering an HTML
18:53
representation particularly if you have
18:55
compression enabled which you should
18:58
is actually very low. There's
19:01
not a massive difference between the
19:03
two. If you have tabular
19:05
data, HTML is actually more efficient
19:08
in some ways than JSON because
19:10
JSON repeats field names unless
19:13
you do something crazy in
19:15
your formatting. I don't think there's
19:17
as much of a CPU and
19:19
memory and network
19:21
transfer time difference between JSON
19:24
and HTML as many people
19:26
suspect. That's
19:29
the first thing that I'd say.
19:31
On the other hand, what HTMX
19:33
does imply is a network request
19:36
for some interactions. Not
19:38
all interactions but for some interactions. There's
19:40
a network latency there
19:42
that is present in HTMX that
19:44
might not be present in a
19:47
well-tuned SPA application
19:50
because a well-tuned SPA application might
19:52
do an optimistic update or whatever
19:55
or might be able to do
19:57
something entirely client-side. That being
19:59
said, there are tools available in HTML,
20:01
like the details element, for example,
20:04
that are there to support client side
20:06
interactivity and htmX is not
20:09
against client side interactivity, per
20:12
se, like we encourage scripting, we
20:14
just say you should script in
20:16
a hypermedia friendly manner, like you
20:18
shouldn't be doing, you basically
20:21
shouldn't synchronize state with the
20:23
server in a non hypermedia
20:25
way. Now that's, you know, I'm pragmatic
20:27
about it, like there's gonna be times
20:29
when you're just gonna do that. And I'm not
20:31
gonna hunt you down about it. It's fine. It's all good.
20:33
We got to get work done. But
20:36
so I think that there, you know, there
20:39
is some truth to that, that there are
20:41
going to be user experiences that are difficult
20:43
to achieve in htmX that are easier to
20:45
achieve in SPA. On the other hand, what
20:48
I would say is, is your experience with
20:50
SPA is universally good. Like
20:53
this, this promise of performance that we've
20:55
gotten, I would say has not been
20:57
achieved as broadly as many of the
20:59
advocates for SPA is would suggest it's,
21:01
it's hard to do, there's a lot of
21:04
layers often between like the front end, and
21:06
the back end, it's, you know, can be
21:08
difficult to figure out exactly what's happening. And
21:11
so that can lead to, you know, the sort
21:13
of famous gif of
21:15
like, you know, an argument in favor of
21:17
SPA is and then it's just a spinning
21:20
gif, right? So, you
21:22
know, SPA is to be done very well,
21:24
I don't want to say they can't. But on
21:27
the other hand, I think you can build very
21:29
good htmX based applications that don't overburden your
21:31
server. htmX is focused on updating partial
21:33
bits of HTML, and partial bits of
21:36
HTML can be very efficient to generate,
21:38
they can actually be more efficient to
21:40
generate than like a bunch of JSON
21:43
API calls to build a particular part
21:45
of your UI. And what
21:47
about your thoughts on
21:49
like a lot of these frameworks right
21:51
now, obviously, react server components, they
21:54
are now saying, all right, well,
21:57
let's render everything on the server, because Because
22:00
in a lot of cases that makes sense.
22:02
Why send the JSON and the library
22:05
to build the table and all this other
22:07
stuff that you need just to render it
22:09
out in the browser, just do
22:11
it on the server where it could be a lot faster
22:13
and then just ship the actual
22:15
endpoint, right? Clearly that's
22:18
going to be, in some cases, in a lot
22:20
of cases, that's going to be a much smaller
22:22
payload that needs to be shipped to the end.
22:24
But you can sort of dip into front-end
22:27
stuff as well if you need it. Do
22:29
you have any thoughts or opinions on
22:32
that trend as well? Well
22:35
I agree. I
22:38
agree. I
22:41
think that those approaches, from what I've seen, and
22:43
I'm not an expert on that stuff, I
22:46
get people that come in on Twitter and are
22:48
like, oh, have an opinion on server components. I
22:51
can't even have an opinion on React really. I
22:57
think as well as I understand it,
22:59
my criticism of that would react components
23:01
in particular. And even this might be
23:03
wrong because there's someone I think who's doing
23:05
work to make this not true. It
23:08
tends to tightly couple your front-end
23:10
and your back-end. Like now you
23:12
have to be running React type
23:14
code or JavaScript on your back-end.
23:16
Whereas if you just take the
23:18
hypermedia model and say, okay, we're going
23:20
to exchange hypermedia. One of the good
23:22
things about HTMX is you can pick
23:24
whatever back-end language you want. That's something
23:27
that I'm pretty passionate about. There's
23:29
been a meme going around, like
23:31
this lava flow kind of
23:34
coming at people and there's
23:37
this sort of fruitless person using
23:39
a backhoe trying to save
23:41
a street that's obviously going to be destroyed. The
23:44
title says this is back-end developers
23:46
trying to prevent JavaScript from taking over the
23:48
world. I think if the
23:51
situation is not that dire, and I've seen a
23:53
lot of people in the Go world, obviously
23:56
the Django world, the Python world,
23:58
pick up HTMX. I think HTML does give
24:01
life to some of these back-end
24:03
frameworks that have been for the last
24:06
five years in particular kind of shunted
24:08
aside in favor of the, what
24:11
a lot of people seems like the obvious pick of
24:13
JavaScript on the server. That's not to say I'm not
24:15
in favor of JavaScript on the server. There's
24:17
some very good run times now. I
24:21
think there's reasons to pick it, but
24:24
I don't like the idea that you have
24:26
to pick it on the server
24:28
side. Even
24:30
that's not a particularly informed
24:33
criticism because again, I've seen
24:35
someone claiming they've been
24:37
implementing React server components in
24:39
other programming languages. It
24:41
makes sense that you can do that. I
24:45
build full-stack JavaScript applications and my
24:47
back-end is 90% not, it's not
24:49
React. My
24:51
logic is not React. I'm not writing
24:53
database queries in JSX. I'm writing it
24:55
in JavaScript and then I pass that
24:57
data to my templating layer.
25:00
That's the point where you sort of pick up
25:03
React. I do think that
25:05
it's important because a lot of times people just
25:07
assume that's the only way to build these types
25:09
of things and they realize, no, there are large
25:12
companies out there that do not
25:14
have a tightly coupled front-end and
25:16
back-end and they need something like
25:18
this. I thought that is pretty
25:20
neat that you can do that as well as
25:22
some people prefer to build their
25:25
logic in PHP or Ruby
25:27
or Python or all these different languages.
25:30
One of the things I say is like, I'm never going
25:32
to be a Lisp person. I may use
25:34
Go at some point in my life, but I'm never going to
25:36
be a Lisp person. I think
25:38
it would be a shame if the Lisp
25:41
community was not able to participate in web
25:43
development because we had just
25:46
decided, okay, we're going to do everything
25:48
in JavaScript. I think it's good for
25:50
people to exist in
25:52
the Lisp programming language to put pressure
25:54
on other programming languages and so forth.
25:57
So I like that diversity of back-end
25:59
choices. for web development,
26:01
which I think HTML helps with.
26:04
Yeah, I think there is some poignant
26:06
things in there. The fact that I
26:09
did hear this criticism from
26:11
React folks a lot when talking
26:13
about HTML was that it does
26:15
tightly couple your server to the
26:17
UI because you're sending HTML. Unironically,
26:22
they're not even recognizing the fact that
26:24
if you are using React server components,
26:26
that's a much more tightly coupled system.
26:30
Given that you're saying that you
26:32
like that it can expand to all sorts
26:34
of different back-end languages, personally,
26:36
like you, if you're writing an
26:38
app, what is your favorite stack
26:41
to work in? Well,
26:43
I worked in Ruby for a long time and there's an
26:45
awful lot of tools in Rails
26:47
in particular that are just there that
26:49
are really nice. I
26:52
don't do, I may start this
26:54
summer doing some web development again, but I don't
26:56
do a lot of day-to-day web development, unfortunately,
26:59
right now, because I'm so
27:01
busy with teaching. But
27:03
I would probably, at this point,
27:06
I would take a hard look at Django. I didn't
27:08
pick Django for the book because
27:10
it's kind of like Rails in that it's
27:12
sort of a one-stop shop that
27:15
has everything that you need, but
27:17
that also adds a bunch of complexity. So in
27:19
the book, I used Flask
27:22
as the web server because it's just a little
27:24
bit easier, I think, for non-experts to pick up.
27:26
And this gets at something that I've been talking
27:29
about on Twitter a little bit lately, which is
27:32
so many of these things are context-dependent. Like
27:34
you shouldn't be a
27:37
false dichotomist or whatever. Like sometimes
27:40
one thing's the right choice and sometimes another
27:42
thing's the right choice, and it just depends a
27:44
lot on the context. So
27:46
I would probably lean that direction. A lot of it
27:48
would be driven by exactly what I was trying to
27:50
achieve. Like if I was doing an AI thing, I
27:54
would definitely look at Python. If I was doing
27:57
something that was maybe... Let's
28:00
see what's another good example. Like
28:02
you, Java's got a ton of really good libraries. I
28:04
know Java pretty well. If there was a good library
28:07
in Java that did the thing that I wanted to
28:09
do, I wouldn't be afraid of picking it and
28:11
using like Javelin or something like that for the front
28:14
end. So I think it
28:16
just depends, just depends. Cool.
28:18
Yeah, I've been personally grabbing all
28:22
kinds of different stuff to work in HCMX lately, whether
28:24
it is like gave me an
28:26
opportunity to get my hands dirty with a
28:28
bun, the JavaScript runtime a little bit, just
28:30
because it was easy to
28:32
pick that up and shoot some
28:35
HTML. It comes with a folder-based
28:37
routing setup and stuff out of the box. So
28:40
yeah, I do love that
28:42
flexibility and freedom. I did quite a
28:44
bit of Rails and Django myself earlier
28:46
on in my career. And
28:48
it is funny
28:50
how the types of things that you lost
28:53
by moving into this JavaScript framework
28:55
world that we never
28:57
really quite reclaimed in the JavaScript
28:59
world. Like what? Like
29:02
what? Okay, so you
29:04
could think of the closest analogy
29:06
in this, and I'm in JavaScript,
29:08
but in PHP, like a Laravel
29:10
system, right? You get like, so
29:13
you have a templating syntax, you get scaffolding,
29:16
you get migrations,
29:18
you get ORM, you get
29:21
routing. So you
29:23
get more, especially
29:26
more in the data piece that
29:28
you get in JavaScript. That's an
29:31
area that I think the JavaScript frameworks are afraid
29:33
to touch, you know? Oh yeah. You
29:36
know, one thing I really like from
29:38
Rails is the model stuff, like an
29:40
active record, and then all
29:42
the callbacks, like lifecycle callbacks they have.
29:45
Active record, I know ORMs have a little bit of
29:47
a bad name now, but I really like active record.
29:50
It does a pretty good job of giving
29:52
you the 80-20 solution for
29:54
an ORM, and then you can kick out to SQL when you
29:56
want. But it has a lot
29:58
of lifecycle hooks. And it does, I think, a really
30:01
good job of allowing you to
30:03
encapsulate your business logic or
30:06
your domain logic in model
30:08
object and model classes. I
30:11
like object-oriented. I've got a bunch
30:13
of my popular opinions. I like object-oriented programming. But
30:16
you know, one thing you mentioned, Scott, a little earlier was
30:19
people saying, oh, we're coupling,
30:22
with HTMX, you're coupling your front end to your
30:24
back end. And that's true, they're not wrong. There's
30:27
an essay up on the HTMX website called
30:29
Two Approaches to Decoupling. And
30:32
HTMX does couple your front end to
30:35
your back end in
30:37
a pretty dramatic way compared with
30:39
a generic JSON API. We
30:41
actually argue that's a good thing because
30:43
your web app tends to be very
30:45
churny and you need lots of little
30:48
features or whatever. And this can put
30:50
a lot of, if you have a
30:52
generic JSON API that's serving that, then
30:54
that API ends up getting very
30:56
complicated because of that. So you either have
30:58
to introduce something like GraphQL, or you
31:00
have to create a bunch of specialized endpoints for
31:02
your app or whatever. And
31:04
so separating those two actually helps
31:07
your general purpose data
31:09
API be more generic and satisfy
31:12
the people that need that. It
31:14
gets the chaos of your web app sort of
31:16
out of the JSON API. And
31:18
then there's also this idea,
31:21
as we pointed out, HTMX
31:23
does let you pick whatever kind of back
31:26
end you want. And that's because you've decoupled
31:28
sort of at the network architecture layer.
31:30
So you basically decoupled like a level
31:32
down rather than at
31:34
the application level, you've decoupled at the network
31:36
architecture level. And so that is a different
31:39
style of decoupling, but it does give you
31:41
this sort of freedom to pick whatever back
31:43
end you want in a way that you
31:45
can't if you're more committed to
31:47
a tight integration
31:49
between client side JavaScript and
31:51
server side JavaScript. I
31:55
even saw somebody embedding their entire
31:58
API. and
32:00
a worker, it was like a go
32:02
compiled to Wasm through their
32:04
entire API and a worker using
32:07
a SQLite and everything's local on
32:09
device and shipping HTMX. Again,
32:12
this is a wild
32:14
world that we're entering here. Yeah,
32:16
I've seen some pretty crazy mashups
32:19
with HTMX. I can't say I support all of
32:21
them because I don't understand all of them. But
32:26
you know, school, have fun. Yeah.
32:29
How do you feel about web components? I
32:32
haven't used them very much myself. HTMX2
32:35
is going to have better support for them.
32:38
They suffer from what frames, iframes
32:41
suffer from. There's
32:43
almost too much isolation. I don't think they did
32:45
a good job of thinking through
32:47
how to integrate them. There's so much
32:49
focus in the components world on isolation.
32:53
But there are just times when you
32:55
need to integrate. So form participation has
32:57
always been kind of difficult and so
33:00
forth. I
33:04
understand they're improving, but I'm
33:06
not an expert on them. So I don't have
33:08
a super strong opinion. I've never
33:10
needed them. I've always achieved
33:13
similar ideas by using server
33:15
side template reuse, like inclusion and
33:18
so forth on the server side.
33:22
And I think that the firewall that
33:24
kind of got in the heads of
33:26
the designers, we have to have this
33:28
hard firewall between the component and the
33:30
rest of the DOM has hurt
33:32
their adoption. But again,
33:35
I'm not an expert. That's just my
33:37
outsider opinion on it. What
33:41
are the big templating engines that
33:44
people are using? What
33:46
are you reaching for? I like
33:48
any template system that supports something that
33:50
we call template fragments, which
33:52
is the ability to within
33:54
a bigger template to call out a piece
33:57
of that template and say, this
33:59
is a separate piece of content that I want to
34:01
be able to render by itself. That's
34:04
kind of an obscure feature of template languages.
34:08
More templating languages are picking that up as
34:10
they see HTML being
34:12
adopted and hopefully they read that essay
34:15
on it. But what that lets
34:17
you do is it lets you have one page
34:19
with your content in it and then if you
34:21
need to dynamically re-render a part of that page,
34:23
rather than extracting that out and having another file
34:26
to deal with somewhere else and you can't see,
34:28
you can just tag some of the
34:30
content in that template and say, okay,
34:32
I want to be able to render this separately. And
34:35
that works really, really well with HTML because
34:37
then you can say, okay, you know, something
34:39
like if you're doing a poll, for example,
34:41
you can say, okay, just re-render just that
34:43
bit of the screen, but I
34:45
still can see everything in one place. That's
34:48
one thing that I like about
34:50
it is like, you can still sort of see
34:52
everything in one place.
34:54
I'm so glad you said that because like, in
34:57
the past like two months, I've brought up
34:59
the fact that Svelte can't do multiple
35:02
components in a single file and everyone's like, ah,
35:04
just bring them into another file and react server
35:06
components. If it's a client component, you got to
35:08
put in another file. And I've gone so far
35:11
to try to like change my
35:13
editor so that I can edit them
35:15
in line, like put a mini editor
35:17
inside the VS code because like, I just
35:19
want to look at the whole thing
35:21
and type where I want it to go.
35:23
Like it was HTML, but a lot
35:25
of these templating languages make it
35:27
really tricky to do that type of thing. So, and
35:30
I was thinking the other day, I was like, am
35:32
I wrong? Am I wrong?
35:34
And I'm glad finally, somebody else
35:36
is on board with me. Yeah,
35:38
there's another, I'm sorry to keep referring to
35:41
the essays page, but there's another essay up
35:43
there called locality of behavior, where
35:46
we talk about kind of exactly what you're, the
35:49
big idea of what you're talking about, which
35:51
is you don't, and this is a criticism
35:53
I have of the idea that you should
35:56
separate scripting and styling and HTML all apart.
35:58
Is it in order to. understand what's going
36:00
on on a given page and you have
36:02
to look in like 10 different places. It's
36:04
very difficult to you know you have
36:07
to keep a lot in your head to understand everything that's
36:09
going on and so we the terminology
36:11
we try to use around that is locality
36:13
behavior. You want to put the stuff like
36:16
where it's being used as much as
36:18
possible and so I think
36:20
template fragments are sort of an example
36:22
of an implementation where you get more locality
36:24
so you can just see okay on this
36:26
page this is what's going on cool alright
36:28
move on with my life I don't have
36:31
to navigate around so much. I
36:33
saw an interesting thing today object
36:36
oriented HTML is an interesting repo. Have
36:38
you come across that? I just saw
36:40
it for the first time today. Yeah
36:42
I saw it on Hacker News I
36:44
didn't dive into it too deeply but
36:47
I don't know what was your
36:49
take on it did it look interesting? Yeah
36:51
it looked interesting because I think specifically it
36:54
does kind of what we're talking about here
36:56
where in line with your HTML you're able
36:59
to define like okay
37:01
even just in line this is a
37:03
template here this is a fragment here
37:06
in one
37:08
specific file and even
37:10
as far as you could reference another
37:12
HTML file it seems like kind of
37:15
the way that I almost wish
37:17
HTML was invented to be
37:20
where you could have your own fragments and
37:22
templates both in line or imported. Yeah
37:26
it's in a tab somewhere I need to read it. I
37:29
was just reading before this conversation which is why it's not
37:31
on my brain I have no idea if this is a
37:34
valid approach or not or anything but I thought it was
37:36
kind of interesting. Is
37:39
there any kind of local
37:41
first story in HTMLX given that there's
37:44
so much server required this is something
37:46
that I've it's been on my brain
37:48
just a little bit I don't I
37:50
don't know you know I haven't
37:52
been doing too much local first myself.
37:55
Is there anything there that is she
37:58
Mexican can do? Not
38:00
at HTML, it's like, you know, in
38:02
my mind again, if you're talking about
38:04
HTML, you're talking about HTML plus plus.
38:06
And so HTML doesn't have
38:09
much to say about local first. It's
38:11
their hypermedia controls. You can set up
38:13
a web worker, I believe, to
38:16
handle requests. And so you can
38:18
kind of intercept the network abstraction
38:21
a little bit from that sense. And I've seen people
38:23
do that, but it's not
38:25
something I would do unless I was
38:28
really pressed into service to make local
38:30
first happen. So I would say, you know,
38:32
we say this in the essay on when
38:34
to use hypermedia. If local first is a
38:36
must for you, then HTML is probably, or
38:39
hypermedia is probably not a good thing, and
38:41
HTML is probably not a good thing. So...
38:44
Yeah. You've mentioned HTML2 in
38:46
this conversation. I guess that goes
38:48
into one of my questions, which
38:50
was like, what does the future
38:52
of HTML look like, given its
38:56
rise in popularity now? Yeah,
38:58
I think the future of HTML looks very much
39:00
like the present of HTML, which
39:02
I hope looks very much like the past
39:04
of HTML. I think the core, like, you
39:06
know, again, there's seven core attributes.
39:10
The core abstractions of the library
39:12
are correct in as much as they
39:14
implement what my idea of generalizing hypermedia
39:17
controls is. And,
39:19
you know, there's flaws,
39:21
like, if I could take things
39:23
back, I would. But we're not
39:25
planning on breaking backwards compatibility in
39:27
HTML2 very much at
39:29
all. There's going to be a couple of sort of
39:31
corner cases we clean up a little bit, but
39:34
not any major API
39:37
changes. So most HTML1 users
39:39
should be able to upgrade
39:41
HTML2 without any changes
39:43
at all. And my hope
39:45
is that, you know, we're going to
39:47
drop IE support for in two. So
39:49
that'll let us clean up the implementation
39:51
a little bit, use some more modern
39:53
JavaScript features internally. But the
39:56
API should not change. So
39:58
and I don't anticipate it changing. much
40:00
going forward. That's my hope anyways.
40:04
Let's talk about the
40:06
Twitter stuff. We went
40:09
as far as to title our episode,
40:11
is HTMLX a joke? Because
40:14
like props to you, but you're
40:16
like a number one troll online
40:19
and just run the most hilarious Twitter
40:22
account. And so much as to be whenever
40:25
somebody talks about HTMLX, they have to say,
40:28
I know the Twitter account is a little
40:30
bit much, but it's actually a pretty smart
40:32
way to build applications. So how
40:35
did you learn to be such a good troll
40:38
online? Good troll online. How
40:40
did I learn to, I think, shoot
40:42
post is the word you're looking for
40:44
there. Yes. You
40:47
know, I grew up in like on the
40:50
forums in the late 90s and early
40:52
2000s and there was
40:54
a lot of rough and tumble and I
40:56
got pretty good at like, you know, making
40:58
memes and stuff like that. And
41:00
I didn't do it for a while because I was,
41:03
I had a startup going and intercooler
41:05
JS kind of, I don't want to say
41:07
it died, but it definitely flatlined. Like, you
41:09
know, it had nowhere near the attention that
41:11
HTMLX was getting now. And
41:14
when I came back and did HTMLX, I had this
41:16
Twitter account that still had a fair number. You know,
41:18
for me, it was a lot. It was like, you
41:21
know, a couple thousand followers, which seemed like a big
41:23
deal at the time. And I was
41:25
like, you know what? I'm just going to have fun
41:27
again because I kind of, I tried to be professional
41:29
a little bit. I mean, you can go look at
41:31
some of the, you can look at intercooler js.org website.
41:33
There's some silly stuff there. But
41:35
I did try to be a little bit more
41:37
serious about things. And with
41:39
HTMLX, I was kind of like, you know
41:42
what? This is just, this idea is dead
41:44
anyways. I'm just going to have fun and
41:46
run the Twitter account the way I want
41:48
to. And
41:50
I did that and it, you know,
41:52
it just worked out. People, you know,
41:54
there's not a lot of strategy here.
41:57
This is just me being real. fun
42:00
and there have been a couple of times when
42:02
like I you know I got lucky like that
42:04
whole Microsoft you know the whole
42:07
setup for you know me pretending
42:09
like Microsoft was gonna buy out HTMX
42:11
I just got really lucky like
42:14
you know there and so I got
42:16
this stupid email from Bed Bath and
42:18
Beyond from Microsoft so you
42:20
know there have been a couple of times whenever
42:22
you know tried to set things up like that
42:24
but for the most part yeah it's just me
42:27
being me being me so
42:30
can you tell the story about the the
42:32
whole Microsoft thing because I had caught parts
42:34
of it but I I could not piece
42:36
every all the hilarious together and I was
42:38
like I'm not gonna you
42:41
know when you like see like a sub tweet on
42:43
Twitter you're like I don't got time to
42:45
research what this is about what's the background
42:47
here yeah I think if someone had
42:50
someone there was a job posted at
42:52
Microsoft that mentioned HTMX that's what started
42:55
it and so there was a this
42:57
job and it didn't even say like oh you have
42:59
to be an HTMX expert it was like you it
43:01
was you know as a comma like after React
43:03
in view and all this other
43:06
stuff like at the very end they were like
43:08
oh and HTMX and so
43:10
someone retweeted that and I
43:12
was like oh okay let's we'll have some fun
43:14
with this and so I like I
43:16
just I quote tweeted that and said oh this is
43:18
inner I think I just said interesting I tried to
43:21
be like really mysterious about it and
43:23
then I started like finding people
43:25
that were mentioning Microsoft positively and
43:27
like quote tweeting them and saying
43:29
interesting I did that for
43:33
about a week and then literally like this
43:36
is just shows it's way better to be
43:38
lucky then then good I got an email
43:40
from like the Microsoft credit
43:42
card division offering
43:45
me a credit card with 10% off on
43:47
Bed Bath and Beyond and and
43:49
and I wanted to change the license of HTMX from
43:55
BSD 2 to BSD 0
43:57
because BSD 2 requires
43:59
that you distribute the license and copyright
44:01
with it, which doesn't make a lot
44:03
of sense in a JavaScript library. And
44:06
so I started,
44:09
I think on Friday, or I forget
44:11
what it was, but I was like, first
44:14
of all, I made my account super professional looking.
44:16
Like I took out all the junk, I
44:19
made my icon like normal and so
44:21
on and so forth and just started being like
44:23
really serious to freak people out. And then I
44:25
posted, I think on Saturday or Sunday night, I
44:28
was like, okay, I have a very interesting offer
44:33
from Microsoft. And I was just talking about that
44:35
stupid credit card offer that I had gotten. And
44:39
I'm gonna announce a license change
44:41
tomorrow to guarantee the financial stability
44:43
of HTMX going forward. You know,
44:46
just trying to get people freaking
44:48
out, you know, about another
44:50
open source rug pull coming in coming.
44:53
And then the next day I just
44:55
said, okay, it's BSD zero. And the
44:58
offer was this stupid credit card offer. So
45:02
that was probably the biggest setup I've done.
45:05
You know, beyond that, it's all just been
45:07
like chaos. Like, you
45:09
know, at some point I think, I hope
45:11
Elon Musk actually takes the bait on one
45:14
of my tweets and that'll be, I'll probably
45:16
delete my account after that. Oh,
45:18
that's great. That's
45:22
good. Okay, so we're about 50
45:24
minutes here. Is there anything
45:26
that you want to get across about HTMX
45:29
that we haven't covered yet? Yeah,
45:33
I think one thing I've been saying this on most
45:35
of the podcasts I've been going on lately is I
45:37
do like the
45:39
idea of deescalating the language
45:43
around HTMX and just the web development
45:45
in general. HTMX is
45:47
a tool. I think it's a useful tool.
45:49
I think people who are React developers could,
45:52
you know, learn about it and find something
45:54
useful in it and maybe find it useful
45:56
for like an internal project or whatever
45:58
if they've just got to get a button. up that does
46:00
a thing, maybe they don't need all that stuff.
46:03
And the ideas of hypermedia are
46:06
interesting, just from a technical
46:08
standpoint. So I think you
46:10
don't have to, and I can't tell
46:12
people who hate HTMX how to behave,
46:15
but if you like
46:17
HTMX, I would ask that you be reasonably
46:19
balanced in your promises around
46:21
it. It's not a silver
46:23
bullet, and software development is always hard, regardless of
46:26
whatever tool you pick. I've
46:28
been trying to de-escalate stuff because I do
46:31
joke a lot, and so I'm like, God,
46:33
everyone would be nice. And then
46:35
I post some outrageous meme and it's like, wow. But
46:40
in general, I
46:43
think it's an interesting tool which you can learn
46:46
pretty quickly, and there's some interesting ideas behind it.
46:48
Don't feel like it's a
46:50
life or death situation. Yeah,
46:52
well, I've noticed that. I mean, it's
46:54
not anything new, but people
46:56
are so tribal about their
46:59
tools, and their
47:01
tool that they find to be
47:03
effective is apparently the only tool
47:05
that can be effective. And
47:07
I think that's just a wrong place to be in life,
47:10
which is one of the great things about us getting to do
47:12
this show is that, Wes and I,
47:14
we get to try a bunch of different tools. We
47:16
don't have to necessarily deeply
47:19
ingrain them into our personalities. We can talk
47:21
to people like yourself and really get a
47:23
good handle on what these things are good
47:27
for and maybe where they're not appropriate. But
47:29
yeah, I think that's a good advice for anybody
47:32
out there, and not just fans of HTMX is
47:34
that you don't got to be tribal about
47:36
your tools. I think these tools all
47:38
exist for reasons, right? They all exist for
47:40
a reason. And just keep an
47:42
open mind about them. OK. So
47:45
now is the part of the show where we can get
47:47
into sick pics and shameless plugs. Did
47:51
you come to the show with
47:53
a sick pic or a shameless plug? Let's
47:57
see. I'm going to... I'm going to...
48:00
recommend your listeners look at two pieces
48:02
of technology. I will
48:04
recommend they look at Alpine.js. I don't know
48:06
how much you guys have talked about Alpine.js.
48:09
Yeah, we had Caleb on the show. Okay.
48:13
And so that's really interesting. That
48:17
library has a lot of locality
48:21
associated with it. And then another one
48:23
that's a smaller library
48:25
that kind of has a
48:27
mix of HTML and Alpine
48:29
together is something called Datastar.
48:32
And I believe the URL
48:34
is data-star.dev, which is it
48:36
was made by someone who came on the Dave
48:38
Delaney who came on the, he
48:41
came on the HTMLX discord and
48:43
had a bunch of ideas around how
48:45
to improve HTMLX. And we basically were
48:47
like, no, too complicated. So
48:50
he did the right thing. He went off and did it
48:52
himself. And so that's another approach
48:54
to sort of this hypermedia oriented model.
48:57
It's more sophisticated in some
48:59
ways. But I think that's
49:01
like if HTMLX doesn't grab you because it's
49:03
too simple or stupid or whatever, maybe
49:06
go check out datastar.dev. Cool.
49:10
Yeah, I've never heard of this. Yeah, it's
49:12
pretty now. They also
49:14
have an essays page, all these
49:16
academics getting into web development.
49:21
Yep. And shameless plugs. Is there
49:23
anything you would like to plug?
49:27
Um, I guess, you know, my book,
49:29
Hypermedia.systems, you can read it online for
49:31
free. If you want to, you can
49:34
pay for the Kindle version or we
49:36
sell a hardcover version of it as
49:38
well. The hardcover version I've
49:40
heard has had some printing issues. So
49:42
it's unfortunately Amazon on demand is
49:45
apparently somewhat erratic in what it produces.
49:47
But the cover is really cool, which
49:49
is why you're buying the hardcover anyways.
49:53
Yeah, the website is really cool, too. Yeah,
49:56
it is. And then there's also swag.html.org if
49:58
you want to go buy. HTMX stuff
50:00
including there's a poster of the covers if
50:02
you don't want to pay 50
50:04
bucks for the hardcover You just want the
50:07
you just want the cover for a poster
50:09
We saw the the smallest version of that
50:11
poster at cost because Berkeley graphics,
50:13
which is now I think us
50:15
graphics He changed his name They
50:18
did an unbelievable job on the cover and
50:20
so we wanted to make that available to
50:22
people they want There's a lot of
50:24
stuff on swag, too It's
50:27
really cool. What's up with the pickle? What's
50:31
up with the pickle? Someone generates that pickle and
50:33
I took it and hacked it up a little
50:35
bit and Photoshop or I use Photo
50:38
P. I think is what it's called the online Version
50:43
and and then I use
50:45
it. I don't know man. I don't know what's
50:47
going on It's just
50:49
really really funny and like awkward
50:52
and sort of very HTMX Yeah
50:56
It just it just works. I don't know what to say about it
50:59
There's a lot of good vibe stuff on here like the
51:01
the platter pickle It's like a platypus and
51:03
the buffalo with that laser eyes and you
51:06
know the influence. Yeah, we try to have fun You know
51:11
You might as well have fun. You might not be successful. You
51:13
might as well have fun Yeah,
51:15
well, it's been awesome Carson
51:18
It's been really great getting to talk to you and
51:21
I hope the audience has a little bit better of
51:23
an idea about the intricacies of HTMX
51:25
after this one and Yeah,
51:28
it's something that I personally been really
51:30
enjoying working with so I'm gonna continue
51:32
to dive deep into this world and
51:35
I'll see ya online great. Well, hey, thank you
51:37
very much for having me on I appreciate it
51:40
Thank you, you know just
51:42
just again. Thanks for taking a look
51:44
at it and admittedly idiosyncratic
51:47
Way to do web development Love
51:49
it. Cool. Well, thanks so much Carson you
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More