Podchaser Logo
Home
734: HTMX Web Apps with Carson Gross

734: HTMX Web Apps with Carson Gross

Released Friday, 23rd February 2024
Good episode? Give it some love!
734: HTMX Web Apps with Carson Gross

734: HTMX Web Apps with Carson Gross

734: HTMX Web Apps with Carson Gross

734: HTMX Web Apps with Carson Gross

Friday, 23rd February 2024
Good episode? Give it some love!
Rate Episode

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

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features