WEBVTT

1
00:00:06.679 --> 00:00:11.279
Hey, welcome back to another episode
of JavaScript Jabber. I'm your host this

2
00:00:11.359 --> 00:00:17.320
week, Charles max Wood. Looks
like Dan Shapiro just joined us. Dan,

3
00:00:17.760 --> 00:00:23.480
you wanna stay high and we just
barely started. So Hi, I'm

4
00:00:23.480 --> 00:00:26.600
glad that I was able to make
it on time. Can you hear me?

5
00:00:26.640 --> 00:00:30.079
Okay? Yeah, I'm Charles max
Wood from top End Devs and we

6
00:00:30.079 --> 00:00:33.320
have a special guest this week.
It is Goe Buckley. Ohen, do

7
00:00:33.359 --> 00:00:36.920
you want to introduce yourself? Tell
us how awesome you are, Thanks,

8
00:00:37.039 --> 00:00:43.039
Chuck, appreciate the invite and happy
to be here. Yeah. My name

9
00:00:43.159 --> 00:00:48.719
is Owen Buckley. I've been been
an enthusiast web developer for a very long

10
00:00:48.759 --> 00:00:55.960
time, since the days that broadband
carried much excitement through the world, and

11
00:00:56.200 --> 00:01:00.840
have been professionally developing for about twenty
years, primarily in web. Actually got

12
00:01:00.880 --> 00:01:07.359
my first job working on set talk
boxes for like TVs and stuff, which

13
00:01:07.400 --> 00:01:15.319
was really an interesting application of JavaScript. But yeah, throughout my career worked

14
00:01:15.480 --> 00:01:22.319
at agencies, consultancies, enterprises,
so have been very fortunate to see a

15
00:01:22.359 --> 00:01:27.719
lot of innovation in web development.
And yeah, really excited to talk about

16
00:01:29.280 --> 00:01:34.359
kind of where I kind of see
web development today. So this is this

17
00:01:34.439 --> 00:01:40.480
episode is going to be about us
old timers with a twist. With the

18
00:01:40.519 --> 00:01:46.000
twist, there's the webs for everyone. I have to say that the set

19
00:01:46.040 --> 00:01:52.079
top box thing, I've always wanted
to build apps for the TV type things,

20
00:01:52.159 --> 00:01:55.439
so Apple TV or fire Stick or
something like that. I've always thought

21
00:01:55.439 --> 00:02:00.560
that would be cool. So yeah, maybe someday. But yeah, I

22
00:02:00.079 --> 00:02:07.640
think we ran across your project Evergreen, and yeah talking about full stack and

23
00:02:07.959 --> 00:02:10.719
web components and stuff like that.
Which web components It seems like it gets

24
00:02:10.759 --> 00:02:14.840
popular for a while and then people
stop talking about I think it's popular again

25
00:02:14.919 --> 00:02:17.639
for a while. So yeah,
do you want to kind of give us

26
00:02:19.479 --> 00:02:22.719
a little bit of an introduction as
to where you are and what you're working

27
00:02:22.719 --> 00:02:27.120
on here, and then we can
dive into the specifics. Sure? Sure,

28
00:02:28.840 --> 00:02:34.159
So yeah, by project, the
project Greenwood that I've been working on

29
00:02:34.319 --> 00:02:43.360
for a little while now, is
I guess maybe a homage distillation of all

30
00:02:43.400 --> 00:02:47.599
the good things I've seen in web
development and maybe pushing back on I guess

31
00:02:47.599 --> 00:02:53.360
maybe the idea that well, there's
a lot of tools and options out there,

32
00:02:53.800 --> 00:03:01.240
not every project necessarily needs a high
level of tooling and complexity to achieve

33
00:03:01.800 --> 00:03:06.759
you know, like say a landing
page or a blog or something like that.

34
00:03:07.000 --> 00:03:14.840
And yeah, I think mostly just
coming to realize that the web has

35
00:03:14.879 --> 00:03:20.000
gotten really, really, really good. I gave a local meetup talk a

36
00:03:20.039 --> 00:03:25.120
couple a few weeks ago called from
Webpack to web APIs, and I was

37
00:03:25.120 --> 00:03:30.879
trying to use that as a mechanism
to showcase that while webpack did a lot

38
00:03:30.879 --> 00:03:36.800
of very cool things back in the
day, it also kind of inverted some

39
00:03:36.960 --> 00:03:44.719
expectations around like how you could actually
consume various file formats like CSS and jason

40
00:03:44.840 --> 00:03:51.280
and basically things that weren't JavaScript.
But today the web actually has a lot

41
00:03:51.280 --> 00:03:58.000
of capabilities to consume those file formats
natively. And that's kind of really the

42
00:03:58.000 --> 00:04:03.520
theme behind Greenwood Project Evergreen is the
web has come a long way. You

43
00:04:03.599 --> 00:04:08.360
might be able to just use the
web for a lot of the tooling and

44
00:04:08.400 --> 00:04:12.199
development that you might have had to
rely on a tool in the past,

45
00:04:12.240 --> 00:04:17.720
because it's kind of the way the
web works the ecosystem. The community kind

46
00:04:17.720 --> 00:04:23.439
of pushes it forward and then hopefully
the great, best and greatest makes it

47
00:04:23.480 --> 00:04:27.720
back in the platform. I think
jQuery probably being the most classic example of

48
00:04:28.000 --> 00:04:31.439
taking all those good lessons and being
like, oh, yeah, we could

49
00:04:31.879 --> 00:04:39.120
just put this into the web and
to be Web components play a really useful

50
00:04:39.279 --> 00:04:44.600
role in that because although they might
be a little more low level in terms

51
00:04:44.639 --> 00:04:50.920
of, like say, some of
the authoring capabilities other libraries and frameworks give

52
00:04:50.959 --> 00:04:55.600
you, they're also really good for
templating because ultimately, at the end of

53
00:04:55.600 --> 00:05:00.879
the day, they're just HTML tags. They operate again, it's just regular

54
00:05:00.079 --> 00:05:04.959
HTML. And so a lot of
what Greenwood's also been pushing is how to

55
00:05:05.040 --> 00:05:10.720
get that on the client and server. If I have one component that I

56
00:05:10.800 --> 00:05:14.199
want to just render out as HTML
and the server, can I do that?

57
00:05:14.639 --> 00:05:16.879
Yes? If I need a little
inneractivity, could I still use that

58
00:05:16.959 --> 00:05:23.720
same definition on the client the answer
is also yes. And so kind of

59
00:05:23.759 --> 00:05:29.920
just built kind of around that concept
and applied it to many web standards and

60
00:05:30.600 --> 00:05:35.120
techniques. But can you be a
bit more specific? I mean, so,

61
00:05:35.480 --> 00:05:42.279
project evergreen, what is it?
Is it something like front and framework?

62
00:05:42.480 --> 00:05:46.399
Is it something like a full stack
framework? Is it something like a

63
00:05:46.439 --> 00:05:50.680
web server? What is it?
At the end of the day. Primarily

64
00:05:53.560 --> 00:05:58.800
so, project Evergreen is the basic
kind of like the GitHub organization around a

65
00:05:58.920 --> 00:06:03.439
collective of projects. The main one
that you would use in a day to

66
00:06:03.519 --> 00:06:10.519
day capacity is Greenwood, And that's
kind of a hybrid between something like a

67
00:06:10.759 --> 00:06:16.959
VAT, which is primarily focused on
like the local development experience, but also

68
00:06:17.279 --> 00:06:26.439
pairs that with some with like developments
or like application scaffolding and conventions that you

69
00:06:26.519 --> 00:06:31.279
might get from like a NEXT or
NEXT or spell kit, like API routes

70
00:06:31.319 --> 00:06:36.319
and file based routing and stuff like
that. The web is it going to

71
00:06:36.480 --> 00:06:43.920
account for everything, and so you
know you're still going to want some sort

72
00:06:43.920 --> 00:06:49.319
of local development environment and some conventions
to build your application. So yeah,

73
00:06:49.360 --> 00:06:55.600
Greenwood is basically trying to leverage web
standards front to back, so you as

74
00:06:55.639 --> 00:07:00.319
an author could hopefully just rely on
like MDN more and I don't have to

75
00:07:00.360 --> 00:07:05.360
write as many docs to explain how
these things work here. You just say

76
00:07:05.759 --> 00:07:13.279
we use say import attributes. That's
how you reference JavaScript, CSS, JSON.

77
00:07:13.439 --> 00:07:17.000
So hopefully trying to reduce the surface
area of the framework itself, which

78
00:07:17.079 --> 00:07:25.959
is great from a maintenance perspective,
by leaning on web standards that exist today

79
00:07:26.040 --> 00:07:31.319
or coming very soon, and in
that regard, hopefully trying to help educate

80
00:07:31.639 --> 00:07:38.639
and make it more easy for new
developers to onboard because those skills are going

81
00:07:38.680 --> 00:07:42.360
to be very transferable. I'm learning
web development. Oh great, here's you

82
00:07:42.439 --> 00:07:46.800
know. It's basically the hopefully to
kind of be the framework, or I

83
00:07:46.839 --> 00:07:51.959
call it the workbench, because we
don't have like a lot of like framework

84
00:07:53.120 --> 00:07:57.399
code that you use from us.
We just, like I said, it's

85
00:07:57.439 --> 00:08:01.600
kind of like VAT for development,
but with a blend of kind of some

86
00:08:01.680 --> 00:08:05.879
of the next isms that you might
get to build the application, but it

87
00:08:05.959 --> 00:08:11.959
ultimately boils down to Web standards as
much as possible, for like the APIs

88
00:08:13.160 --> 00:08:18.160
or how you would right say,
an API end point like just request and

89
00:08:18.399 --> 00:08:24.759
response like native response objects. So
if I'm understanding correctly, in a sort

90
00:08:24.759 --> 00:08:28.720
of a funny way, it's kind
of like a meta framework but without the

91
00:08:28.800 --> 00:08:37.799
framework. So yeah, you get
the things that you commonly get from meta

92
00:08:37.840 --> 00:08:43.320
frameworks on top of frameworks, like
file based routing, like API end points,

93
00:08:43.399 --> 00:08:50.360
like deployments and provisioning and bundling and
stuff like that, only instead of

94
00:08:50.440 --> 00:08:56.200
like next gs being on top of
React and knuts being on top of view

95
00:08:56.799 --> 00:09:01.720
in your case, you're on top
of nothing. I guess the closest analogy

96
00:09:01.759 --> 00:09:07.559
would be web components in terms of
you know, next on top of React.

97
00:09:07.679 --> 00:09:11.320
So where you know, at least
for a component model would be on

98
00:09:11.360 --> 00:09:16.120
top of webpodes, but you don't
have to. You could just build a

99
00:09:16.200 --> 00:09:18.919
regular HTML file if you want.
That was actually kind of one of the

100
00:09:18.919 --> 00:09:24.080
biggest motivations a couple of years ago
we started, was just if I want

101
00:09:24.120 --> 00:09:30.120
to, can I literally just start
with an index dot HTML and go from

102
00:09:30.159 --> 00:09:33.919
there. If I don't need server
side render, if I don't need API

103
00:09:33.159 --> 00:09:39.039
endpoints, could I still just prototype
with HTML? Could I just practice web

104
00:09:39.120 --> 00:09:43.000
standards? So, and that's kind
of what we call I'd like to refer

105
00:09:43.039 --> 00:09:48.639
to it more as like a workbench
because there is an AD. I've tried

106
00:09:48.639 --> 00:09:52.720
to avoid having as much ceremony as
you might have with some of the other

107
00:09:52.759 --> 00:10:01.600
meta frameworks, mostly by trying to
eliminate the spoke APIs because hopefully nine out

108
00:10:01.639 --> 00:10:05.960
of ten times I could just link
to an MDN DOT to kind of supplement

109
00:10:07.120 --> 00:10:13.159
that development workflow. But yeah,
you're you're pretty much spout on now.

110
00:10:13.320 --> 00:10:20.360
In terms of the web components,
I know that often web components are used

111
00:10:20.360 --> 00:10:26.440
in the context of something like like
lit or something like that. Is that

112
00:10:26.639 --> 00:10:31.360
also in your case or you just
do the web components, you know,

113
00:10:31.080 --> 00:10:43.200
straight on Vanilla JavaScript and the web
APIs both by defaults. Greenwood supports all

114
00:10:43.200 --> 00:10:46.720
in the browser, you know,
it doesn't really have to do anything,

115
00:10:46.759 --> 00:10:52.679
but if you want to server render
those web components, we do have a

116
00:10:52.720 --> 00:11:01.639
library called WCC that's baked into Greenwood. So Vanilla web composed like your standard

117
00:11:01.879 --> 00:11:07.240
you know, extends HTML element will
work without any sort of additional setup.

118
00:11:07.320 --> 00:11:13.440
But it is very It is easy
to add LIT and use that instead.

119
00:11:13.600 --> 00:11:18.200
And one of the things I try
to use, one of the approaches I

120
00:11:18.240 --> 00:11:22.559
took to try and emphasize that workbench
is if you want to use LIT,

121
00:11:22.000 --> 00:11:26.919
MPM install LIT. It's in your
package, Jason, You're good to go.

122
00:11:26.000 --> 00:11:30.200
We have a plug in if you
want to server render LIT, and

123
00:11:30.240 --> 00:11:35.519
now you can use lint like it
looks like in the docs in Greenwood.

124
00:11:35.720 --> 00:11:43.120
So and this could extend to other
tools like HTMX and tailwind and all that

125
00:11:43.200 --> 00:11:50.279
stuff. So we hope that we
provide a means for you to layer on

126
00:11:50.519 --> 00:11:54.559
what you want without getting in the
way. Like a lot of other frameworks,

127
00:11:54.759 --> 00:12:01.919
meta frameworks you might have install their
plugins their rap around something like LIT.

128
00:12:01.919 --> 00:12:05.639
We just want you to be able
to install LIT and use it like

129
00:12:05.799 --> 00:12:11.320
you would read from the LIT docs
and if you're using their server rendering technology,

130
00:12:11.559 --> 00:12:15.559
we're going to honor that too.
So we don't want to invent more

131
00:12:15.600 --> 00:12:20.320
things than we have to or get
in the way of you being able to

132
00:12:20.399 --> 00:12:22.120
Like we could just link to TAIL
one and say here, just follow the

133
00:12:22.120 --> 00:12:26.679
steps for you know, installing it
as a post CSS plug in. So

134
00:12:28.919 --> 00:12:33.159
now, one of the things that
I think you also mentioned it, but

135
00:12:33.200 --> 00:12:37.639
I also saw that in the documentation
and examples on your website, is that

136
00:12:37.879 --> 00:12:45.600
the routing is file based routing.
So and kind of the similar model to

137
00:12:45.679 --> 00:12:50.759
what most people or most depths now
expect and from, you know, against

138
00:12:50.759 --> 00:12:58.279
solutions like next gs and whatnot.
This routing the router that you create,

139
00:12:58.039 --> 00:13:03.480
Uh, it's a server side router, right, it's right, like or

140
00:13:03.519 --> 00:13:07.440
put another way, it's the framework
is what you know we refer today as

141
00:13:07.519 --> 00:13:15.639
multipage applications or other web originally worked. You know, these days we call

142
00:13:15.679 --> 00:13:20.120
it multipage applications. The while back
we just called them web applications. Right,

143
00:13:22.279 --> 00:13:28.559
But so, or put another way, it's not about client side routing.

144
00:13:28.679 --> 00:13:31.799
It's it's it's whenever I go from
page A to page B, I

145
00:13:31.879 --> 00:13:39.480
go back to the server to get
a new page. Yes, so we'll

146
00:13:39.639 --> 00:13:48.480
yeah, file based routing expresses itself
in Greenwood predominantly for like that MPa style

147
00:13:48.600 --> 00:13:54.120
mapping a ur L to you know, a particular file, be it HTML

148
00:13:54.399 --> 00:14:01.320
or JavaScript. If you're using server
side rendering as an option, and Greenwood

149
00:14:01.440 --> 00:14:07.879
does allow you to just build entirely
a static site, so you can just

150
00:14:07.039 --> 00:14:11.399
build and just get a bunch of
HTML files and deploy them to a CDN.

151
00:14:13.039 --> 00:14:18.200
You could actually run Greenwood as a
server like you normally could just a

152
00:14:18.240 --> 00:14:22.039
no JS server. You could deploy
to any sort of like EC two or

153
00:14:22.799 --> 00:14:30.440
fly or render. And additionally,
we have at least right now for Netlify

154
00:14:30.559 --> 00:14:37.360
in Versell, you can also build
your application to run in a serverless environment,

155
00:14:37.519 --> 00:14:43.320
and through that adapter plug in,
we'll make sure that like that,

156
00:14:43.399 --> 00:14:50.000
file based routing is configured the way
that Netlify or verseell expect mostly around the

157
00:14:50.919 --> 00:14:56.320
like the serverless endpoints, they have
their own unique like URL pattern that would

158
00:14:56.519 --> 00:15:03.960
break if we just expose you know, s API slash books right in a

159
00:15:05.480 --> 00:15:09.279
Netlify example might be like function slash
this, slash that slash that, and

160
00:15:09.320 --> 00:15:16.320
so we can honor that file based
routing through that configuration, so it's mostly

161
00:15:16.360 --> 00:15:22.519
about predictability. We do have it's
kind of experimental, but we do have

162
00:15:22.679 --> 00:15:30.840
a client side router that you can
opt into that kind of does a like

163
00:15:30.879 --> 00:15:39.840
a live wire HTMX type thing where
it'll load partials of your pages so you

164
00:15:39.879 --> 00:15:43.279
can kind of sustain like the app
shell and it'll just kind of swap out

165
00:15:43.399 --> 00:15:48.799
the body tag as you navigate from
page to page, so you can kind

166
00:15:48.799 --> 00:15:52.600
of have that spa like experience even
though you built an entirely static site.

167
00:15:52.600 --> 00:15:58.080
And also you could just do a
single page application to I have an example

168
00:15:58.120 --> 00:16:03.279
of that that a music with lt
might be better as a static app,

169
00:16:03.320 --> 00:16:07.120
but I did just want to have
examples of, you know, the various

170
00:16:07.639 --> 00:16:11.840
ways you could do that, and
that's all just similar routing. Like if

171
00:16:11.840 --> 00:16:17.519
the single page application you just do
source index dot html instead of source pages

172
00:16:17.600 --> 00:16:26.039
and all that stuff. So it's
really easy to move between those different conventions

173
00:16:26.080 --> 00:16:29.600
even at the page level. So
you could have a in your pages director,

174
00:16:29.639 --> 00:16:33.919
you could have an about dot html
that would be static, and you

175
00:16:33.960 --> 00:16:37.759
could have say a products dot JS
and that would be server rendered, and

176
00:16:37.799 --> 00:16:44.440
so you just have them side by
side and Greenwood will figure it out depending

177
00:16:44.440 --> 00:16:48.840
on how you want to deploy it. Obviously, yeah, server rendered route.

178
00:16:48.840 --> 00:16:52.120
You can't deploy on a CDN.
But that's where the service adapters come

179
00:16:52.159 --> 00:16:59.120
in. And since you mentioned HTMX, do you can I use Greenwood together

180
00:16:59.200 --> 00:17:03.320
with HTMX. It works, It
works great. I'm glad. I'm glad

181
00:17:03.399 --> 00:17:07.440
you asked. Well, it kind
of makes sense because you know your meta

182
00:17:07.480 --> 00:17:11.839
framework without the framework. They are
a framework without the framework. So it

183
00:17:11.920 --> 00:17:18.119
seems that's it's it seems like a
good match. It's it's perfect. And

184
00:17:18.240 --> 00:17:22.880
this goes back to what we had
wanted to really provide for a while,

185
00:17:22.960 --> 00:17:26.599
which is that kind of seamless interrupt
from front end to back. And so

186
00:17:26.640 --> 00:17:33.599
I did just drop a link of
a HTMX demo repo that I made and

187
00:17:33.680 --> 00:17:40.920
it's kind of like an e mini
e commercey type application, so you could

188
00:17:40.920 --> 00:17:45.039
search for products, browse for products
and and things like that. And what's

189
00:17:45.079 --> 00:17:52.359
interesting is I hope it helps demonstrate
that Greenwood can do. Is you just

190
00:17:52.640 --> 00:17:56.519
install h mpm I HTMX, or
you could just load it as a script

191
00:17:56.519 --> 00:18:00.599
tag like we let you write script
tags. You know, we let you

192
00:18:00.640 --> 00:18:06.960
write style tags. Right, it's
very HTML first from that perspective, we

193
00:18:07.000 --> 00:18:10.240
don't really want to get in the
way between you and your code. And

194
00:18:10.279 --> 00:18:14.880
also make sure that the code you
write is almost one to one with the

195
00:18:14.920 --> 00:18:19.240
code you ship, maybe except for
like modification or something like that. But

196
00:18:19.359 --> 00:18:27.839
in this demo, what I thought
was really nice is so each product renders

197
00:18:27.839 --> 00:18:33.799
inside like a card component, title, image, button to click, and

198
00:18:33.880 --> 00:18:41.160
that's a web component. It's just
a vanilla custom element. And I can

199
00:18:41.160 --> 00:18:48.480
in an API route, say for
the search route, I can in that

200
00:18:48.559 --> 00:18:56.119
API endpoint call out, get a
bunch of products, load a web component

201
00:18:56.160 --> 00:19:00.960
on the server, get all the
HTML for the ten, fifteen, twenty

202
00:19:00.000 --> 00:19:06.799
cards that gets returned as an HTML
response. HTMX drops that in the page.

203
00:19:06.880 --> 00:19:10.880
Great, now you've got your search
results. But that card component is

204
00:19:10.920 --> 00:19:17.119
also a script tag in the head
of the page right below HTMX, And

205
00:19:17.200 --> 00:19:22.319
as soon as that HTML loads onto
the page, the browser immediately upgrades that

206
00:19:22.440 --> 00:19:26.079
app card component. And now you
can click the button and it will say

207
00:19:26.119 --> 00:19:33.079
like you selected product XYZ. So
you wrote one card component entirely like you

208
00:19:33.119 --> 00:19:37.559
could have copy pasted it out of
MDN. And it works both client and

209
00:19:37.880 --> 00:19:44.799
server. So it's great for rendering
HTML. You can also render JSON if

210
00:19:44.839 --> 00:19:49.880
you want. But I think the
real value is that one card component can

211
00:19:51.000 --> 00:19:56.440
just be entirely HTML. But if
you do need some interactivity through declarative shadow

212
00:19:56.559 --> 00:20:04.599
dom detection, you can make that
card component interactive on the client. You'd

213
00:20:04.720 --> 00:20:12.200
have to do any sort of like
none of the code that you wrote,

214
00:20:12.839 --> 00:20:15.480
you know, like I said,
you could have literally copy pasted it from

215
00:20:15.599 --> 00:20:18.839
MDN. You know. That's that's
all you have to know is you know

216
00:20:18.839 --> 00:20:25.759
how to write a web component.
It works now. So the one thing

217
00:20:25.880 --> 00:20:30.559
that I can think of where a
framework might need to have slightly more extensive

218
00:20:30.599 --> 00:20:37.960
support for HDMX beyond being just well
a web server is for the partial support.

219
00:20:38.079 --> 00:20:41.920
So sometimes you you know, based
on the request headers, you might

220
00:20:42.000 --> 00:20:48.960
respond slightly differently to an HDMX a
request or to a page request that has

221
00:20:48.079 --> 00:20:55.440
HGMX in it. Is that something
that Evergreen can handle? Mh. Yeah.

222
00:20:55.519 --> 00:21:02.119
So the API endpoints are kind of
you've worked with serverlist functions, the

223
00:21:02.640 --> 00:21:07.519
classic kind of boiler plate. As
you export like a handler function, it

224
00:21:07.640 --> 00:21:12.599
takes in a request object as a
parameter and you return a response object.

225
00:21:12.759 --> 00:21:21.039
So within that request object you can
totally use like URL search prems if you

226
00:21:21.079 --> 00:21:26.359
want to do stuff with query parameters. You can use headers like the actual

227
00:21:26.400 --> 00:21:32.279
headers native headers objects, so you
can introspect on those and then do any

228
00:21:32.319 --> 00:21:37.079
sort of logic you want. The
API end points can return one line of

229
00:21:37.200 --> 00:21:41.680
HTML, many lines of HTML.
You can totally pack in as much as

230
00:21:41.720 --> 00:21:48.759
you want so within HTMX. Depending
on how granularly you want to define,

231
00:21:49.000 --> 00:21:56.400
like your actions, your hypermedia actions, you can do it all at one

232
00:21:56.880 --> 00:22:04.480
or have very many like mini API
end points. So yeah, with Greenwood's

233
00:22:04.480 --> 00:22:07.839
API end points, you control the
entire response, so you don't have to

234
00:22:07.920 --> 00:22:14.680
worry about like stripping away like head
tags or anything like that. You know,

235
00:22:14.960 --> 00:22:18.400
you just whatever you want to return, So just like a you know,

236
00:22:18.559 --> 00:22:29.200
classic API end point. Now again
listening to all the explanations and also

237
00:22:29.279 --> 00:22:36.480
looking at the Evergreen documentation and examples, there's obviously a project that's kind of

238
00:22:36.559 --> 00:22:44.079
similar, which is Astro. If
I were to consider the differences between Evergreen

239
00:22:44.319 --> 00:22:48.279
or an Astro, like what scenarios, you know, are you more appropriate

240
00:22:48.319 --> 00:22:52.359
for what scenarios? Maybe an Astro
is more appropriate for what would be the

241
00:22:52.400 --> 00:23:00.160
bigger What would be the differences between
these two projects? Yeah, so I

242
00:23:00.160 --> 00:23:08.640
think one of the philosophies of that
I tried to approach Greenwood with was that

243
00:23:08.759 --> 00:23:14.480
it felt like it could be something
that, like anybody with enough time could

244
00:23:14.559 --> 00:23:22.400
eventually realize. I think the probably
the starkest difference between something like Greenwood and

245
00:23:22.480 --> 00:23:30.720
Astro is that we're not necessarily trying
to support all libraries and frameworks. So,

246
00:23:32.079 --> 00:23:34.519
you know, one of the selling
points of astro is typically that you

247
00:23:34.559 --> 00:23:40.160
can bring your own library or framework. You know, that's that's a lot

248
00:23:40.200 --> 00:23:45.519
of work to make that all possible. And on top of that, you

249
00:23:45.519 --> 00:23:48.319
know you have to kind of keep
up with the roadmaps of each of those

250
00:23:48.359 --> 00:23:52.920
projects. Okay, React introduced rscs, are you going to support that?

251
00:23:53.200 --> 00:23:57.880
Views can introduce vapor, are you
going to support that? And I think

252
00:23:57.920 --> 00:24:03.079
maybe another question is, you know, in exploring Astro, how does it

253
00:24:03.119 --> 00:24:11.319
compare to something like next, which
is tailor designed for for React? And

254
00:24:11.400 --> 00:24:21.720
so I think one reason to consider
Greenwood is if you know, just web

255
00:24:21.759 --> 00:24:26.400
standards and web components are the thing
that you know aligns with you or makes

256
00:24:26.400 --> 00:24:30.279
sense to you, and you know
you want to be able to write just

257
00:24:30.640 --> 00:24:37.400
HTML and there isn't a lot of
you know, a lot of work happening

258
00:24:37.480 --> 00:24:42.960
underneath the hood. Hopefully it just
surfaces the developer experience, you know,

259
00:24:44.000 --> 00:24:48.119
in a lot more familiar way.
I think Astro is really cool, but

260
00:24:49.640 --> 00:24:55.680
thinking of it from the perspective of
a solo maintainer, it does seem like

261
00:24:55.720 --> 00:24:57.680
it would be a lot of work
to keep that project going. So,

262
00:24:59.319 --> 00:25:03.920
you know, we just kind of
want to be We kind of want to

263
00:25:03.920 --> 00:25:07.839
find our niche, which is just
web standards, web components, to kind

264
00:25:07.839 --> 00:25:11.200
of be the next of that,
so to speak. Now, so in

265
00:25:11.240 --> 00:25:15.200
a sense you're closer to the metal
and more directly built on the underlying web

266
00:25:15.240 --> 00:25:18.839
standards, if That's what I'm hearing. So it's less about how do I

267
00:25:18.920 --> 00:25:22.519
integrate this framework and that framework.
I mean, sure, if you want

268
00:25:22.559 --> 00:25:26.759
to use a framework, you can
always put in a script tag. But

269
00:25:26.240 --> 00:25:30.319
at the end of the day,
if I'm thinking about the silly scenarios where

270
00:25:30.359 --> 00:25:36.039
I'd be using Evergreen, where Evergreen
mostly shines is if I want to be

271
00:25:36.200 --> 00:25:41.440
closer to the metal, you know, use it either just straight on vanilla

272
00:25:41.519 --> 00:25:45.920
JavaScript, maybe with LIT, maybe
with HGMX, but not a lot more

273
00:25:45.960 --> 00:25:49.119
than that in most cases. Yeah, And I think the other thing is

274
00:25:49.160 --> 00:25:56.039
that you know, as I've noticed, it's some of like the Astro demos.

275
00:25:56.079 --> 00:25:59.920
You know, if you want to
use LIT or you want to use

276
00:26:00.279 --> 00:26:04.200
some of the libraries, there is
often like another package to install first.

277
00:26:04.319 --> 00:26:10.480
And you know, I again,
I think the webs come far enough,

278
00:26:10.519 --> 00:26:15.000
the toolings come far enough that,
you know, philosophically, yeah, like

279
00:26:15.039 --> 00:26:21.200
you said, if you want to
use LIT, you can just install LIT.

280
00:26:21.200 --> 00:26:26.000
I don't want to kind of put
any like wrappers or packages or abstractions

281
00:26:26.039 --> 00:26:29.720
in front of that. So yeah, it might be kind of interesting to

282
00:26:29.759 --> 00:26:30.680
think, like, well, if
it's just the web, what do I

283
00:26:30.720 --> 00:26:37.960
need this for? But you know, one really great example that our focus

284
00:26:37.960 --> 00:26:45.359
allows us to go really deep on
is web compatibility across the server, right,

285
00:26:45.440 --> 00:26:51.599
so investing in just making sure that
you can template out some web components

286
00:26:51.640 --> 00:27:00.799
on the server, or be able
to import CSS or yeah CSS or Jason

287
00:27:00.920 --> 00:27:08.039
or even HTML in a way that
we anticipate the standards will go in Like

288
00:27:08.119 --> 00:27:15.599
CSS and JSON modules are already standardized. HTML's up and coming specification. So

289
00:27:15.160 --> 00:27:18.759
I'd say part of it is really
just a way for us to figure out

290
00:27:18.799 --> 00:27:29.960
like what's worth focusing on. Going
back to my intro, where I say,

291
00:27:30.039 --> 00:27:33.119
how fortunate I am to see all
the innovation in the web space.

292
00:27:33.519 --> 00:27:38.359
I take that as influence. It
doesn't mean I want to write them all.

293
00:27:38.920 --> 00:27:42.319
And you know, I think there's
a lot of value in that sort

294
00:27:42.319 --> 00:27:48.400
of innovation. But I guess the
philosophy behind Greenwood is, Okay, what

295
00:27:48.480 --> 00:27:52.480
if we take all that inspiration,
look at what the web offers and provide

296
00:27:52.880 --> 00:27:57.880
and bring that into the experience or
more specifically, bring that to like the

297
00:27:59.039 --> 00:28:04.000
W three C participate in the web
component's community group. So there's a whole

298
00:28:04.039 --> 00:28:11.200
other topic where we can maybe dive
into where the web post community group iterates

299
00:28:11.240 --> 00:28:18.319
on these community protocols. So for
things like say like a context like API

300
00:28:18.480 --> 00:28:22.359
that you might see and react,
could there be a community protocol that all

301
00:28:22.400 --> 00:28:30.440
web components libraries could rally around.
So yeah, basically just trying to specialize

302
00:28:30.480 --> 00:28:36.759
on kind of one area of web
development instead of trying to tackle all the

303
00:28:36.839 --> 00:28:41.720
possibilities. Oh, don't get me
wrong, I really like the concept.

304
00:28:41.839 --> 00:28:47.319
I mean I really like the concept
that if I want to just do more

305
00:28:47.440 --> 00:28:56.119
or less vanilla JavaScript with web components
that I have, but I'm wary about

306
00:28:56.160 --> 00:29:02.680
all the effort of having to deal
with routing and stuff like that and bundling

307
00:29:02.839 --> 00:29:08.799
and configuring the deployment, like what's
the solution? And it's really great that

308
00:29:08.920 --> 00:29:15.400
Evergreen provides this this route that I
can use that you know, I don't

309
00:29:15.720 --> 00:29:22.839
I can do vanilla JavaScript and I
can get all the benefits and I don't

310
00:29:22.839 --> 00:29:30.279
know amenities of that I would usually
get me to get from a meta framework,

311
00:29:30.319 --> 00:29:36.440
but without having to bring along all
the baggage specifically the framework. Yeah,

312
00:29:36.720 --> 00:29:40.680
exactly. I was actually going to
ask something along these lines, because

313
00:29:41.839 --> 00:29:45.039
Yeah, it seems like to a
certain extent, it's either embracing the standards

314
00:29:45.160 --> 00:29:48.759
or maybe avoiding, as Dan put
it, some of the baggage from some

315
00:29:48.839 --> 00:29:52.200
of the frameworks that are out there. But when it comes right down to

316
00:29:52.240 --> 00:29:56.279
it, I mean, what is
the real benefit of that, other than

317
00:29:56.440 --> 00:30:00.680
that you embraced the standards or you
know, you didn't have to go and

318
00:30:00.039 --> 00:30:04.200
embrace some of the baggage on something
like react or view or Angular. Is

319
00:30:04.240 --> 00:30:11.240
it performance? Is it simplicity?
Understand? Is it? Askkelex Russell.

320
00:30:11.319 --> 00:30:18.160
He will tell you. I would
say, there's a there's a couple,

321
00:30:19.720 --> 00:30:26.039
uh, a couple of ways I
think uh that I you know, view

322
00:30:26.119 --> 00:30:32.079
that. So I think one aspect
is like from a developer or users hopefully

323
00:30:32.920 --> 00:30:41.400
like predictability. Uh in terms of
again the hopefully keeping the learning curve low,

324
00:30:41.880 --> 00:30:47.000
but when you do want to accelerate
your learning curve, it's just an

325
00:30:47.079 --> 00:30:52.519
on ramp to more web standards.
And uh, you know, I'm a

326
00:30:52.519 --> 00:31:00.559
big advocate for teaching and learning.
You know, I've mentored a lot in

327
00:31:00.599 --> 00:31:03.960
my career, so the fundamentals have
always been, you know, something I've

328
00:31:04.000 --> 00:31:08.400
advocated for like sure, you know
I'm not saying don't use React, don't

329
00:31:08.519 --> 00:31:14.240
use Next and stuff like just like
with anything in our industry, you know,

330
00:31:14.279 --> 00:31:18.519
there's the right tool for the job. And in some cases, you

331
00:31:18.519 --> 00:31:22.160
know, uh, something like a
Next or like a React could make a

332
00:31:22.200 --> 00:31:29.160
lot more sense. Or also if
you're just your business has been heavily invested

333
00:31:29.200 --> 00:31:32.559
in it, you know it's not
saygo rewrite all that stuff. So hopefully

334
00:31:32.640 --> 00:31:38.160
from at least the just like the
again, the like the predictability of kind

335
00:31:38.160 --> 00:31:47.920
of knowing what's at your fingertips and
trying to create a an on ramp that

336
00:31:48.000 --> 00:31:56.519
says close to web stands as possible. Has the flip side of from like

337
00:31:56.559 --> 00:32:05.240
a maintenance perspective that's specification helps us
answer a lot of decisions around Okay,

338
00:32:05.319 --> 00:32:09.240
we want to make an API endpoint, what's the design should be, Well,

339
00:32:10.079 --> 00:32:15.720
we've got requests and response like it
should obviously be that. What's the

340
00:32:15.759 --> 00:32:22.160
way to link and embed Jason and
CSS and HTML. Well, there's specs

341
00:32:22.200 --> 00:32:27.039
and standards for that. So hopefully
from the other side of it, like

342
00:32:27.079 --> 00:32:32.000
the maintainer side of it, it
helps us and not have to come up

343
00:32:32.039 --> 00:32:36.839
with new APIs that you have to
learn. Just make the ones that exist

344
00:32:37.240 --> 00:32:43.079
fit into what you might come to
expect from a standard development workflow. Okay,

345
00:32:43.119 --> 00:32:46.039
yeah, I in all projects I've
been able to import CSS. Okay,

346
00:32:46.079 --> 00:32:52.000
you can do that, just add
with type equals CSS and bang,

347
00:32:52.079 --> 00:32:58.400
now you've got a JS file that
is not owned entirely by one better framework.

348
00:32:58.480 --> 00:33:02.960
Right. So, so yeah,
the predictability, the learning aspect,

349
00:33:04.000 --> 00:33:07.119
and you know, I'll just say
for myself, like the maintenance aspect of

350
00:33:07.160 --> 00:33:13.519
it. As amazing as things like
next an Astro and whatnot are, they

351
00:33:13.559 --> 00:33:20.640
also come with a lot of work
on the development and maintenance side, And

352
00:33:20.720 --> 00:33:27.400
so hopefully something like Greenwood can be
very sustainable even with a small maintainer team,

353
00:33:27.440 --> 00:33:30.960
but still benefit a lot of people
to the degree that it can before

354
00:33:31.000 --> 00:33:37.319
maybe it hits the tipping point of
your particular application that says okay, yeah,

355
00:33:37.359 --> 00:33:42.920
maybe I need a reactor or something
like that. So I think it's

356
00:33:43.000 --> 00:33:49.160
mostly Ultimately, I think it just
comes down to providing that option, right,

357
00:33:49.240 --> 00:33:52.359
you know, I think there's plenty
of room for everybody, and so

358
00:33:52.759 --> 00:33:59.519
at the very least, if we
can just help highlight how far the web

359
00:33:59.559 --> 00:34:02.559
has come and then present it in
a way that looks very familiar to how

360
00:34:04.039 --> 00:34:08.679
the tools have helped us get this
far, I'd be very happy with that.

361
00:34:08.760 --> 00:34:14.000
But also I love getting close to
the standards, and I think one

362
00:34:14.039 --> 00:34:19.320
of my favorite things having started working
on this project is heavy participation with the

363
00:34:19.320 --> 00:34:25.000
Web Opponent's Community Group, but also
the Winter CG bringing web standards and web

364
00:34:25.039 --> 00:34:32.800
components to serverless and edge runtime.
So we benefit a lot from the collaboration

365
00:34:32.920 --> 00:34:37.400
that happens in something like Winter CG, where they're as committed to bring web

366
00:34:37.440 --> 00:34:45.599
standards to JavaScript runtimes, which is
you know, makes me very happy to

367
00:34:45.639 --> 00:34:52.159
hear, because when something like that
happens, not only can your JavaScript file

368
00:34:52.320 --> 00:34:55.559
move from framework to framework, but
also from runtime to runtime and you only

369
00:34:55.679 --> 00:35:00.840
just had to write the one kind
of the one way. Yeah, I

370
00:35:01.360 --> 00:35:13.079
definitely agree that this interoperability between jobscript
run times like would be it bun or

371
00:35:13.239 --> 00:35:22.559
Dino or node obviously, but also
cloud flare workers and versell workers and whatnot.

372
00:35:22.559 --> 00:35:29.360
You know, that's a really big
plus. And and if because you're

373
00:35:29.400 --> 00:35:36.559
so simple and basically just use the
underlying APIs, have a much easier time

374
00:35:36.599 --> 00:35:42.599
of it. I know, for
example, we we we had Kevin from

375
00:35:43.000 --> 00:35:49.440
from Dino on as a guest and
he talked about the challenges of getting next

376
00:35:49.559 --> 00:35:57.159
JS to properly work on top of
Dino. So having Evergreen is something really

377
00:35:57.199 --> 00:36:02.679
simple and straightforward that just runs is
obviously a big, a big benefit in

378
00:36:02.760 --> 00:36:09.760
a in an upside Also, I
really like the approach of being really close

379
00:36:09.880 --> 00:36:13.519
to the web standards. And I
think, you know, the fact that

380
00:36:13.559 --> 00:36:20.320
it's called Evergreen kind of reflects this
because it's evergreen knowledge. I mean,

381
00:36:20.360 --> 00:36:24.440
you know, frameworks like we have
we we look at react as something that's

382
00:36:24.440 --> 00:36:29.039
been around forever and will be around
forever. I don't know if that's the

383
00:36:29.079 --> 00:36:32.960
case. What I do know is
that the web will be around forever.

384
00:36:34.599 --> 00:36:40.440
Uh And and what whenever you're building
on top of the underlying web APIs you

385
00:36:40.519 --> 00:36:47.719
know, they'll they will be they
will be supported now, they will be

386
00:36:47.760 --> 00:36:53.039
supported on forever and on every device, and and and you know, it

387
00:36:53.159 --> 00:36:59.800
just works, so obviously that's that's
a big benefit. And and I jokingly

388
00:37:00.079 --> 00:37:05.760
mentioned Alex Russell before, but he
constantly talks about how we are over engineering

389
00:37:07.280 --> 00:37:14.880
the solutions that we're coming up with
for the existing problems. And you know,

390
00:37:15.199 --> 00:37:20.800
if you can basically just get a
working solution from the underlying web platform

391
00:37:20.840 --> 00:37:24.960
itself, then you know, it's
a big win also for the user because

392
00:37:25.000 --> 00:37:31.559
it's usually a much more streamlined and
lighter weight type of a solution exactly.

393
00:37:32.440 --> 00:37:39.239
Yeah, And as I mentioned,
you know, learning and mentoring have been

394
00:37:39.280 --> 00:37:46.400
a big part of my career in
the various positions I've held, and I've

395
00:37:47.119 --> 00:37:52.280
really fallen in love with the web
all over again because having been in consultancies

396
00:37:52.440 --> 00:38:01.280
and enterprise the web, you don't
find the web the web There a lot,

397
00:38:01.639 --> 00:38:05.280
not to disparage anything that I have
used, but it gave me.

398
00:38:05.480 --> 00:38:08.719
It did give me opportunities to work
with Angler for a year a few years,

399
00:38:08.760 --> 00:38:13.800
then work with React for a few
years. And you know, I

400
00:38:14.199 --> 00:38:22.199
think I'm not tribalistic in the sense
of only use X, Y or Z.

401
00:38:22.159 --> 00:38:28.639
I think the various options are great, and so I just wanted to

402
00:38:28.719 --> 00:38:34.480
provide you know, a happy path
for like web components and web standards as

403
00:38:34.559 --> 00:38:39.960
you know, you know, you
if going through Greenwood's docks and whatnot like

404
00:38:40.039 --> 00:38:45.880
that, you'll probably see a lot
of inspiration from things like spell Kate,

405
00:38:45.039 --> 00:38:50.639
from things like next and so it's
just like, well, yeah, the

406
00:38:50.679 --> 00:38:55.400
web can have those two, but
we'll just substitute a React component model with

407
00:38:55.639 --> 00:39:01.719
a Web component model instead of webpath
to bundle all your assets. Will just

408
00:39:01.920 --> 00:39:07.280
use the Web standard API and just
make that work under the hood and let

409
00:39:07.320 --> 00:39:12.639
you run it on the server as
well as the browser. Right, So

410
00:39:15.280 --> 00:39:21.800
yeah, hopefully it Yeah, it
could just be part of the choice that's

411
00:39:21.840 --> 00:39:25.360
out there. And yeah, I
mean there wasn't a lot of this back

412
00:39:25.480 --> 00:39:30.199
when I started, and I think
it's just nice to see that all the

413
00:39:30.199 --> 00:39:40.760
innovation in developer experience and like application
like design and development that you know,

414
00:39:42.280 --> 00:39:46.840
really this something, this project is
really made possible by the fact that people

415
00:39:46.960 --> 00:39:52.239
keep going back to web standards and
asking for things like, hey, okay,

416
00:39:52.280 --> 00:39:55.559
we can import JavaScript, why not
CSS? Why not? Jason A

417
00:39:55.559 --> 00:40:01.280
couple of years later, you can
now have a standard based way to import

418
00:40:01.320 --> 00:40:06.880
CSS and Jason right, And there's
kind of a lot of what Webpack gave

419
00:40:06.960 --> 00:40:09.880
us that we didn't realize it was
and we kind of took it for granted

420
00:40:09.920 --> 00:40:15.400
and now it's just there for the
taking. And that's the dex big feature

421
00:40:15.440 --> 00:40:20.559
of trying to get in, which
I think is going to be really really

422
00:40:20.599 --> 00:40:25.920
great. And yeah, and it'll
work no JS browser for sell all that,

423
00:40:27.320 --> 00:40:30.639
all those places that you'd want it
to so and I didn't have to

424
00:40:30.679 --> 00:40:35.800
come up with anything. Yeah,
it sounds great. Sounds a little bit

425
00:40:35.880 --> 00:40:38.320
like there's a little bit of a
story here to how you came to this,

426
00:40:38.400 --> 00:40:42.000
and I like a story, So
why don't you tell us the story?

427
00:40:42.079 --> 00:40:45.719
Like where where were you and how
did you get to the point where

428
00:40:45.760 --> 00:40:49.320
you were? Not just hey,
this is a good idea to go to

429
00:40:49.320 --> 00:40:52.239
web standards. But I'm doing this
right, this is a thing that can

430
00:40:52.280 --> 00:41:00.920
happen. Yeah, there's a there
is a story about I guess at this

431
00:41:00.960 --> 00:41:08.119
point maybe three years or so ago
now, there was a conversation and conversation

432
00:41:08.360 --> 00:41:15.639
happening over on the MDN docs where
they wanted to I forget the specific nature,

433
00:41:15.719 --> 00:41:22.679
but they wanted to change like the
framework or the server rendering of the

434
00:41:22.800 --> 00:41:29.400
MDN docs itself. So they had
a discussion and people were participating and a

435
00:41:29.440 --> 00:41:35.280
lot of people suggested use web components. And one of the first things I

436
00:41:35.400 --> 00:41:39.280
said is we can't serve a render
web components. It was like, there

437
00:41:39.280 --> 00:41:43.280
it is, there it is.
And it just started with that. It

438
00:41:43.320 --> 00:41:47.639
actually started with just running it through
like the very first iterations of Greenwood,

439
00:41:47.679 --> 00:41:52.440
we were just running it through Puppeteer
and you know, getting the HTML out

440
00:41:52.519 --> 00:41:57.639
that way. Then as our sites
grew to server rendering and server lists,

441
00:41:57.800 --> 00:42:04.199
like, well, puppeteer is really
not gonna scale that well, I realized

442
00:42:04.239 --> 00:42:12.280
there wasn't like a li HTML SSR
version of just regular HTML element And so

443
00:42:12.400 --> 00:42:16.559
about two years about it. Yeah, two years ago I created WCC,

444
00:42:16.639 --> 00:42:22.000
which is just the lower level tool
of like the very familiar like render two

445
00:42:22.119 --> 00:42:29.119
string kind of API that you get
from a React SSR. At the homages

446
00:42:29.159 --> 00:42:32.920
are sprinkled everywhere, but in that
sense you can say, here's a path

447
00:42:34.000 --> 00:42:37.199
to a web component, give me
the HTML. And then that became the

448
00:42:37.840 --> 00:42:45.199
default foundation for Greenwood. And did
a talk about running web server rendering web

449
00:42:45.239 --> 00:42:57.880
components in I did a netlefy and
AWS and that just kind of really really

450
00:42:57.920 --> 00:43:02.199
made it click for me, like
what the projects like potential could be.

451
00:43:02.800 --> 00:43:07.559
And that's what I really started getting
heavy into the Web Composed Community Group and

452
00:43:07.800 --> 00:43:14.159
started contributing to our annual report to
the W three C about kind of what

453
00:43:14.199 --> 00:43:19.719
are the latest and greatest needs from
the community with web components, like what

454
00:43:19.800 --> 00:43:22.920
are some of the gaps that we
could fill up? And then led to

455
00:43:22.960 --> 00:43:30.480
Winter CG because of the SSR and
Serverleist story and trying to be very active

456
00:43:30.480 --> 00:43:35.239
in all three and just try to
absorb and learn as much as I can

457
00:43:35.440 --> 00:43:43.239
to make sure that you know,
Greenwood is able to provide that kind of

458
00:43:43.639 --> 00:43:50.480
web continuity no matter what platform you're
writing for, and be in tune to

459
00:43:51.039 --> 00:43:58.199
what could be better in that experience
and bring that back to those channels.

460
00:43:58.679 --> 00:44:01.480
Talk to implementers, you know,
I can use this for prototypes, like

461
00:44:01.519 --> 00:44:07.840
hey, here's a potential way to
do HTML modules A or B or C.

462
00:44:07.840 --> 00:44:14.360
Because that's how a lot of the
web standards advancements work. They really

463
00:44:14.400 --> 00:44:21.880
rely on the community to help identify
and prototype and kind of demonstrate the value

464
00:44:21.960 --> 00:44:24.920
of if we had this thing,
this is what we could get out of

465
00:44:24.960 --> 00:44:30.559
it. Like the next big one
that I'm exploring is actual like templating in

466
00:44:30.639 --> 00:44:34.639
the browser. So if you've ever
used like mustache or handlebars with the little

467
00:44:34.679 --> 00:44:39.360
double curlies, like there proposals for
that, so you might be able to

468
00:44:39.360 --> 00:44:44.840
get like that card component. You
might just be able to do double curlyes

469
00:44:45.519 --> 00:44:52.400
like image url and then you could
stamp out as many of those templates with

470
00:44:52.039 --> 00:44:58.920
like the you know, the attributes
that you're passing into your component just there

471
00:44:58.960 --> 00:45:02.719
for free in the browser. And
again a lot of that is based on

472
00:45:02.960 --> 00:45:07.480
what other projects have done, So
it's like, that's a good idea,

473
00:45:07.920 --> 00:45:12.159
could that be in the webspec you
want me to prototype it. Here's a

474
00:45:12.239 --> 00:45:16.280
couple examples someone else has that,
And then now you've got a conversation going

475
00:45:16.320 --> 00:45:22.039
and you got a couple browser vendors
in the in the room and just kind

476
00:45:22.039 --> 00:45:29.039
of goes from there. Nice.
One other question I have is are there

477
00:45:29.159 --> 00:45:34.960
other people who are using this like
to build I want to professional production application

478
00:45:35.079 --> 00:45:40.199
somewhere not At the moment, I've
just pretty much been working on it on

479
00:45:40.320 --> 00:45:47.840
the side and actually just trying to
build up the kind of like a better

480
00:45:50.119 --> 00:45:53.559
vision for the project. One thing
that I'm working on right now is the

481
00:45:54.800 --> 00:46:00.039
a new website with a new homepage
and some just because it's been a couple

482
00:46:00.079 --> 00:46:05.480
of years since we wrote that and
we've grown so much that I want to

483
00:46:05.519 --> 00:46:09.719
make sure that it accurately reflects what
the project's about, what the team is

484
00:46:09.760 --> 00:46:15.960
about. And I guess partially just
maybe being a little bit shy because there

485
00:46:16.079 --> 00:46:22.440
is so much great work from so
many influential engineers that you know, maybe

486
00:46:22.440 --> 00:46:29.119
there's a little sprinkle of imposter syndrome. But over the past year or so,

487
00:46:30.920 --> 00:46:35.440
being able to whip up an HTMX
demo just like that, and being

488
00:46:35.519 --> 00:46:40.239
able to get like lit an SSR
working has kind of shown that, Okay,

489
00:46:40.320 --> 00:46:46.719
the base foundation is sound, I
can at least start delivering on this

490
00:46:46.920 --> 00:46:52.360
promise of bringing your own if you
want, and it'll still work. And

491
00:46:52.519 --> 00:46:57.840
so that's kind of really the plan
for the rest of this year is to

492
00:46:59.360 --> 00:47:05.400
kind of finalize those kind of standards
and conventions about the project and at least

493
00:47:05.559 --> 00:47:09.960
kind of nailed down with that first
one dot ZHO kind of specification would look

494
00:47:10.039 --> 00:47:15.960
like, and kind of start rolling
it out and seeing what people people think.

495
00:47:16.079 --> 00:47:21.199
So hoping to get there, but
it was just kind of cautious because

496
00:47:21.239 --> 00:47:25.280
things move so fast and I didn't
kind of want to overextend myself just being

497
00:47:25.280 --> 00:47:31.199
in my own bubble. So and
also just I've got a couple more projects

498
00:47:31.239 --> 00:47:36.880
I want to build, so each
one I use as a way to test

499
00:47:36.880 --> 00:47:39.000
out something like say, dynamic routing. You know, it's like there's there's

500
00:47:39.039 --> 00:47:44.239
some table steaks that are fairly common. I just want to make sure we've

501
00:47:44.280 --> 00:47:49.519
got at least a good answer,
if not an implementation. So just yeah,

502
00:47:49.719 --> 00:47:53.840
just kind of touch and go,
but definitely open for anybody to try

503
00:47:53.880 --> 00:47:59.800
it. We've got Slack and discords
and get ub discussion, so it's definitely

504
00:47:59.840 --> 00:48:05.280
there to use. There's definitely examples, but it is pre wide at the

505
00:48:05.280 --> 00:48:12.519
moment. One more thing or two
more things that I noticed is the significant

506
00:48:12.559 --> 00:48:17.639
emphasis at least in the documents on
markdown. And the other thing is the

507
00:48:17.760 --> 00:48:24.280
use of Yamel as a kind of
a server side scripting language in a sense.

508
00:48:25.760 --> 00:48:30.280
The fact that you can put yamal
blocks that if I understood correctly,

509
00:48:30.320 --> 00:48:35.960
at the top of files to set
all sorts of values for inside the files.

510
00:48:36.480 --> 00:48:42.280
Or am I or did I misunderstand? H No, we do at

511
00:48:42.280 --> 00:48:47.800
the moment, we do have first
party support for markdown, so you could

512
00:48:47.800 --> 00:48:52.519
do like an index dot HTML.
You could do an index dot MD or

513
00:48:52.519 --> 00:49:01.159
it reminds me of yeah and yeah. The little YAML blocks that you see

514
00:49:01.199 --> 00:49:07.039
at the top of markdown files are
what they're referred to as front matter.

515
00:49:07.239 --> 00:49:15.840
So there are ways to like in
one of the examples, if I want

516
00:49:15.880 --> 00:49:21.480
to load a script only on this
very specific blog post, I have a

517
00:49:21.519 --> 00:49:24.400
way to say, hey, just
for this blog post out of the hundreds

518
00:49:24.440 --> 00:49:30.960
that this page template might be generating, I do want to throw in this

519
00:49:30.119 --> 00:49:37.360
like counter demo or a specific title, So just add as a little more

520
00:49:37.119 --> 00:49:45.039
customizability to the markdown. But yeah, we yeah, you can do a

521
00:49:45.119 --> 00:49:50.199
markdown file as well. So the
core I guess formats out of the box

522
00:49:50.239 --> 00:49:57.639
for pages are HTML, markdown in
JavaScript working on a PR now, because

523
00:49:57.639 --> 00:50:01.719
we do have a plug in for
type scripts, but it doesn't at support

524
00:50:01.960 --> 00:50:07.719
like pages as typescript, so that'll
be coming. So if you use the

525
00:50:07.760 --> 00:50:12.400
typescript plug in, you'll be able
to do pages slash index dotts as well,

526
00:50:12.559 --> 00:50:16.119
or anything you can write a plugin
for. That's one of our philosophies

527
00:50:16.119 --> 00:50:23.400
too, is we do have plugins, and those are basically ways to help

528
00:50:23.639 --> 00:50:29.440
differentiate kind of what is standard or
this is what isn't standard. Right,

529
00:50:29.559 --> 00:50:36.159
So one maybe questionable decision we made
as we made typescript a plug in instead

530
00:50:36.199 --> 00:50:42.800
of being in the core, just
like we made importing CSS and JSON a

531
00:50:42.840 --> 00:50:47.079
plug in instead the core. But
now that import attributes exist, this is

532
00:50:47.119 --> 00:50:53.039
one of the visions's plugins hand become
the core because they become web standards.

533
00:50:53.079 --> 00:51:00.280
And in the next release I'll be
able to deprecate two plugins entirely because the

534
00:51:00.320 --> 00:51:06.840
thing now is just a web standard. So maybe when types of comments become

535
00:51:07.079 --> 00:51:10.000
a standard, you will need a
Typescript plug in anymore. So we're still

536
00:51:10.039 --> 00:51:15.199
around. Then I'll keep that one. It seems like you shouldn't hold your

537
00:51:15.199 --> 00:51:21.320
breath for that one. Yeah,
probably not. But in the meantime you've

538
00:51:21.320 --> 00:51:24.400
got TSEC as a plug in,
so you can still take advantage of that.

539
00:51:25.159 --> 00:51:32.079
Cool. Now, in terms of
data access, any particular story there

540
00:51:32.199 --> 00:51:38.000
or is it basically just NPMI.
Yeah, for all your dependencies, you

541
00:51:38.000 --> 00:51:45.679
should be able to use whatever package
manager you prefer. For local development,

542
00:51:45.880 --> 00:51:52.679
we use import maps, so we
don't do any bundling development. We basically

543
00:51:52.800 --> 00:52:00.400
just look at the dependencies in your
package, Jason and basically just walk all

544
00:52:00.480 --> 00:52:07.599
their like Maine and entry point files
and use that to build up an important

545
00:52:07.599 --> 00:52:13.280
map that is then insert into the
HTML of whatever page you're developing on.

546
00:52:14.760 --> 00:52:17.840
And it's nice for like debugging because
if you get an error, it's like

547
00:52:17.960 --> 00:52:24.880
literally right to the file that you
want to go to and for And yeah,

548
00:52:24.880 --> 00:52:28.920
we don't have to like do any
processing of your node modules other than

549
00:52:29.039 --> 00:52:34.079
just read the package Jasons, and
we cash that result in memory while you're

550
00:52:34.119 --> 00:52:37.239
developing, so we don't have to
keep hitting node modules every time you reload

551
00:52:37.400 --> 00:52:43.800
the page. For production, we
will do run it through roll up just

552
00:52:43.840 --> 00:52:49.199
to do a little bundling. But
I would like to get a feature in

553
00:52:49.360 --> 00:52:54.760
where you could basically deploy unbundled if
you want to, So depending on because

554
00:52:55.519 --> 00:52:59.559
the ability to do that, you
know, is something that you probably want

555
00:52:59.599 --> 00:53:02.079
to benchmarket profile. If you've just
got a few script tags, yeah,

556
00:53:02.239 --> 00:53:07.400
just throw it out as is as
you have in your like source directory.

557
00:53:07.840 --> 00:53:13.519
You know you've got maybe lots of
pages, lots of components. Bundling might

558
00:53:13.599 --> 00:53:19.000
be a useful optimization. So,
like I said, we bundle for production

559
00:53:19.199 --> 00:53:22.239
by default, and unbundled local development, but we would like to give you

560
00:53:22.280 --> 00:53:29.239
the option to go unbundled for production
at some point. That's really interesting,

561
00:53:29.480 --> 00:53:31.280
but it's not what I asked.
No, but it's good that you explained

562
00:53:31.360 --> 00:53:37.519
that, because that's really useful information. But I was specifically asking about if

563
00:53:37.559 --> 00:53:44.480
you have any preferences or guidelines or
what not about accessing the data layer,

564
00:53:45.000 --> 00:53:47.599
like the database or something like that. Oh sure, yeah, yeah,

565
00:53:47.599 --> 00:53:54.960
sorry. So with our server rendered
pages or the API routes, you're basically

566
00:53:54.960 --> 00:54:02.920
in a server environment. So like
one of my projects for a little YouTube

567
00:54:04.559 --> 00:54:09.559
music streaming show I do myself,
we use a We use content full for

568
00:54:09.760 --> 00:54:17.599
like all the event posts, and
in that project, I statically build the

569
00:54:17.599 --> 00:54:23.599
homepage that has like the upcoming events
in it, and so in that's like

570
00:54:24.119 --> 00:54:30.559
index dot JS file. I could
just call content Ful using their s DK

571
00:54:30.239 --> 00:54:35.360
and grab those events and you know, build that all out as HTML.

572
00:54:35.440 --> 00:54:43.039
So yeah, you're entirely capable of
hitting a database, hitting a CMS,

573
00:54:43.599 --> 00:54:46.280
hitting the file system. So if
you want to build up a bunch of

574
00:54:46.320 --> 00:54:51.039
static content that way, or you
know, or if you want to do

575
00:54:51.079 --> 00:54:57.360
it at request time, that's totally
possible. And we do want to add

576
00:54:57.400 --> 00:55:00.320
the feature like you get next JS
where you have like the like say the

577
00:55:00.360 --> 00:55:07.880
bracket id dot JS that does like
the dynamic path routing. So that's a

578
00:55:07.920 --> 00:55:12.960
feature we'll be adding to our SSR
pages as well. So uh kind of

579
00:55:14.719 --> 00:55:20.320
yeah, So in tools like next
JS, it'll say you have a template

580
00:55:20.400 --> 00:55:23.960
for your blog posts. Right,
so you've got and you've got like one

581
00:55:24.000 --> 00:55:28.920
hundred blog posts, but you only
want one JS file and you basically just

582
00:55:29.440 --> 00:55:32.880
pass in like the title, the
headache, hero image and stuff like that.

583
00:55:34.639 --> 00:55:40.239
The way that next supports that is
in your pages directory instead of say

584
00:55:40.320 --> 00:55:47.320
like blog dot j s, you
would put uh, square brackets j So,

585
00:55:49.519 --> 00:55:52.960
because we have a plug in that
allows you to fetch external content and

586
00:55:53.079 --> 00:56:00.280
kind of feed that into Greenwood,
but that next paradigms a lot more I

587
00:56:00.320 --> 00:56:06.079
believe ergonomic because instead of having a
plug in with all your content fetching over

588
00:56:06.119 --> 00:56:10.239
here, you can just literally have
it in the page where you know you're

589
00:56:10.239 --> 00:56:15.639
also defining the template. So we
want to kind of refine refine that.

590
00:56:15.679 --> 00:56:20.559
But yeah, I've got some projects
that use content fual. I've got another

591
00:56:20.639 --> 00:56:29.320
project that just calling regular sequel to
a planet scale database, and I mean

592
00:56:29.360 --> 00:56:35.360
you could conceivably use Greenwood as just
a back end of APIs if you wanted

593
00:56:35.400 --> 00:56:42.039
to cool. All right, I'm
gonna push just toward picks. We've been

594
00:56:42.039 --> 00:56:45.440
talking for almost an hour, which
is always fun, and this has been

595
00:56:45.480 --> 00:56:50.519
really interesting. I guess to just
wrap it up. Two questions. One

596
00:56:50.599 --> 00:56:55.880
is if somebody wants to start using
Evergreen or Greenwood, is there kind of

597
00:56:55.920 --> 00:57:00.599
a getting started guide somewhere that people
can pick up. Yeah. Sure,

598
00:57:00.920 --> 00:57:06.280
if you go to Greenwood js dot
io, we've got a getting started a

599
00:57:06.320 --> 00:57:13.480
button right there on the homepage.
We have compatibility with stacklets, so from

600
00:57:13.920 --> 00:57:16.920
that page you can just jump right
into it on stackplets and run it.

601
00:57:17.599 --> 00:57:23.440
You can clone the companion repo that
we have, or you know if you

602
00:57:23.480 --> 00:57:28.079
want to jump right in the code
or follow along with the guide. So

603
00:57:28.159 --> 00:57:30.840
we've got a few different options to
get you up and running just to play

604
00:57:30.840 --> 00:57:36.199
with it. Cool. And then
the other question is if people want to

605
00:57:36.199 --> 00:57:38.679
connect with you on the internet,
where do they find you? Yeah?

606
00:57:38.760 --> 00:57:46.599
Sure, so I am on Twitter, slash x at the greenhouse io all

607
00:57:47.000 --> 00:57:53.840
one word, and my website is
also the greenhouse dot io. So mostly

608
00:57:54.719 --> 00:58:00.639
you'll see more activity on the Greenwood
JS website, but I do occasionally post

609
00:58:00.719 --> 00:58:05.639
and on Twitter. I'm usually just
shouting out about things I'm working on for

610
00:58:05.760 --> 00:58:08.000
Greenwood, little demos. So if
you want to see what the next release

611
00:58:08.039 --> 00:58:12.920
of Greenwood's gonna have, yeah,
my Twitter will probably be showing all those

612
00:58:12.960 --> 00:58:17.719
little code snippets sporadically. Awesome.
All right, well, let's go ahead

613
00:58:17.719 --> 00:58:22.079
and do our picks, Dan,
you want to start us out. Sure,

614
00:58:22.639 --> 00:58:27.760
I don't have that much in way
of picks today. I would want

615
00:58:27.800 --> 00:58:31.719
to shout out one thing, so, as I guess people obviously know,

616
00:58:32.119 --> 00:58:37.719
there's a war going on here.
It's not as high intensity as it was

617
00:58:37.760 --> 00:58:44.880
before, but it's still ongoing.
That's the war in Gaza between Israel and

618
00:58:44.960 --> 00:58:50.039
Amas, the Hamas government of Gaza. Was it the government of Gaza?

619
00:58:50.159 --> 00:59:00.440
But anyway, my pick is a
debate that was organized and moderated by Lex

620
00:59:00.519 --> 00:59:08.199
Friedman on his YouTube channel. On
the one side, he had Benny Morris,

621
00:59:08.239 --> 00:59:14.199
who's a well known Israeli historian who's
done a ton of research on the

622
00:59:14.280 --> 00:59:20.519
whole founding of Israel and the Zionist
movement and UH and the Palestinians and whatnot

623
00:59:21.519 --> 00:59:24.559
with him on his side of the
debate. You might say call it the

624
00:59:25.559 --> 00:59:34.239
Israeli side perspective, even though he's
not Israeli. Was the YouTuber or streamer

625
00:59:34.400 --> 00:59:38.639
Destiny. I don't know how familiar
you are with him, Chuck. He

626
00:59:38.679 --> 00:59:46.000
does a political commentary, so but
again he's not Israeli. He's American and

627
00:59:46.079 --> 00:59:50.960
he doesn't really have you know,
he's not Jewish or anything. But I

628
00:59:51.679 --> 00:59:57.599
yeah, I still did. I
guess they kind of presented Israeli narrative,

629
00:59:57.639 --> 01:00:00.840
although both of them are very much
opposed as I am, to the current

630
01:00:00.920 --> 01:00:08.360
Israeli government. On the other side
of the discussion were Finkelstein and Rabani,

631
01:00:08.760 --> 01:00:15.840
who presented the Palestinian narrative, and
they talked about anything and everything from a

632
01:00:15.000 --> 01:00:21.119
ninety forty eight Zionism, the founding
of Israel all the way to the current

633
01:00:21.159 --> 01:00:24.519
conflict. And there are different positions
and take on the situation. It got

634
01:00:24.519 --> 01:00:31.519
pretty heated it sometimes. One big
caveat is that it's a really long thing.

635
01:00:31.840 --> 01:00:36.880
They said, from looking I haven't
watched all of it. It's almost

636
01:00:36.920 --> 01:00:40.960
five hours long. It is divided
into chapters, so you know, if

637
01:00:40.960 --> 01:00:45.679
you're only interested in certain parts,
or want to watch it in parts,

638
01:00:45.800 --> 01:00:50.159
or you know, watch it until
you've had enough of it, then you

639
01:00:50.559 --> 01:00:54.920
definitely can. So I will share
the link to that. I haven't watched

640
01:00:55.000 --> 01:00:59.599
all the comments found. Yeah,
I haven't watched all of it, but

641
01:01:00.159 --> 01:01:04.239
you know, it's it's interesting.
It didn't really you know, nothing that

642
01:01:04.280 --> 01:01:07.480
I personally didn't know before, but
still still very interesting for those of you

643
01:01:07.639 --> 01:01:15.920
who want to really understand the opposing
views that are underlining this conflict that's been

644
01:01:15.960 --> 01:01:21.880
ongoing for well century more or less
in a lot of ways. So that

645
01:01:21.960 --> 01:01:27.559
would be my pick for today.
Awesome. I'm gonna jump in with my

646
01:01:27.639 --> 01:01:32.480
picks a couple of things. First
of all, I always do a board

647
01:01:32.480 --> 01:01:36.920
game pick, so a little light, lighter, fair, I guess than

648
01:01:36.960 --> 01:01:42.280
the Israel Palestine debate, though,
I think it's important for people to understand

649
01:01:42.440 --> 01:01:45.800
the perspectives that are involved. So
definitely go check that out, even if

650
01:01:45.800 --> 01:01:50.239
you have to kind of consume it
in pieces, because I've yeah, I've

651
01:01:50.239 --> 01:01:52.440
heard, like like I told Dan, I've heard some of the names involved,

652
01:01:52.920 --> 01:01:59.519
and you know, they seem to
know in depth certain aspects of this,

653
01:01:59.599 --> 01:02:02.199
and so you'll definitely come out of
an understanding better what the debates are,

654
01:02:02.280 --> 01:02:07.639
what the arguments are. So I'm
going to pick a game called The

655
01:02:07.679 --> 01:02:15.519
White Castle, and it is a
game. So the games always have like

656
01:02:15.559 --> 01:02:19.159
a theme, right, or a
setting. Some of them it's pretty thin,

657
01:02:19.280 --> 01:02:21.800
right, It's just you know,
we gave you just enough to move

658
01:02:21.840 --> 01:02:23.360
the pieces around and make it interesting
for you to try and win. And

659
01:02:23.400 --> 01:02:27.119
some of these are a little more
involved. This one's a little bit more

660
01:02:27.119 --> 01:02:29.960
involved. I am not in love
with some of the design on it.

661
01:02:29.960 --> 01:02:32.280
It was a little bit hard to
follow some of the time, and it

662
01:02:32.360 --> 01:02:37.320
was mostly because the artwork and things
just so like they had icons. You

663
01:02:37.360 --> 01:02:45.440
have three different kinds of what workers
I guess I mean your dice are your

664
01:02:45.440 --> 01:02:50.320
workers in this game. It's a
fairly complicated game board game. Giatewaights it

665
01:02:50.480 --> 01:02:52.920
at three point oh one, which
is probably one of the more complicated games

666
01:02:52.960 --> 01:02:57.599
I've ever picked. I've picked a
couple that are in the forest, but

667
01:02:58.679 --> 01:03:01.280
anyway, so just be aware this
one's a little bit more involved. And

668
01:03:01.320 --> 01:03:04.719
what you do is you roll the
dice, you place the dice as workers.

669
01:03:04.719 --> 01:03:07.440
You get the benefits, and some
of the benefits are that you get

670
01:03:07.519 --> 01:03:14.119
to place your farmer, your cortizan
or your samurai. And you know,

671
01:03:14.199 --> 01:03:17.519
as you place them again based on
dice rolls. You get more points,

672
01:03:17.639 --> 01:03:22.679
you get certain benefits things like that. So you can place the courtizan and

673
01:03:22.679 --> 01:03:25.679
then you move the courtizan up through
the house up to the top level,

674
01:03:25.679 --> 01:03:28.639
and when you get to the top
level, you get more points, you

675
01:03:28.679 --> 01:03:32.800
get a benefit. And I'm really
slimming this down because it would take me

676
01:03:32.800 --> 01:03:37.119
forever to explain to you all how
to play it. But it was really

677
01:03:37.159 --> 01:03:38.639
kind of fun and I kind of
wish I could play it again a couple

678
01:03:38.639 --> 01:03:42.519
more times. I played it at
salt Con a couple of weeks ago,

679
01:03:42.519 --> 01:03:46.760
which is the bordering conference that I
went to, And anyway, I really

680
01:03:46.880 --> 01:03:51.239
liked it. But yeah, the
icons, like the icon for the farmer

681
01:03:51.400 --> 01:03:53.679
it looks kind of like a bridge, which doesn't make any sense. And

682
01:03:53.679 --> 01:03:57.400
then the icon for the courtizan was
I don't even remember what it was.

683
01:03:57.760 --> 01:04:01.320
But the icons did not match up
with what you would want them to tell

684
01:04:01.360 --> 01:04:04.159
you right, so you always had
to be looking it up and oh,

685
01:04:04.280 --> 01:04:06.840
oh yeah, this means I get
to place this right. And so as

686
01:04:06.840 --> 01:04:12.199
you're getting ready to play your die, because you pull the dice off the

687
01:04:12.199 --> 01:04:16.039
bridge and then place them when you're
getting ready to do that kind of placement,

688
01:04:16.679 --> 01:04:19.719
then you're constantly trying to figure out, Okay, what is that and

689
01:04:19.760 --> 01:04:24.480
what is that? Oh yeah,
that's this and anyway. So that's my

690
01:04:24.639 --> 01:04:28.159
main complaint with it. But overall, like the gameplay and the flow was

691
01:04:28.599 --> 01:04:33.000
pretty good and definitely some interesting and
different mechanics to it. I mean,

692
01:04:33.039 --> 01:04:36.599
I've played enough board games to where
I don't see new mechanics all that often,

693
01:04:36.840 --> 01:04:41.559
but this was an interesting blend of
mechanics that you commonly see in some

694
01:04:41.599 --> 01:04:47.239
of these work replacement and dice games, so I'm gonna pick that. I'm

695
01:04:47.280 --> 01:04:53.400
also working on getting JavaScript Geniuses launched, so if you want a weekly call

696
01:04:53.440 --> 01:04:57.400
where we get on and we talk
about different things related to JavaScript, maybe

697
01:04:57.400 --> 01:05:00.639
have an expert like Owen or like
Kevin, who we have last week,

698
01:05:00.719 --> 01:05:03.199
or you know, people like that
come on. I'm kind of aiming for

699
01:05:03.320 --> 01:05:06.920
every other week having an expert,
and then the other every other week it'll

700
01:05:06.960 --> 01:05:12.840
be a discussion of either questions that
people pose beforehand, right so that I

701
01:05:12.840 --> 01:05:15.960
can prep but other people can prep
and say, Okay, here's the answer

702
01:05:15.960 --> 01:05:18.199
to your question, or where we
just sit down and talk right and we're

703
01:05:18.239 --> 01:05:21.039
just like, hey, you know
we're going to do a breakout room for

704
01:05:21.079 --> 01:05:24.239
five minutes, and then we're all
going to come back together and we're going

705
01:05:24.320 --> 01:05:27.440
to talk about, you know,
some stuff related to JavaScript and web development

706
01:05:27.440 --> 01:05:30.239
and then go back out into breakout
rooms or however we decide that it's going

707
01:05:30.320 --> 01:05:33.119
to work in the best way.
I kind of want to experiment with that

708
01:05:33.400 --> 01:05:38.639
piece because I want people to get
to know each other and kind of build

709
01:05:38.639 --> 01:05:42.000
your network. I hate the terminology
of building your network, but get to

710
01:05:42.039 --> 01:05:45.280
know other people who you can collaborate
with and have a relationship within the community.

711
01:05:47.280 --> 01:05:50.760
So anyway, if you're looking for
that, I should have the page

712
01:05:50.800 --> 01:05:55.840
up here within the next few days
as we record this, which is on

713
01:05:56.880 --> 01:06:00.920
March eighteenth, so yeah, March
twentieth. First, you know, keep

714
01:06:00.960 --> 01:06:03.960
an eye out. Go to JavaScript
Geniuses dot com and you can sign up,

715
01:06:04.400 --> 01:06:08.400
and uh, I'm definitely interested in
doing that. If you want to

716
01:06:08.440 --> 01:06:11.679
talk to me about it first,
you can do that too. Just email

717
01:06:11.719 --> 01:06:14.400
me Chuck at Topendevs dot com and
I'll get back to you on that.

718
01:06:15.039 --> 01:06:16.599
The other one is is I keep
having people ask me how to start a

719
01:06:16.639 --> 01:06:19.719
podcast, So I'm gonna put a
course up for that that'll be up at

720
01:06:19.719 --> 01:06:24.519
podcast playbook dot com again, similar
timeframe. I have to get some stuff

721
01:06:24.519 --> 01:06:27.440
together, you know, before you
can sign up, but we're we're definitely

722
01:06:27.440 --> 01:06:30.239
gonna be doing that. It's gonna
be a six week program since it's the

723
01:06:30.280 --> 01:06:34.679
pilot. I've seen programs like this
priced in the like two thousands. Since

724
01:06:34.679 --> 01:06:38.280
it's my pilot program, and I'm
gonna be you know, ironing out,

725
01:06:38.360 --> 01:06:42.880
ironing out some of the wrinkles.
I'm charging five hundred dollars ahead. So

726
01:06:43.119 --> 01:06:45.320
if you want to join in to
start your own podcast, then go to

727
01:06:45.400 --> 01:06:49.599
podcast playbook dot com and you can
sign up for five hundred bucks. And

728
01:06:49.679 --> 01:06:55.280
that's that's what I got. Owen, what are your parts? Yeah,

729
01:06:55.400 --> 01:07:01.840
I got two. One coming out
of somewhat related to our conversation today is

730
01:07:02.400 --> 01:07:09.559
I actually just finished Hypermedia Systems,
the book that was co authored by Carson

731
01:07:09.599 --> 01:07:15.119
Gross, the creator of HTMX,
And yeah, it was a nice kind

732
01:07:15.159 --> 01:07:21.639
of refresher on some of those early
I guess motivations of things like rest at

733
01:07:21.719 --> 01:07:28.079
least how it was initially conceived by
Roy Fielding and kind of maybe how it's

734
01:07:28.360 --> 01:07:35.280
morphed to be more synonymous with JSON
APIs over time. So yeah, it

735
01:07:35.320 --> 01:07:39.800
was really good. Lots of good
practical examples of HTMX as well, but

736
01:07:39.880 --> 01:07:45.360
I was a little more invested in
the history lesson aspects of it. And

737
01:07:45.400 --> 01:07:49.480
the cover is really really cool,
so you can actually just get the cover

738
01:07:49.800 --> 01:07:55.920
as a poster. It's that cool. And so yeah, give that a

739
01:07:55.960 --> 01:08:00.320
shot if you're interested in HTMX or
the history of HTML a little bit.

740
01:08:01.360 --> 01:08:09.159
And yeah, my second pick is
a music pick. So I've been really

741
01:08:09.400 --> 01:08:15.599
loving the new album by The Smile, which is part of from the couple

742
01:08:15.719 --> 01:08:19.119
members from Radio Ahead. The new
album is called Wall of Eyes. Really

743
01:08:19.199 --> 01:08:24.680
nice album, some really great production
on that. So if you like Radio

744
01:08:24.680 --> 01:08:29.920
Ahead or Tom York and you haven't
heard of that album, by all means,

745
01:08:29.960 --> 01:08:33.479
give it a try. Different producer
than they normally work with, just

746
01:08:33.479 --> 01:08:39.039
because of time and conflicts, but
have no fear. It sounds great as

747
01:08:39.079 --> 01:08:43.520
you would expect. And this is
a follow up to their first album from

748
01:08:43.560 --> 01:08:47.479
a couple of years ago, and
it's really great to see their their progress

749
01:08:47.520 --> 01:08:54.039
working as a as a trio.
So yeah, those that's what I got

750
01:08:54.800 --> 01:08:59.520
for the show. Awesome. I
just posted our interview with Carson Gross from

751
01:09:00.319 --> 01:09:04.039
Yeah of last year, So yeah, if you're if you're into HTMX,

752
01:09:04.159 --> 01:09:06.279
you want to know a little bit
more about it, Definitely check that one

753
01:09:06.279 --> 01:09:10.960
out. I think we got him
all twice. We did. The other

754
01:09:11.000 --> 01:09:15.039
one was quite a long time ago. Mm hmm. We got two point

755
01:09:15.119 --> 01:09:18.800
zero coming out soon, so maybe
back. Yeah, that was that was

756
01:09:18.840 --> 01:09:24.960
the main topic of our last conversation
with the upcoming two point zero version of

757
01:09:25.079 --> 01:09:28.760
HTMX. Yeah, we also had
him in December of twenty twenty one,

758
01:09:29.239 --> 01:09:35.239
and it was when he was switching
HTMX over from inter Cooler. M I'll

759
01:09:35.239 --> 01:09:39.920
post that all real quick too.
Yeah. All right, well, I

760
01:09:39.960 --> 01:09:45.319
think I think that's everything. This
was a lot of fun, very interesting

761
01:09:45.319 --> 01:09:48.720
stuff. We'll wrap up until next
time, folks. Max out

