WEBVTT

1
00:00:04.559 --> 00:00:08.919
Hey, folks, welcome to another
episode of the Ruby Rogues podcast. This

2
00:00:09.080 --> 00:00:13.759
week, on your panel, we've
got a yush nuatya and I'm Charles max

3
00:00:13.800 --> 00:00:19.160
Wood from Top End Devs. So
a USh, you're kind of our expert

4
00:00:19.239 --> 00:00:25.399
guest or expert host or however you
want to swing that cat. And yeah,

5
00:00:25.440 --> 00:00:28.000
we're talking about Bridgetown. Now.
We lined this up before you were

6
00:00:28.039 --> 00:00:34.719
a host on the show because we
were talking about the Codex, the Rails

7
00:00:34.719 --> 00:00:39.200
and hot Wire Codex and then you
know you, it came up that you

8
00:00:39.280 --> 00:00:46.079
were on the Bridgetown courteen and I
was like, well, cool, because

9
00:00:46.079 --> 00:00:50.479
I've been wanting to talk about it. So yeah, it's good to be

10
00:00:50.520 --> 00:00:53.679
back. It's good to be on
the other side of the metaphorical table,

11
00:00:54.280 --> 00:00:59.439
all right, as a guest rather
than a host. But yeah, let's

12
00:00:59.520 --> 00:01:03.120
let's bridge down. So yeah,
yeah, might you want to start,

13
00:01:04.040 --> 00:01:10.680
Well, we have a grand tradition
on this show starting with a definition,

14
00:01:10.920 --> 00:01:17.159
So why don't you tell us what
Bridgetown is? Right, So, Bridgetown

15
00:01:17.319 --> 00:01:25.280
is what we call a progressive site
generator. So hi VALENTINEO, Hey there,

16
00:01:26.760 --> 00:01:30.640
yeah, we just got started.
Yeah awesome. So let me read

17
00:01:30.680 --> 00:01:38.599
out the tagline from the website.
We call it a next generation progressive site

18
00:01:38.640 --> 00:01:42.680
generator and full stack framework powered by
Ruby, which is a mouthful to what

19
00:01:42.799 --> 00:01:49.120
the hell does that actually mean.
Well, it's kind of like a successor

20
00:01:49.200 --> 00:01:53.480
to Jackal. It was foked from
Jackal four point two, but it's kind

21
00:01:53.480 --> 00:01:57.799
of turned into something that's a lot
more than just that. So it's still

22
00:01:57.840 --> 00:02:04.079
like primarily a static side generator,
like I would say, all the features

23
00:02:04.079 --> 00:02:07.439
and everything are geared towards like I
would say, ninety percent of it is

24
00:02:07.480 --> 00:02:13.719
geared towards just building static sites,
And we refactored quite a lot from Jackal.

25
00:02:13.879 --> 00:02:20.599
So like obviously the whole world a
static side generation kind of evolved quite

26
00:02:20.599 --> 00:02:23.919
a bit from when Jackal first arrived
on the scene, and a lot of

27
00:02:23.000 --> 00:02:30.639
quirks under the hood, where you
know, things like a collection of posts

28
00:02:30.680 --> 00:02:34.879
in Jackal is kind of like a
custom collection but not really, it's slightly

29
00:02:34.879 --> 00:02:40.319
different in different ways. And then
yeah, there's like a whole it was

30
00:02:40.400 --> 00:02:47.840
just under the hood very messy in
certain ways. So we kind of refactored

31
00:02:47.879 --> 00:02:55.680
the entire generation engine. So the
way like the content is either red off

32
00:02:55.719 --> 00:03:01.560
disc or like acquired from some other
source and and built into this site,

33
00:03:01.599 --> 00:03:07.280
and then the site has written the
actual website with HDL pages written to disk

34
00:03:07.479 --> 00:03:12.199
for you to do as you want. So I say, we rewrote it.

35
00:03:12.319 --> 00:03:15.879
Jared that Chaffie started the project.
He rewrote this whole thing. And

36
00:03:15.960 --> 00:03:21.680
then a common use case is also
like, you know, you have like

37
00:03:21.800 --> 00:03:28.639
n statics item and suddenly need one
tiny bit of dynamic functionality. Like let's

38
00:03:28.639 --> 00:03:31.719
say you have a marketing website and
you want to put a contact us form

39
00:03:31.800 --> 00:03:36.879
on it, and you need some
weight for that form to like an endpoint

40
00:03:36.879 --> 00:03:39.919
for that to submit to which sends
an email to yourself or something like that.

41
00:03:40.599 --> 00:03:46.680
So we used a framework called Roda, which is like, uh,

42
00:03:46.520 --> 00:03:53.159
it's kind of like a toolkit to
build a framework rather than a fully formed

43
00:03:53.159 --> 00:03:58.080
framework in its own right, and
using we kind of plugged that into bridge

44
00:03:58.080 --> 00:04:02.599
down and now you have the ability
to write a few dynamic endpoints in addition

45
00:04:02.639 --> 00:04:08.960
to your static site. So we
kind of cater to this whole use case

46
00:04:08.960 --> 00:04:12.599
where you kind of most of your
content is static, but you need a

47
00:04:12.639 --> 00:04:16.399
little bit of dynamic functionality, and
we'll provide that to you in the context

48
00:04:16.399 --> 00:04:20.079
of like a Ruby full stack framework. You don't need to go reaching for

49
00:04:21.040 --> 00:04:26.360
lambda functions and all that stuff,
because that kind of goes against our philosophy

50
00:04:26.399 --> 00:04:31.040
of like everything should live in the
single repot and everything should be runnable locally.

51
00:04:33.040 --> 00:04:38.920
Yeah, we've had Jeremy Evans on
to talk about RHODA, and I

52
00:04:38.959 --> 00:04:42.600
mean I remember back in the day
when Jacko came out. I mean the

53
00:04:42.720 --> 00:04:46.120
use case that everybody used was a
blog, right, and so you were

54
00:04:46.160 --> 00:04:50.519
talking about how you have this collection
of posts and it kind of, you

55
00:04:50.519 --> 00:04:55.920
know, does magical things for your
posts, and yeah, I mean that

56
00:04:56.000 --> 00:04:58.399
was very much how it was used. That's how I mean, that's what

57
00:04:58.480 --> 00:05:00.000
Tom wrote it for, was so
that he could run his blog on it,

58
00:05:00.639 --> 00:05:08.279
and so yeah, it made sense. But yeah, the I guess

59
00:05:08.319 --> 00:05:13.279
those limitations are the things that kind
of kept me from like fully adopting it.

60
00:05:13.439 --> 00:05:15.439
So you know, you look at
something like top end devs, right,

61
00:05:17.319 --> 00:05:21.680
because I've used static site generators to
run top end or dev chat,

62
00:05:21.759 --> 00:05:26.839
dot tv top end devs right,
and then I've moved it back to a

63
00:05:26.920 --> 00:05:30.560
rails app I think three times now, and so you're right, we're now

64
00:05:30.600 --> 00:05:34.360
on the third time. And the
reason is is because I have other dynamic

65
00:05:34.399 --> 00:05:41.639
stuff I want to pull into it, And the other end of it is

66
00:05:41.639 --> 00:05:45.399
is if I have a rails app
and I want a blog or something like

67
00:05:45.439 --> 00:05:49.959
that, the bridgetown does well,
then you know that's the hiccup. On

68
00:05:50.000 --> 00:05:54.720
the other end is Okay, how
do I integrate the two so that every

69
00:05:54.720 --> 00:05:57.480
time I change, say the layout
on one, I don't have to change

70
00:05:57.519 --> 00:06:00.839
it on the other because I may
want it to live under top endevs dot

71
00:06:00.839 --> 00:06:05.560
com slash blog as opposed to having
blogged on top endevs dot com, right,

72
00:06:05.600 --> 00:06:09.240
so I can get the SEO and
the other benefits of having a part

73
00:06:09.240 --> 00:06:12.759
of the website. So those are
kinds of the things that I've been looking

74
00:06:12.800 --> 00:06:15.879
at with it. But I have
to say a couple of the things that

75
00:06:15.920 --> 00:06:20.800
I do really like about it are
that it seems to have a lot more

76
00:06:20.839 --> 00:06:27.199
options and it seems a lot more
friendly to front end manipulation. Right,

77
00:06:27.240 --> 00:06:30.120
so if I want to bring in
a hot wire and wire things in,

78
00:06:30.240 --> 00:06:36.079
that's not terribly hard. Jeckle.
You kind of had to play with it

79
00:06:36.120 --> 00:06:39.759
a little bit, I guess,
to make it really nicely do that.

80
00:06:39.839 --> 00:06:44.439
And then yeah, I didn't realize
that you had kind of the dynamic aspect

81
00:06:44.480 --> 00:06:48.800
of it with Rhoda. So yeah, I mean, let's say that I

82
00:06:48.839 --> 00:06:53.680
want to give this another look,
right, because you've kind of gotten my

83
00:06:53.759 --> 00:06:59.959
interest here, Like where do I
start and how do I make it do

84
00:07:00.079 --> 00:07:02.959
what I want without having it be
a giant pain in my rear end because

85
00:07:02.959 --> 00:07:08.959
I maintain two systems. Yeah,
of course, so a lot of that,

86
00:07:09.160 --> 00:07:12.399
like the dynamics stuff is still like
early days, so there will be

87
00:07:12.519 --> 00:07:15.279
like teething trouble. It's not going
to be as soon with Asraels. It's

88
00:07:15.319 --> 00:07:18.000
just such a mature framework. But
honestly, the best way to get started

89
00:07:18.120 --> 00:07:25.279
just gem install Bridge Down. Bridge
Down knew my site. Honestly, the

90
00:07:25.319 --> 00:07:28.560
best way to do it is just
get your hands dead and you'll see a

91
00:07:28.600 --> 00:07:32.879
directory structure out there that'll instantly look
familiar for anyone from the Jackal world.

92
00:07:32.879 --> 00:07:38.480
That'll be like end points for service
side stuff and all that kind of created

93
00:07:38.560 --> 00:07:42.439
for you. And the docks are
really good. Like one of the things

94
00:07:42.480 --> 00:07:46.040
that attracted me to the Bridge Down
project early on before us on the Court

95
00:07:46.079 --> 00:07:49.439
team was that the docks were so
good. And I think I first stumbled

96
00:07:49.519 --> 00:07:53.279
upon the project was like literally two
or three months old, and I didn't

97
00:07:53.319 --> 00:07:56.000
realize how new. It was looking
at the docks, I thought, this

98
00:07:56.120 --> 00:08:01.879
is like years old. So we're
very proud of the quality of the documentation.

99
00:08:01.040 --> 00:08:05.279
So yeah, just create a site. Got a bridge down arb dot

100
00:08:05.279 --> 00:08:09.720
com. Check out our docks.
You should find whatever you need out there.

101
00:08:11.160 --> 00:08:13.720
And it just to take the point
that you said earlier on about like

102
00:08:13.839 --> 00:08:16.720
a bridge on being a bit more
friendly towards the front end. So that

103
00:08:16.920 --> 00:08:20.079
was actually think when the framework was
first launched, I think the title or

104
00:08:20.120 --> 00:08:24.879
something about it being like a webpack
aware static side generator or something, and

105
00:08:26.279 --> 00:08:30.959
yes, that was always a core
thing for us, was like we needed

106
00:08:31.000 --> 00:08:33.679
something on the front end that was
built in that because no one wants to

107
00:08:33.679 --> 00:08:37.519
wrangle Webpack and yes build. I
mean, I blame half my gray hairs

108
00:08:37.559 --> 00:08:43.320
to just having to use Webpack and
Webpacker. But we've got a pretty good

109
00:08:43.320 --> 00:08:46.879
set up right out of the box. So if you need to install,

110
00:08:46.000 --> 00:08:50.360
like, we've got a good es
BIL set up. Now we're deprecating Webpack,

111
00:08:50.879 --> 00:08:54.440
but if you need to install anything
on the front end, we've got

112
00:08:54.480 --> 00:08:58.440
like NPM and es build and all
that just already set up for you,

113
00:08:58.039 --> 00:09:05.000
so you don't have to deal with
any of that, right Valentino. Have

114
00:09:05.039 --> 00:09:11.200
you used Bridgetown, you know,
I haven't. The last time I did

115
00:09:11.320 --> 00:09:18.000
a static site with within Ruby it
was it was with Middleman. Yeah,

116
00:09:18.519 --> 00:09:24.120
the Middleman, Jim. I'm curious
because like it has a lot of similarities

117
00:09:24.120 --> 00:09:31.039
to Middleman, and I'm curious like
maybe if you, like, if you're

118
00:09:31.080 --> 00:09:35.200
aware of Middleman, maybe how like
you can dissuade some of the older like

119
00:09:35.480 --> 00:09:39.039
Ruby heads like us, right,
like, hey, what does it bring

120
00:09:39.080 --> 00:09:46.080
that Middletown you know or Middleman like
kind of uh swears straight away, and

121
00:09:46.120 --> 00:09:50.559
maybe some of the highlights from it. So I'm aware of middle Van,

122
00:09:50.639 --> 00:09:54.960
I'm aware of its existence. I've
probably browsed its website once a couple of

123
00:09:54.039 --> 00:09:58.919
years ago. But I couldn't give
you a good critique because I just I

124
00:09:58.000 --> 00:10:01.960
just don't know middle Line well enough. So I can I can talk to

125
00:10:01.000 --> 00:10:05.480
the strength of Bridgetown, but I
couldn't compare it to Middleman because I've never

126
00:10:05.600 --> 00:10:13.519
used it, gotcha, Yeah,
I mean the deployment's aspect of it.

127
00:10:13.519 --> 00:10:16.759
It's very much like a build local, you know, and then deploy static,

128
00:10:18.799 --> 00:10:24.879
whereas it seems Bridgetown is much more
built up around uh, you know,

129
00:10:26.000 --> 00:10:31.159
having that dynamic key aspect of it, like it'll augment it, right,

130
00:10:31.720 --> 00:10:33.799
Yeah, that's true. But I
mean if you wanted to use it

131
00:10:33.840 --> 00:10:35.679
purely as a static side generator,
you still can. In fact, all

132
00:10:35.759 --> 00:10:41.480
my bridge on websites are purely static. I don't think I've got dynamic functionality

133
00:10:41.480 --> 00:10:45.840
on any of them because I haven't
needed it. So with bridgetown, we

134
00:10:45.960 --> 00:10:50.240
kind of we we like to promote
render dot com as a preferred host just

135
00:10:50.240 --> 00:10:54.559
because all I already like it.
And yeah, it's once you set it

136
00:10:54.639 --> 00:10:58.759
up, what Rendell will just will
trigger a build every time you do it

137
00:10:58.759 --> 00:11:05.039
get which is pretty normal, and
then it'll it'll just run a bridge down

138
00:11:05.120 --> 00:11:09.720
build a bridge down bridge on deployed
rather, which will generate the side and

139
00:11:09.720 --> 00:11:13.000
write it to disc and then it'll
uh each take your output folder and deploy

140
00:11:13.039 --> 00:11:16.519
that to a CD. And so
you don't really need to do a whole

141
00:11:16.559 --> 00:11:24.000
lot. It's uh And we have
something we have something a feature of bridge

142
00:11:24.039 --> 00:11:28.399
down called bundled configuration. So that's
kind of like workflows or recipes or whatever

143
00:11:28.519 --> 00:11:35.600
that you can run to configure certain
things. And what we have one for

144
00:11:35.679 --> 00:11:39.279
render our concert. When you run
that, it will create a render dot

145
00:11:39.399 --> 00:11:45.559
yamal file which is like infrastructure as
code. So then literally all you need

146
00:11:45.600 --> 00:11:50.000
to do is link your repositoraty render
and point it to that file and that's

147
00:11:50.039 --> 00:11:54.200
it and you have a website up, up and running. Gotcha. Yeah,

148
00:11:54.240 --> 00:11:58.000
you know this. This looks a
lot more featurage than middle man does.

149
00:11:58.240 --> 00:12:01.320
Uh. You know. Again,
like we keep saying, like focusing

150
00:12:01.360 --> 00:12:03.720
on the front end aspects of it, seems like you can build like maybe

151
00:12:05.039 --> 00:12:09.200
some JavaScript apps potentially. Yeah,
you can. Nothing stopping you from doing

152
00:12:09.279 --> 00:12:13.360
any of that. Yeah. I
mean, Ruby is always going to be

153
00:12:13.360 --> 00:12:18.240
front and center. So we have
features like you can write components which are

154
00:12:18.279 --> 00:12:22.320
just Ruby classes which is built right, and we have like a concert of

155
00:12:22.320 --> 00:12:26.519
Bridgetown components so you don't need to
pull in like a third party thing for

156
00:12:26.559 --> 00:12:31.279
that is just there. So Ruby
will always be front and center, and

157
00:12:31.879 --> 00:12:37.320
it's quite easy to also do quite
advanced things like you can hook into the

158
00:12:37.320 --> 00:12:41.559
build process and start doing like dynamics
stuff at build time. So one of

159
00:12:41.600 --> 00:12:46.720
my websites, which is f slash
forty two dot com, which is like

160
00:12:46.960 --> 00:12:48.840
a photo gallery, so if you
want to look at it, its f

161
00:12:50.639 --> 00:12:54.679
s l a s H four two
dot com it's a photo gallery at like

162
00:12:54.679 --> 00:13:00.360
a lot of my photography on there, And all I need to do is

163
00:13:00.399 --> 00:13:05.399
really copy paste photo photo files into
the repository and run the build. And

164
00:13:05.440 --> 00:13:11.840
then I have Ruby code that reads
the photos off disc, extracts exit information

165
00:13:11.960 --> 00:13:16.240
things like like shutter speed and all
all that stuff, extracts it from the

166
00:13:16.279 --> 00:13:22.360
file, writes it to a Yamel
file, and dynamically adds HTML pages to

167
00:13:22.399 --> 00:13:26.440
the build, and then when the
build concludes, writes those HTML pages out.

168
00:13:26.519 --> 00:13:31.360
So for each like album or each
photograph, I'm not creating those pages

169
00:13:31.759 --> 00:13:35.639
manually. That's just all done by
Ruby cuts. All I need to do

170
00:13:35.679 --> 00:13:39.120
is copy the photos in place and
run and run the build. So like

171
00:13:39.200 --> 00:13:46.440
that's pretty like advanced advancedge Ruby code
that I've just hooked into the build process.

172
00:13:46.240 --> 00:13:52.559
So I'm imagining something similar with like
a JSON file or something. If

173
00:13:52.600 --> 00:13:56.919
you just have a you know,
kind of a how do I put it?

174
00:13:56.960 --> 00:14:00.759
A static or an you know,
it doesn't change very often, so

175
00:14:00.919 --> 00:14:07.200
I'm comfortable committing the data to the
repo. You can do the same kind

176
00:14:07.240 --> 00:14:09.039
of thing, right, It's the
same idea as the markdown with Jack,

177
00:14:09.480 --> 00:14:13.200
Right, yeah, exactly. I
have another blog post, I just commit

178
00:14:13.279 --> 00:14:20.399
more data, yeah, exactly.
The difference here is is that I'm just

179
00:14:20.440 --> 00:14:24.639
copying photo files into place, and
then there's Ruby good that's reading and doing

180
00:14:24.679 --> 00:14:30.639
some stuff with us photofiles. Because
yeah, there's no there's obviously nothing built

181
00:14:30.639 --> 00:14:35.759
into handle JPEGs, right, well, handle JPEGs in the way that I

182
00:14:35.799 --> 00:14:39.320
want them handled. You can obviously
just paste them in and reference them in

183
00:14:39.399 --> 00:14:46.600
your HTML. Right, So you've
got some kind of renderer or data extractor

184
00:14:46.879 --> 00:14:52.200
that you've yeah, yeah, data
data extractor basically. And then and then

185
00:14:52.240 --> 00:14:56.399
a dynamic way to add pages to
the to the build, because I don't

186
00:14:56.399 --> 00:15:03.399
want to manually create a new marked
a HTML file for each and every photograph.

187
00:15:03.519 --> 00:15:07.039
I've just got some code in there
that generates those pages for me at

188
00:15:07.080 --> 00:15:11.320
built time and adds them into the
I think it's a site top pages collection,

189
00:15:11.519 --> 00:15:15.960
and then when the site is output, it'll just render at all those

190
00:15:16.000 --> 00:15:20.960
pages. That's cool, It's really
cool. Yeah, Because like we unified

191
00:15:20.159 --> 00:15:26.240
the concept of like collections from like
I said earlier, Jackal kind of treated

192
00:15:26.320 --> 00:15:31.200
different types of collections slightly differently,
like posts is treated slightly differently to a

193
00:15:31.279 --> 00:15:33.639
custom collection and stuff. We kind
of unified all that, and now we

194
00:15:33.720 --> 00:15:37.759
have built in collections like pages and
data and posts. Those are built in.

195
00:15:39.200 --> 00:15:41.279
You get them out of the box
for free, but they behave in

196
00:15:41.360 --> 00:15:46.799
the exact same way as a custom
collection would behave. So that just makes

197
00:15:46.000 --> 00:15:50.519
doing advanced things like this, like
when you're manipulating the build, it just

198
00:15:50.600 --> 00:15:54.759
makes it a whole lot easier.
That makes sense. So in essence,

199
00:15:56.480 --> 00:16:02.840
you know, kind of the how
do I put it the the blog you

200
00:16:02.879 --> 00:16:06.559
know that we typically see for for
sites like this, things like this,

201
00:16:06.720 --> 00:16:12.080
right that it just does that natively
naturally. How far can you push it?

202
00:16:14.679 --> 00:16:18.840
So what I'm imagining is okay,
so I have a different kind of

203
00:16:21.320 --> 00:16:25.919
entity. I mean you've talked about
you know, images, So I can

204
00:16:25.919 --> 00:16:30.840
write my own plug in for it
that does the image thing. Can I

205
00:16:30.000 --> 00:16:40.720
build like like to take payments on
it or to restrict access to content you

206
00:16:40.759 --> 00:16:42.960
know, to members or right,
because I'm imagining, okay, how far

207
00:16:44.000 --> 00:16:48.200
do I push this? That might
be easier than writing a fully blown rails

208
00:16:48.240 --> 00:16:51.120
app. Yeah, you can push
it as far as you want if you

209
00:16:51.120 --> 00:16:52.639
want to do payments and start out
with the rude op thing is. Therefore,

210
00:16:52.679 --> 00:16:59.519
that's where you you can write all
that. I think a couple of

211
00:16:59.559 --> 00:17:03.000
years ago we'd run like a virtual
Bridgetown conf I think at the end of

212
00:17:03.480 --> 00:17:08.119
two and I'd given a demo as
part of my talk, and I think

213
00:17:08.200 --> 00:17:15.839
the demo was a simple photo gallery
where you can buy photos. I didn't

214
00:17:15.839 --> 00:17:18.599
actually integrated stripe or anything. I
just kind of fake the payment stuff.

215
00:17:18.920 --> 00:17:22.839
But the demo is basically that that
you have the static thing with which lets

216
00:17:22.880 --> 00:17:26.920
you view the photo gallery, and
then you have this little dynamic buy button

217
00:17:26.960 --> 00:17:29.920
where you can buy the photo and
obviously just fake the back end stuff,

218
00:17:29.920 --> 00:17:33.720
but like I demonstrated how it can
be done. So yeah, absolutely,

219
00:17:34.240 --> 00:17:38.400
with regards to payall in content,
of course you can do that as well.

220
00:17:38.480 --> 00:17:44.799
So actually Jared, who runs Who's
the Start of the bridge Down project,

221
00:17:44.920 --> 00:17:52.519
still runs it to a large degree, just released a CSS course that

222
00:17:53.920 --> 00:18:00.039
is fully built on Bridgetown. If
I could actually find the link to that

223
00:18:00.039 --> 00:18:04.279
that would have that would be quite
useful. But yeah, essentially it's all

224
00:18:04.519 --> 00:18:11.759
just a Bridgetown app and he's it's
a subscription service, so he's built like

225
00:18:11.799 --> 00:18:15.759
payments and he's honestly pay all his
articles because it's a subscription cost. And

226
00:18:15.799 --> 00:18:21.480
that's all all done using bridge down. So yeah, you can push it

227
00:18:21.519 --> 00:18:23.920
as far as you want. It
just depends on how far do you want

228
00:18:23.960 --> 00:18:29.039
to push it until you start wishing
you had rails. But you can still

229
00:18:30.799 --> 00:18:36.359
you can still plug rails in because
Roda is rack r plant, so you

230
00:18:36.400 --> 00:18:40.000
can still you can plug and you
can mount rails as an app within it.

231
00:18:40.519 --> 00:18:44.680
Yeah. I got a bunch of
questions here, Yeah, because I

232
00:18:44.720 --> 00:18:48.519
mean I think of like typically like
we have like some core tenants. More

233
00:18:48.559 --> 00:18:52.359
thinking about like static sites, right, like where we have like you know,

234
00:18:52.519 --> 00:18:59.319
SEO is probably like the number one
like thing that people start thinking about

235
00:18:59.359 --> 00:19:03.240
when they just want to get like
some static marketing page up right. And

236
00:19:06.400 --> 00:19:08.240
I guess the next one would be
like, you know, the caching layer,

237
00:19:08.440 --> 00:19:14.079
Like what what is provided like to
just like make sure that all of

238
00:19:14.079 --> 00:19:18.839
the files are like g zip compressed
or whatever and optimized for like the server

239
00:19:18.960 --> 00:19:22.160
layer to be able to you know, other like plugins and stuff for this

240
00:19:22.319 --> 00:19:26.200
kind of stuff is just come out
of the box, like you know what

241
00:19:26.519 --> 00:19:32.599
what what? I guess optimizations are
built in that like gives you that peace

242
00:19:32.640 --> 00:19:33.839
of mind like oh, yeah,
I should use bridge down and I don't

243
00:19:33.839 --> 00:19:37.279
have to worry about all this stuff. Yeah, absolutely, So actually we

244
00:19:37.519 --> 00:19:42.039
don't build any of that stuff into
the framework because like again ninety it is

245
00:19:42.079 --> 00:19:47.359
aimed at static files and the way
to host them is just dump them on

246
00:19:47.400 --> 00:19:51.640
a CD and if you have static
HTML files on a CD and a lot

247
00:19:51.680 --> 00:19:57.640
of any decent CD and automatically gs
up your files and cash them properly before

248
00:19:57.680 --> 00:20:00.799
sending them down anyway. And then
like with render dot com, which is

249
00:20:00.839 --> 00:20:07.079
my preferred host, you can set
cashing headers and stuff manually using the YAML

250
00:20:07.240 --> 00:20:12.519
infrastructure as code pingy. So yeah, we don't handle that in the framework.

251
00:20:12.559 --> 00:20:15.799
The dynamic stuff again is very much
kind of like a bull to on,

252
00:20:15.920 --> 00:20:22.039
so we don't have anything built in
for that. But yeah, it's

253
00:20:22.279 --> 00:20:25.640
it's a truly reach for and most
of your content is static and you don't

254
00:20:25.640 --> 00:20:26.920
have to worry about that if you're
hosting it on a CD, and so

255
00:20:29.480 --> 00:20:33.640
yeah, we don't do it in
the framework. Well, I'm just going

256
00:20:33.720 --> 00:20:38.079
to throw into that a lot of
the SEO stuff. I mean, some

257
00:20:38.160 --> 00:20:41.279
of it's just your content, right, but some of it is also like

258
00:20:41.400 --> 00:20:45.160
meta tags in your HTML and things
like that, and so you're going to

259
00:20:45.200 --> 00:20:48.599
see a lot more of that in
your layouts and themes as opposed to from

260
00:20:48.599 --> 00:20:53.640
the framework itself. Right, Yeah, we do have a bridge down SEO

261
00:20:53.759 --> 00:20:59.400
plug in which generates a bunch of
those meta tags for you. So that's

262
00:20:59.440 --> 00:21:02.200
one of the plugs that kind of
reach for when I'm starting a new site.

263
00:21:02.240 --> 00:21:03.640
Anyway, I think I'm pretty sure
it's the first party plug and so

264
00:21:03.680 --> 00:21:11.400
it's uh, let me just double
check that. So like then you yeah,

265
00:21:11.519 --> 00:21:14.480
bridge down se O tag. It's
a it's a first party plug and

266
00:21:14.480 --> 00:21:19.240
it's under the Bridgetown organization on on
GitHub and yeah, then you're just like

267
00:21:19.359 --> 00:21:26.160
dropping an e ERB tag or a
liquid tag in your in your layout and

268
00:21:26.440 --> 00:21:30.319
it'll pull stuff out from configurations.
Uh and it's all in the read me

269
00:21:30.759 --> 00:21:37.000
and it'll just generate those matter tags
for you. Awesome problem. So right

270
00:21:37.720 --> 00:21:41.359
yeah, And another huge advantage of
bridge doown over Jackal as you can use

271
00:21:41.559 --> 00:21:45.720
r V. Jackal is liquid only, and I low the liquid. I

272
00:21:45.720 --> 00:21:48.279
mean, it's it's great when you're
kind of when you use as a writing

273
00:21:48.319 --> 00:21:52.200
templates because you can't give users the
ability to execute rub on your app.

274
00:21:52.799 --> 00:21:57.640
But if you're writing your own templates, then e r V all the way.

275
00:21:59.359 --> 00:22:03.160
Oh yeah, and yeah, we
were still currently Bridge down is still

276
00:22:03.160 --> 00:22:07.599
defaulting to liquid, but in Bridge
Down two point zero, we're gonna switch

277
00:22:07.680 --> 00:22:10.759
the default to ERB. Liquid will
still be there as an option, but

278
00:22:11.000 --> 00:22:14.039
the default will be ER because that's
I just think it's the way forward.

279
00:22:14.359 --> 00:22:21.160
Yeah, you know, I always
despise get hub pages yea templating Yeah,

280
00:22:21.240 --> 00:22:23.640
honestly all of the crop that comes
with jackyl, which I do see,

281
00:22:23.759 --> 00:22:29.960
like you have you provide easy deployment
to our configuration with get hub pages,

282
00:22:30.000 --> 00:22:33.160
which is really fun. Yeah,
we do it well, it's a pain

283
00:22:33.240 --> 00:22:37.960
to kind of maintain that keeps breaking, and it like I die a little

284
00:22:37.960 --> 00:22:41.119
bit inside every time someone in the
bridge down this god off? How can

285
00:22:41.160 --> 00:22:44.799
I get this work in get hub
pages. I'm like really, like,

286
00:22:44.880 --> 00:22:48.839
I mean, render dot com it's
free, it's the exact same thing.

287
00:22:48.880 --> 00:22:53.359
It's free, but it actually works, right, So how does render dot

288
00:22:53.400 --> 00:22:56.519
com work? I mean, we
don't have to dive into much of this,

289
00:22:56.680 --> 00:23:00.759
but like I was always under the
assumption that they, like, yeah,

290
00:23:00.839 --> 00:23:04.599
there's like kind of the up charge
for like location observability, like a

291
00:23:04.640 --> 00:23:10.759
non observability, but location like where
you want to deploy it to, like

292
00:23:10.920 --> 00:23:15.640
fly that style. No, Render's
just your standard platform as a service.

293
00:23:15.680 --> 00:23:18.960
It's kind of like HEROICU, but
living in twenty twenty four not twenty fourteen,

294
00:23:21.720 --> 00:23:32.880
and yeah, shots fired right.
It's it's just a platform of the

295
00:23:32.920 --> 00:23:37.920
service, and they offer stating sites
for free. So instead of like on

296
00:23:37.000 --> 00:23:44.240
Heroca, you kind of think of
each thing as a site, on render

297
00:23:44.279 --> 00:23:48.119
dot com, you think of like
you think in the within a concept of

298
00:23:48.279 --> 00:23:52.400
services. So like let's say a
rails application, you would have a web

299
00:23:52.440 --> 00:23:56.680
service which is a Rails app.
You'd have a database service, you'd have

300
00:23:56.240 --> 00:24:00.319
a background job service, and you'd
have a redis service. So you have

301
00:24:00.400 --> 00:24:06.440
four services on render dot com which
comprise one application or one site. But

302
00:24:07.039 --> 00:24:11.640
for a static side, you just
need one static site service and that will

303
00:24:12.039 --> 00:24:15.920
when you link it ticket have repository
and it'll do the build and deploy for

304
00:24:17.079 --> 00:24:19.680
you every time you do a get
push. Also, things get a bit

305
00:24:19.680 --> 00:24:22.759
more complicated when you want to do
dynamic stockers. Then you need a second

306
00:24:22.799 --> 00:24:32.359
service that that handles the dynamic things. Essentially, what you'd have is one

307
00:24:32.440 --> 00:24:38.240
instance of your application running statically and
another instance of your application running dynamically,

308
00:24:38.799 --> 00:24:44.039
and then you just like punch holes
through one to kind of call the other

309
00:24:44.319 --> 00:24:48.359
when needed. So like through your
static site, you can You've probably host

310
00:24:48.400 --> 00:24:52.519
a dynamic thing at like API dot
Example dot com, and then your static

311
00:24:52.559 --> 00:24:56.559
side just calls out to API at
example dot com for the dynamics stuff.

312
00:24:57.279 --> 00:25:02.920
So that's yeah, that's how n
that works. It just their model just

313
00:25:03.000 --> 00:25:07.240
kind of fits my brain really well, just the concept of services. I

314
00:25:07.279 --> 00:25:12.799
just like how that kind of is
conceptualized, because yeah, I just understand

315
00:25:12.799 --> 00:25:18.960
it quite well. Right. One
thing that I'm wondering about with the deployment

316
00:25:18.160 --> 00:25:22.359
story on this is, yeah,
going back to the example that I used

317
00:25:22.359 --> 00:25:26.319
before right where it's hey, look, you know, I'd like to have

318
00:25:26.359 --> 00:25:30.279
a blog on top endevs dot com
right, top endevs dot com slash blog,

319
00:25:30.680 --> 00:25:33.559
and I don't necessarily want to have
to manage all of the different fields

320
00:25:33.599 --> 00:25:38.720
and have my database and do the
thing. Plus, statically rendered files tend

321
00:25:38.720 --> 00:25:45.160
to you know, they load faster. There are a lot of good reasons

322
00:25:45.200 --> 00:25:52.039
to do it that way. Is
there a way to deploy it up underneath

323
00:25:52.039 --> 00:25:56.319
a rails app? And do you
typically just add it to your Rails repo

324
00:25:56.440 --> 00:26:00.839
in some way and have it build
into a folder or do you deplay it

325
00:26:00.880 --> 00:26:07.480
separately and then use I don't know, engine X or something to say and

326
00:26:07.680 --> 00:26:12.920
this folder loads this other thing.
You all those are valid approaches for me

327
00:26:14.000 --> 00:26:18.599
personally, I'd probably keep it in
a separate repo and either have engine X

328
00:26:18.680 --> 00:26:25.119
to kind of take care of the
routing, or I would just bite the

329
00:26:25.160 --> 00:26:30.119
bullet and host on a subdomain just
because I'm lazy that way. So yeah,

330
00:26:30.920 --> 00:26:33.599
for example, my my app's ctagun
dot email is a rails app,

331
00:26:34.160 --> 00:26:38.079
but the blog, the product blog
is at blog dot ctagun dot email,

332
00:26:38.200 --> 00:26:42.920
and that's a bridge down app.
I mean I could have hosted on like

333
00:26:44.000 --> 00:26:48.640
ford slash blog and then done some
funky stuff with redirects or rl rewrites to

334
00:26:48.720 --> 00:26:52.720
kind of make that work, but
I just seemed cleaner. So I do

335
00:26:52.839 --> 00:26:57.000
lose some of the SEO benefits show, but it's just cleaner that way.

336
00:26:57.240 --> 00:27:00.920
So that's how I would do that. Whether you don't want to mix it

337
00:27:02.039 --> 00:27:08.240
up with your rail streeper, probably
not, depending on how your use cases

338
00:27:08.920 --> 00:27:12.960
actually set up. I mean you
could. I know, I know that

339
00:27:14.119 --> 00:27:18.039
Jared has done it with Jackel in
the past, where he's kind of had

340
00:27:18.200 --> 00:27:22.480
rails and jackals sitting side by side. I mean there's no nothing stopping you

341
00:27:22.559 --> 00:27:26.920
from doing that. There's no technical
reason why you shouldn't. I probably just

342
00:27:27.119 --> 00:27:34.359
wouldn't because it's against just my sensibilities
to a point where it's a personal thing

343
00:27:34.440 --> 00:27:37.359
I have. There's no technical reason
not. It's just a personal thing.

344
00:27:37.359 --> 00:27:41.559
I don't want to be mixing those
two. No. Yeah, I was

345
00:27:41.599 --> 00:27:45.720
doing research for this and I made
me think of high voltage from Popo,

346
00:27:45.119 --> 00:27:51.279
which I guess there it's a maintenance
mound, which is kind of a bummer,

347
00:27:51.319 --> 00:27:57.839
but maybe this opportunity here for bridge
humplug in for rails. Yeah,

348
00:27:59.039 --> 00:28:03.319
we were working on something, but
then Jared kind of lost interest and it's

349
00:28:03.599 --> 00:28:08.960
probably not gonna happen because his so
the thing is it's like Bridgetown is like

350
00:28:10.000 --> 00:28:15.359
I would say eighty to ninety percent
Jared White, probably ten eight percent me

351
00:28:15.440 --> 00:28:22.440
and then two percent other contributors.
So it's still very much his show.

352
00:28:22.519 --> 00:28:25.920
I'm quite happy to just support him
in any way he needs, which also

353
00:28:26.039 --> 00:28:30.000
and because it's like it's all volunteer
stuff, it does mean that the things

354
00:28:30.000 --> 00:28:33.079
that him and I are interested in
are the things that get done, and

355
00:28:34.720 --> 00:28:41.559
his interest in rails is dwindling pretty
significantly, and I don't have ambassive interest

356
00:28:41.599 --> 00:28:45.200
in integrating rails with bridgetowns. If
we have contributors that want to come in

357
00:28:45.240 --> 00:28:48.680
and help us out with it,
we'd be more than happy. But I

358
00:28:48.680 --> 00:28:52.960
don't think it's something that's on either
of our radars at this point. But

359
00:28:52.720 --> 00:28:57.519
that said, one of the legacy
bits we're kind of carrying from Jackal is

360
00:28:57.519 --> 00:29:03.680
the fact that the web server was
kind of hardcoded into the tool itself,

361
00:29:03.839 --> 00:29:10.000
So jack because Jackaloni used a web
server for development, so they had hard

362
00:29:10.000 --> 00:29:17.519
coded webrick in there as part of
literally built within Jackel. Yeah, as

363
00:29:17.559 --> 00:29:21.880
part of bridge Down. One point, Jared ripped out Jackal and put Puma

364
00:29:22.000 --> 00:29:26.240
in because we needed Puma for for
Rhoda. So but now we were in

365
00:29:26.279 --> 00:29:32.160
a position where Puma is kind of
built into Bridgetown, and I wasn't particularly

366
00:29:32.240 --> 00:29:37.240
happy with that. So I've taken
some steps to make Bridgetown just generic rack

367
00:29:37.319 --> 00:29:41.759
compliant. So we want to be
at a point where you can or you

368
00:29:41.799 --> 00:29:48.599
can bring any rack compliant webserver you
want and bolt it onto Bridgetown. We'll

369
00:29:48.599 --> 00:29:51.839
obviously still supply Puma as a default, but once we get to that point,

370
00:29:52.200 --> 00:29:56.119
Bridgetown will be like any other rack
app. So you could just put

371
00:29:56.160 --> 00:30:02.039
it in alongside your ears Reaper or
whatever mount and just mounted as a as

372
00:30:02.079 --> 00:30:07.200
A as A as an engine in
your roots dot RB in rails. So

373
00:30:07.319 --> 00:30:11.039
there is a pot to that.
It's just uh yeah, we'll we'll get

374
00:30:11.039 --> 00:30:15.960
the we'll get that soon enough.
Yeah. I found a few posts as

375
00:30:15.000 --> 00:30:19.519
well when I looked at this last
that we're using a gem called Rails reverse

376
00:30:19.559 --> 00:30:26.960
Proxy, And effectively, what it
does is it takes the request to rails

377
00:30:26.960 --> 00:30:32.480
at slash blog, slash whatever,
and it just knows that that has to

378
00:30:32.480 --> 00:30:37.680
get passed off to your bridgetown instance
or jeckl or Hugo or whatever you're running

379
00:30:37.559 --> 00:30:41.680
in the you know that's running somewhere
else. But it'll just hand it off

380
00:30:41.720 --> 00:30:48.319
and then you know, return the
response. Yeah. But the downside to

381
00:30:48.359 --> 00:30:52.519
that is that then if you're layout
on your main page changes and you want

382
00:30:52.559 --> 00:30:56.200
it to look the same, you
have to make the change in both places.

383
00:30:56.279 --> 00:31:00.279
Yeah, exactly, So that's always
going to be. It like a

384
00:31:00.279 --> 00:31:03.599
tricky thing if you're handling two separate
repositories. It comes down they're like,

385
00:31:04.720 --> 00:31:10.079
yeah, whether you want to run
it as whether you want to run it

386
00:31:10.119 --> 00:31:12.599
as two different projects, or you
want to run it as a single project,

387
00:31:12.640 --> 00:31:15.200
because I think if you're trying to
run it as a single project and

388
00:31:15.279 --> 00:31:19.200
using two different tools, that's probably
going to get gnarly at some point or

389
00:31:19.240 --> 00:31:22.480
the other. So, like going
back to my Skatagun example, I had

390
00:31:22.519 --> 00:31:26.480
this Skatagun blog which is bridge on
power, and the app it solid is

391
00:31:26.519 --> 00:31:30.400
reels Powered. I treat them as
independent products. So the blog has the

392
00:31:30.400 --> 00:31:37.160
same color scheme and like fonts and
design language as the app, but it

393
00:31:37.160 --> 00:31:40.440
doesn't share any of the layouts or
design or anything like that. So it's

394
00:31:40.480 --> 00:31:42.319
just a very It's just it's got
a similar look and feel, but it

395
00:31:42.359 --> 00:31:48.920
doesn't share any components or code or
anything like that. And that was intentional,

396
00:31:48.880 --> 00:31:52.240
just because I wanted to run them
because I wanted to avoid that exact

397
00:31:52.240 --> 00:31:56.640
problem that I make a change in
one place and then I'd have to make

398
00:31:56.680 --> 00:32:00.000
a change in another repository. I
didn't want to do that, right.

399
00:32:00.200 --> 00:32:05.920
So one thing that I'm gonna whine
about here for a minute is lately I've

400
00:32:05.920 --> 00:32:12.960
gotten very much into tailwind and I
really like it. I've paid for tailwind

401
00:32:13.039 --> 00:32:16.039
Ui, so I use a lot
of the stuff that's in there. But

402
00:32:16.119 --> 00:32:23.880
one thing that I found with like
podcast show notes is that if I type

403
00:32:23.880 --> 00:32:29.200
them into like the tricks editor or
something, when it renders it out,

404
00:32:29.279 --> 00:32:35.359
it doesn't add the tailwind classes to
the right, to the paragraph tags or

405
00:32:35.400 --> 00:32:37.759
the header tags or whatever, right, And that that's something that I would

406
00:32:38.039 --> 00:32:40.799
like to be able to do.
And so what I find myself doing is

407
00:32:42.519 --> 00:32:50.279
effectively finding ways to add those styles
in some other way underlike the dot tricks

408
00:32:50.559 --> 00:32:57.559
whatever content class. Right, So
tricks content class H one looks a lot

409
00:32:57.599 --> 00:33:00.480
like in H one out of tailwind, right, But I have to go

410
00:33:00.519 --> 00:33:02.480
and I have to kind of handcode
that myself, and that's been a huge

411
00:33:02.519 --> 00:33:07.839
pain. So does bridgetown give you
ways of doing that when you render stuff

412
00:33:07.880 --> 00:33:14.480
out? As far as I get
the whole like wrapper around things in the

413
00:33:14.559 --> 00:33:16.599
layout is going to have all that
stuff, and I have that in rails.

414
00:33:16.920 --> 00:33:21.319
But you know, from my markdown
or wherever I'm pulling the content from,

415
00:33:22.519 --> 00:33:27.319
can I tell it to build it
out that way? Short answer is

416
00:33:27.519 --> 00:33:34.640
no, because unless you're handcoding HTML
and putting the classes in, which would

417
00:33:34.680 --> 00:33:37.160
be like, yeah, it's like
writing HTML, we don't provide anyway.

418
00:33:37.200 --> 00:33:42.920
Can't do that in knockdown because we
just use cram down as a renderer.

419
00:33:43.079 --> 00:33:47.279
So I think whatever way you can
add custom classes to a cramm down file,

420
00:33:49.240 --> 00:33:51.440
you'd be able to do it that
way. We don't have anything specific

421
00:33:51.480 --> 00:33:55.559
and bridge down for that, and
I doubt there will ever be, because

422
00:33:55.720 --> 00:34:02.039
Jared and I have both vocal opponents
of the whole tailwind approach with utility and

423
00:34:02.160 --> 00:34:07.200
things like that. I would I
want hold my breath and that it's unlikely

424
00:34:07.400 --> 00:34:12.239
to happen. I think that is
like that is one thing that I don't

425
00:34:12.280 --> 00:34:15.400
want to say never, but I
think if even if someone proposed some functionality

426
00:34:15.400 --> 00:34:19.239
to make that happen, I think
Jared and I both both would just put

427
00:34:19.239 --> 00:34:22.000
a stop to it at that.
Sorry, this is not happening in bridge

428
00:34:22.039 --> 00:34:24.480
Down. I don't want to put
words in his marth either, But that

429
00:34:24.599 --> 00:34:29.400
is just one thing where I think
we would probably draw a line, and

430
00:34:29.760 --> 00:34:36.920
that because I think I just don't
think it's a good approach for web development,

431
00:34:36.960 --> 00:34:40.440
and I get why people like it
and I don't. I don't want

432
00:34:40.440 --> 00:34:45.480
to dissue it people from from using
it. It's a very like just for

433
00:34:45.639 --> 00:34:49.960
me personally, I think you should
give CSS the respect it deserves. And

434
00:34:51.039 --> 00:34:57.480
I like the concept of separating styling
from from from content. So everything in

435
00:34:57.519 --> 00:35:00.119
bridge Shan will always kind of be
in the spring it of the open Web,

436
00:35:00.159 --> 00:35:04.960
which is you write your content,
which which is an HTM, or

437
00:35:05.000 --> 00:35:09.559
you style it using CSS and you
add a dynamic functionality on top of that

438
00:35:09.760 --> 00:35:15.239
using JavaScript. So that will always
be like a core tenet of Bridgetown.

439
00:35:15.280 --> 00:35:20.800
And mixing up your CSS and HTML
to me, in my opinion, goes

440
00:35:20.800 --> 00:35:23.559
against the spirit of the open Web. So you don't want to be my

441
00:35:23.599 --> 00:35:30.719
friend anymore. I got it.
It's okay, Yeah, I got that.

442
00:35:30.199 --> 00:35:34.639
Understand what you're saying, and I
can only imagine what a headache it

443
00:35:34.639 --> 00:35:38.880
would be to try and make something
like that work. But yeah, I

444
00:35:38.880 --> 00:35:43.320
mean there's always ways around it,
right, like oh yeah, yeah,

445
00:35:43.559 --> 00:35:47.280
But I think again, if you
if you're if you're wrestling against the tool,

446
00:35:49.320 --> 00:35:52.760
you're probably in my opinion, not
doing something, not doing something right.

447
00:35:52.840 --> 00:36:00.000
Yeah, because I think one workaround
in Bridgetown might be to because I

448
00:36:00.000 --> 00:36:04.360
said earlier, we have the concept
of Bridgetown components, which is just Ruby

449
00:36:04.360 --> 00:36:09.119
classes, so you could just use
those to define your styles in there,

450
00:36:09.159 --> 00:36:13.840
say you can you have a methad
which returns all the tailwind style classes that

451
00:36:13.880 --> 00:36:17.679
you need and then just call that
in the HTML template, So that that

452
00:36:17.760 --> 00:36:22.760
would be one way of going about
it within Bridgetown, within right within the

453
00:36:22.840 --> 00:36:28.280
tools that are provided, and I
think using them in the spirit that they

454
00:36:28.280 --> 00:36:30.559
are meant to be used. Valentino, you said you had a lot of

455
00:36:30.599 --> 00:36:38.440
questions, so and then I keep
jumping in with mindt Yeah, I wanted

456
00:36:38.440 --> 00:36:44.320
to touch on THEMING because like I
feel like next to like SEO, maybe

457
00:36:44.360 --> 00:36:51.440
theming is like the next frontier.
Yeah, it's uh, it's a bit

458
00:36:51.599 --> 00:36:55.440
sad at how few community creative themes
are out there for Bridgetown. It's something

459
00:36:55.440 --> 00:37:00.880
we we've tried to push a number
of times for the community to create a

460
00:37:00.880 --> 00:37:06.880
few more themes, but it hasn't
been something that's materialized. I mean there's

461
00:37:06.920 --> 00:37:09.760
a few out there. I think
there might be a GitHub tag Bridgetown Themes

462
00:37:09.800 --> 00:37:13.360
or something like that. I think
there might be something on the Bridge Down

463
00:37:13.360 --> 00:37:17.440
website as well. But yeah,
it's it's a bit of a shame that

464
00:37:17.480 --> 00:37:22.840
there's not more out there. We
have an API for themes, we have

465
00:37:22.880 --> 00:37:27.119
a guide and how to create them
as well. It's just I think the

466
00:37:27.159 --> 00:37:35.039
tool is not popular enough to have
a wider variety of themes. So yeah,

467
00:37:35.079 --> 00:37:37.719
if you're listening and you want to
use bridge down and you like it,

468
00:37:37.920 --> 00:37:44.119
please create more themes. What is
that process? Like, I'm curious,

469
00:37:44.159 --> 00:37:47.280
Like I see, like there's there's
you basically create a new plug in,

470
00:37:47.360 --> 00:37:52.239
but like what happens after that?
Yeah, it's just so we have

471
00:37:52.280 --> 00:37:55.599
a plugin generator. You generate a
plug and you read the dogs, follow

472
00:37:55.639 --> 00:38:00.400
the instructions and how to create a
theme. You publish it to GitHub,

473
00:38:00.400 --> 00:38:05.920
and I think you add a tag
to it. I think kind of remember

474
00:38:05.920 --> 00:38:07.519
the tag is. I think it's
either just bridge down dash plug in a

475
00:38:07.599 --> 00:38:10.239
bridge down dash them or something like
that, and it will show up on

476
00:38:10.239 --> 00:38:16.239
our website. Yeah, there's not
a massive process to it. You just

477
00:38:16.519 --> 00:38:21.400
publish it on GitHub and then anyone
can use it. It's just it's just

478
00:38:21.440 --> 00:38:24.559
true. It's the same as publishing
a Ruby gem. So yeah, you'd

479
00:38:24.599 --> 00:38:28.199
have to create a gem and push
it to Ruby gems as well. But

480
00:38:28.320 --> 00:38:31.639
yeah, it's it's literally just like
creating a gem. Gotcha? And is

481
00:38:31.639 --> 00:38:38.880
that like a you know, you
pick your CSS or like JavaScript, like

482
00:38:38.920 --> 00:38:43.199
all the asset bundling, like that's
the responsibility of the plug in kind of

483
00:38:43.280 --> 00:38:46.320
thing. Yeah, yeah, is
there, like you know, because what

484
00:38:46.320 --> 00:38:50.719
I would love is, like,
you know, something like Bootstrap or something

485
00:38:50.760 --> 00:38:57.119
like that apply to the Yeah,
I mean, I think I'm pretty sure

486
00:38:57.119 --> 00:39:00.800
you can can figure Bootstrap using the
like the thing I mentioned earlier, bundled

487
00:39:00.800 --> 00:39:06.360
configurations. So let me check.
Do we have Bootstrap? You know,

488
00:39:06.440 --> 00:39:08.400
we don't have Bootstrap, but we
could. Yeah, that's easy enough,

489
00:39:09.400 --> 00:39:15.840
so we have you can configure things
like shoelace, open props, things like

490
00:39:15.880 --> 00:39:21.440
that. We're just running one command. I'm surprised we don't have Balma in

491
00:39:21.480 --> 00:39:24.239
there. Actually, something we should
probably add. So yeah, Balma is

492
00:39:24.239 --> 00:39:28.719
my favorite CSS framework if I was
going to use on, which is in

493
00:39:28.760 --> 00:39:32.199
fact, actually very rarely that I
actually even use the framework. But yeah,

494
00:39:32.239 --> 00:39:36.840
I mean, these things can be
installed quite easily because you have h

495
00:39:37.559 --> 00:39:42.840
NPM there, so you can install
them and they'll they'll be there in your

496
00:39:42.880 --> 00:39:46.480
build for you to use just a
couple of in a couple of commands.

497
00:39:47.039 --> 00:39:51.480
So even if you don't have it, like even if though there are no

498
00:39:51.719 --> 00:39:54.599
community created things that there are a
few, but not a lot, stuff

499
00:39:54.639 --> 00:40:00.360
like Bootstrap and Balma, you can
configure very easily and the and you have

500
00:40:00.440 --> 00:40:02.119
all that power at your fingertips.
Yeah, I do see that in the

501
00:40:02.239 --> 00:40:07.039
front end bunneling section here. Now
you just you know, yarn ad the

502
00:40:07.079 --> 00:40:13.320
framework of your choice and then included
yeah styles, Yeah that's cool. Where

503
00:40:13.360 --> 00:40:15.639
do you take it from here?
I mean it looks pretty feature complete,

504
00:40:15.760 --> 00:40:20.840
like, uh, yeah, we
have we have. We have a few

505
00:40:21.760 --> 00:40:25.039
Road to Bridgetown two point zero blog
posts that have been published, so if

506
00:40:25.079 --> 00:40:30.880
you check out the Bridgetown blog you'll
see some of the things we're working on.

507
00:40:30.920 --> 00:40:32.960
So one of the things for me
is getting Bridge down to be racked

508
00:40:32.960 --> 00:40:37.760
the Pliant so we're not relying on
a specific server. Jared is working on

509
00:40:38.880 --> 00:40:44.559
like speeding up how the hot reload
works in development, so right now you

510
00:40:44.679 --> 00:40:47.840
kind of rebuild the entire website every
time you make a change, which for

511
00:40:47.960 --> 00:40:52.280
bigger sites is not very efficient.
So he's working on something that does like

512
00:40:52.320 --> 00:41:00.840
incremental bills so your hot reload when
you're developing is super snappy. But a

513
00:41:00.840 --> 00:41:06.079
whole bunch of other stuff like small
improvements as well. I think the big

514
00:41:06.119 --> 00:41:09.360
one is we're aiming to drop our
dependency and active support. It probably won't

515
00:41:09.360 --> 00:41:13.199
happen for bridge down two pointer over
long term, we want to drop our

516
00:41:13.239 --> 00:41:19.079
dependency on active support. Is there
a reason for that? Jared's written out

517
00:41:19.079 --> 00:41:23.280
along blog posts about it, for
himing the reasons were largely personal, but

518
00:41:24.679 --> 00:41:30.960
that my view on it is,
uh, I think there's a lot of

519
00:41:30.000 --> 00:41:34.400
there's a lot of scope for different
ideas in the Ruby community. We've kind

520
00:41:34.440 --> 00:41:37.800
of gone too close to rails with
bridge down a number of times, I

521
00:41:37.800 --> 00:41:43.119
think, with with the use of
things like active support and stuff like that.

522
00:41:43.159 --> 00:41:46.039
I think we were just trying to
just fly very close to Rails.

523
00:41:47.119 --> 00:41:52.159
But I think it's good to have
different ideas around the Ruby community. So

524
00:41:52.199 --> 00:41:57.480
we're just trying to see what what
else we can come up with that doesn't

525
00:41:57.519 --> 00:42:02.440
have a hard dependency on on Rails
framework, and just try to try to

526
00:42:02.559 --> 00:42:07.559
have a few different trains of thoughts, different solutions to problems. So you

527
00:42:07.639 --> 00:42:14.920
see what that takes us. Really
Yeah, but the reason for dropping actor

528
00:42:14.960 --> 00:42:20.360
support was a largely personal thing by
Jared because of his disillusionment with Rails and

529
00:42:20.360 --> 00:42:24.039
with thirty seven signals. So yeah, like I said, he's ninety percent

530
00:42:24.079 --> 00:42:30.960
of bridge down, so there's no
point in going in a direction that he

531
00:42:31.039 --> 00:42:36.360
wasn't happy with of motivated to work
on because it's still largely a volunteer driven

532
00:42:36.400 --> 00:42:38.480
thing. He doesn't get paid for
it. We have a small number of

533
00:42:38.480 --> 00:42:45.840
githubsponsors, but it's very much a
labor of love. So I'm quite happy

534
00:42:45.840 --> 00:42:50.599
to support him with whatever direction he
wants to take the project in. So

535
00:42:50.840 --> 00:42:54.960
one thing that I'm wondering about with
some of these static sites, they do

536
00:42:55.000 --> 00:43:00.920
a great job on a bunch of
stuff, but one of them is search.

537
00:43:01.320 --> 00:43:06.039
Right, So if you have a
large amount of stuff in your website,

538
00:43:06.480 --> 00:43:08.559
you know people are gonna want to
find it. So do you recommend

539
00:43:08.599 --> 00:43:14.519
something like Algolia or some of these
engines out there that kind of hook into

540
00:43:14.559 --> 00:43:17.800
your site, or do you push
people more toward hey, you know,

541
00:43:19.079 --> 00:43:22.400
here's a really simple way to do
it with the Rota implementation that you have,

542
00:43:22.719 --> 00:43:28.880
or and where where do people end
up for that? So we recommend

543
00:43:28.880 --> 00:43:32.480
like a JavaScript approach. I think
Algolia is one of the We have search

544
00:43:32.599 --> 00:43:37.360
on the Bridge Down website, which
is a Bridge Down powered website, and

545
00:43:37.400 --> 00:43:40.400
it's not so it's not a service
side, it's not a server powered search.

546
00:43:40.440 --> 00:43:45.880
It's client only. I am just
trying to see where Yeah, but

547
00:43:46.639 --> 00:43:51.199
see, if you use Algolia,
you're using their back end to do the

548
00:43:51.239 --> 00:43:57.960
search, right, So bridge on
it's using the bridge down quick Search plug

549
00:43:57.960 --> 00:44:01.679
in which runs Lunar dot l u
n r dot GS. So it's not

550
00:44:01.760 --> 00:44:07.119
Algolia. That's my brother's probably just
confusing myself. So this is purely client

551
00:44:07.159 --> 00:44:10.800
sites. I think it builds like
a gson document or something, and it

552
00:44:10.840 --> 00:44:17.199
builds its own index statically exactly.
It's a purely JavaScript powered search. L

553
00:44:17.280 --> 00:44:22.400
U n R dot GS is a
solution we're using, so h's and the

554
00:44:22.440 --> 00:44:27.840
plug is called bridge down quick Search. It's another first party plug and so

555
00:44:28.159 --> 00:44:30.239
yeah, that's that's what we recommend
for search. But if you wanted something

556
00:44:30.280 --> 00:44:35.000
a bit more involved, and again
you can always just reach out for the

557
00:44:35.039 --> 00:44:37.599
service, like any service side solution. Yeah, I always like Lunar.

558
00:44:38.599 --> 00:44:44.159
Yeah, I didn't try. There's
another. There's actually quite a few,

559
00:44:45.239 --> 00:44:51.039
you know, JavaScript search client side
search now which worked really well that are

560
00:44:51.119 --> 00:44:54.039
very much like I think there's one
like that's like an elastic search clone even

561
00:44:55.199 --> 00:45:00.320
okay wow, And they're they're really
easy to use, uh and it's pretty

562
00:45:00.320 --> 00:45:07.119
wild like how fast they are.
So besides kind of the cleanup on like

563
00:45:07.239 --> 00:45:10.800
active support, getting rack support in. There are there other things that are

564
00:45:10.800 --> 00:45:16.719
coming to bridgetown or nothing? Nothing
big. We're pretty much like we want

565
00:45:16.719 --> 00:45:22.000
to keep bridge down Core fairly slim, so we don't want to be putting

566
00:45:22.000 --> 00:45:27.440
stuff in just for the heck of
it. I think a lot of the

567
00:45:27.440 --> 00:45:31.199
big features and stuff will be largely
plug ins. So I think Jared had

568
00:45:31.199 --> 00:45:37.440
an idea where he wanted to have
like really good first party support for Flex.

569
00:45:37.039 --> 00:45:40.760
Do you know the library flex p
h l e X by Joel Drapper.

570
00:45:42.440 --> 00:45:45.719
It's it's a way to write components
using HTML. It's way it's a

571
00:45:45.719 --> 00:45:50.920
way to write object oriented HTML using
peer Ruby. I think, I mean,

572
00:45:50.960 --> 00:45:55.400
I've got that completely wrong. It's
something to do with writing. It's

573
00:45:55.440 --> 00:46:01.000
like a DSL to write HTML using
Ruby. It's like if view components had

574
00:46:01.440 --> 00:46:09.920
a DSL. Okay, what what
Valentino said? The Internet? It looks

575
00:46:09.960 --> 00:46:15.519
cool. Yeah, So initially I
think he proposed adding that to Core.

576
00:46:15.639 --> 00:46:19.159
But then I said as something like
I should live in a plug in.

577
00:46:19.599 --> 00:46:22.920
So yes, there will probably at
some point be a plug in, or

578
00:46:22.920 --> 00:46:27.119
there might already be one that I'm
not aware of because Flex isn't really for

579
00:46:27.199 --> 00:46:30.199
me. But yes, things like
that will always live in plugins. There

580
00:46:30.199 --> 00:46:34.159
will be first party plugins under the
bridge Down organization and GitHub so and we'll

581
00:46:34.159 --> 00:46:37.800
have good support for them out of
the box. But we're not looking to

582
00:46:37.840 --> 00:46:43.719
add a whole lot into Bridgetown core. It's going to be largely incremental changes

583
00:46:45.039 --> 00:46:51.719
and just getting it to a stable
place because we don't want, uh,

584
00:46:52.840 --> 00:46:55.199
we don't want to start making bridge
On too complex because it's already it does

585
00:46:55.320 --> 00:46:59.880
quite a lot, and I and
just judging by the vibe, but the

586
00:47:00.199 --> 00:47:02.239
bridge time count, people are just
getting a bit daunted by it already.

587
00:47:04.000 --> 00:47:07.800
So we definitely like our philosophy is
very much the simple stuff will always be

588
00:47:07.840 --> 00:47:10.400
simple. So we may have all
the advanced of like service ide, rendering

589
00:47:10.440 --> 00:47:15.639
and all in there for you to
use, but if you want something as

590
00:47:15.639 --> 00:47:19.800
simple as just a blog, that'll
always still be very simple to do.

591
00:47:19.840 --> 00:47:22.719
You're not going to stand in your
way in any way, shape or form.

592
00:47:22.920 --> 00:47:28.119
But honestly, when you have a
lot of advanced features, people inevitably

593
00:47:28.119 --> 00:47:34.960
tend to get distracted by those.
So I can't think of anything that's like

594
00:47:35.039 --> 00:47:37.119
a big feature that we have coming
through the pipeline. It's all just going

595
00:47:37.199 --> 00:47:43.440
to be like incremental stuff for the
foreseeval anyway, unless unless someone has a

596
00:47:43.440 --> 00:47:47.800
really solid proposal that we be the
core team, like and like, okay,

597
00:47:47.920 --> 00:47:52.280
then we can go ahead with that. But for now, there's nothing

598
00:47:52.320 --> 00:47:57.559
that I'm aware of other than let's
just keep cleaning this up and keep keep

599
00:47:57.760 --> 00:48:04.159
stabilizing it. So the million dollar
question here is can we use AI to

600
00:48:05.320 --> 00:48:15.320
you know, generate static pages for
us generation that to be yeah, to

601
00:48:15.559 --> 00:48:19.800
uh just have a bot but right, like if there's a bridge town GPT,

602
00:48:20.360 --> 00:48:24.599
right, I use it to just
quickly uh spin up ideas. Yeah,

603
00:48:24.599 --> 00:48:30.519
of course you can. Yeah,
there's nothing stopping You're just writing Ruby.

604
00:48:30.519 --> 00:48:32.880
Good you can do. You've got
the whole power of Ruby at your

605
00:48:32.920 --> 00:48:36.480
disposals. You can do whate value
you want. All right, Bridge down

606
00:48:36.480 --> 00:48:45.320
plugging coming, bridge down right.
I'm kind of curious what's your story with

607
00:48:45.360 --> 00:48:51.039
this? How did you wind up
working on this project? Yeah? Good

608
00:48:51.119 --> 00:48:55.519
question. So I think it was
quite early on in my time with Ruby.

609
00:48:55.599 --> 00:48:59.920
So for listeners who aren't familiar,
and he started working with Ruby and

610
00:49:00.000 --> 00:49:02.599
twenty twenty, I used to be
a mobile developer for that, and I

611
00:49:02.639 --> 00:49:09.159
spent the first half of the pandemic
pretty much learning Ruby and rails and a

612
00:49:09.239 --> 00:49:15.000
light. Sorry, we're glad you
saw the light. Yeah, I'm glad

613
00:49:15.039 --> 00:49:21.800
too. And I think I was. At some point I was doing something

614
00:49:21.800 --> 00:49:23.920
with Jackel. I can't remember what
it was now, and I was trying

615
00:49:23.960 --> 00:49:29.320
to integrate web back with it,
and I was losing the will to live

616
00:49:29.360 --> 00:49:36.119
because integrating web back with Jackyl is
not for the fainthearted. And while I

617
00:49:36.159 --> 00:49:38.599
was just googling around, I think
I found because at the time, bridge

618
00:49:38.599 --> 00:49:43.960
down is marketed as like a Ruby
powered web back aware stat excite generator,

619
00:49:44.440 --> 00:49:46.719
and I just stumbled upon this thing
and I was like, Okay, here

620
00:49:46.760 --> 00:49:50.320
you go. Here's another tale that
thinks it's better than Jackuler. I was

621
00:49:50.400 --> 00:49:54.840
very unimpressed, just because of my
skeptical, pessimistic nature, but it kind

622
00:49:54.840 --> 00:49:58.400
of stuck in my brain. And
then a few days later I got so

623
00:49:58.480 --> 00:50:01.480
fed up as let me go give
this an actual try, and I just

624
00:50:01.599 --> 00:50:05.800
installed Bridgetown and that's when I realized
it's actually a fok of Jackals. And

625
00:50:05.800 --> 00:50:08.679
when I installed it and created a
site, everything was super familiar. And

626
00:50:08.800 --> 00:50:13.280
to get my old Jackal site to
work, all I needed to do is

627
00:50:13.360 --> 00:50:16.920
copy the files over and and that
was it because it was just a fork

628
00:50:16.960 --> 00:50:21.239
and the directory structure was so similar. I could get up and running with

629
00:50:21.239 --> 00:50:23.559
Bridgetown super fast, and I was
like, working, this is pretty cool,

630
00:50:24.400 --> 00:50:29.199
and I just started customizing it in
ways that I wanted. So I

631
00:50:29.199 --> 00:50:31.440
think, yeah, when when I
first used it, it was it had

632
00:50:31.480 --> 00:50:36.960
SASS by default. But I was
getting into post CSS at the time,

633
00:50:37.000 --> 00:50:44.320
and I was I was reluctant to
use a full blown preprocessor because even at

634
00:50:44.360 --> 00:50:46.119
the time, I could see how
good vanilla CSS was becoming, and I

635
00:50:46.280 --> 00:50:51.280
liked the whole concert of post CSS
where it just kind of lets you right

636
00:50:51.639 --> 00:50:55.119
next generation CSS today, kind of
like a babble kind of thing. So

637
00:50:55.760 --> 00:51:01.400
Bridgetown had no support for post CSS. I customized my template to kind of

638
00:51:01.440 --> 00:51:06.079
add it in there. I made
a few other changes just start a personal

639
00:51:06.079 --> 00:51:09.039
preference, and I wrote a blog
post saying, I really love this new

640
00:51:09.079 --> 00:51:13.480
tail Bridgetown. There's some things out
of the box I didn't like. Say

641
00:51:13.480 --> 00:51:16.880
here all the things I made like, I made to change it to my

642
00:51:17.039 --> 00:51:21.199
liking, and I shed that around
the Bridgetown community. I think at the

643
00:51:21.239 --> 00:51:24.239
time they had a discourse and a
discord and so I just shared it around

644
00:51:24.239 --> 00:51:29.559
there. And I got a reply
from Jarrett saying, if you wanted to

645
00:51:29.599 --> 00:51:32.400
make a pull request for any of
these things, we'd be happy to accept

646
00:51:32.400 --> 00:51:36.599
it. So I pulled requests some
of the stuff back, like I think

647
00:51:36.599 --> 00:51:39.440
post CSS and stuff kind of remember
now. But I made three or four

648
00:51:39.480 --> 00:51:44.920
pull requests back into the Reaper from
customizations I'd made just for myself, and

649
00:51:44.960 --> 00:51:47.199
I just kind of got involved with
issues. I was through us, commenting

650
00:51:47.199 --> 00:51:52.400
on issues, commenting on pull requests, giving my opinion, just getting involved

651
00:51:52.400 --> 00:51:55.719
with the community. And then I
got a message from Jared one day.

652
00:51:55.960 --> 00:52:00.880
And I should mentioned him a few
times already. A Jared White is the

653
00:52:00.880 --> 00:52:05.840
person who started Bridgetown back in April
twenty twenty. He forked it from Jackyl

654
00:52:05.880 --> 00:52:08.079
because of his own frustrations with Jackyl
and it's kind of lack of progress.

655
00:52:08.800 --> 00:52:14.000
And it was basically him and another
guy, Connor Rogers, who's quite well

656
00:52:14.039 --> 00:52:17.960
known in like front end circles,
who were on the core team when I

657
00:52:19.079 --> 00:52:21.480
joined. And yeah, I just
got a message out of the blue from

658
00:52:21.519 --> 00:52:25.320
Jared saying I really like a contributions
or would you consider joining the core team?

659
00:52:25.599 --> 00:52:30.000
And like, hell, yeah,
why not? So yeah, that's

660
00:52:30.000 --> 00:52:36.639
how I ended up on the core
team. My contributions have been largely selfish,

661
00:52:36.679 --> 00:52:39.239
I think, apart from maybe one
or two things, I think literally

662
00:52:39.280 --> 00:52:45.639
everything I've contributed has been stuff I
wanted for myself, which is one way

663
00:52:45.639 --> 00:52:51.239
of getting involved in open source.
But I was also careful that I didn't

664
00:52:51.280 --> 00:52:55.360
want to I didn't want to get
tired of it. I didn't want to

665
00:52:55.360 --> 00:53:02.360
start resenting the project because I'm freelancer. I don't have a job that has

666
00:53:02.679 --> 00:53:07.320
a consistent paycheck coming in. Whatever
I do on open sources stuff where I

667
00:53:07.360 --> 00:53:10.039
could be building a client, but
I'm not building a client. I'm doing

668
00:53:10.039 --> 00:53:15.119
my own stuff instead, So it
needed to be very much something that comes

669
00:53:15.119 --> 00:53:21.840
from within. So that's why my
contributions tend to go in in spurts,

670
00:53:21.920 --> 00:53:24.400
like There'll be a couple of months
where I'll make tons of contribution, then

671
00:53:24.400 --> 00:53:29.199
I'll go a few months without making
any. But behind the scenes, I'm

672
00:53:29.199 --> 00:53:32.960
always like supporting Jared and the core
team with decisions and things like that.

673
00:53:34.679 --> 00:53:39.159
So yeah, my role is a
bit weird with the project in the sense

674
00:53:39.199 --> 00:53:45.239
that kind of there but not always
there. It's very much a choose your

675
00:53:45.280 --> 00:53:50.679
own involvement kind of thing, right, But Yeah, that's how I ended

676
00:53:50.760 --> 00:53:52.360
up, and that's on the core
team, and that's kind of like the

677
00:53:52.480 --> 00:53:55.679
role that I play within it at
the moment. I love that too,

678
00:53:55.719 --> 00:54:00.119
because yeah, you start contributing in
Yeah, yeah, that's the best way

679
00:54:00.119 --> 00:54:05.679
to get involved with any project,
right, he just start contributing. See

680
00:54:05.679 --> 00:54:09.119
where that goes. And actually,
another point I should make is my freelance

681
00:54:09.159 --> 00:54:15.000
career is what I have is very
much, well slightly indirectly thanks to Bridgetown,

682
00:54:15.039 --> 00:54:22.679
because I was I had no contacts
in the Ruby community whatsoever. And

683
00:54:22.239 --> 00:54:28.079
I just ended up on the Bridgetown
care team in December twenty twenty And it

684
00:54:28.159 --> 00:54:30.920
was around jan twenty twenty one when
I was trying to start freelancing and finding

685
00:54:30.960 --> 00:54:35.440
clients and stuff like that, and
wasn't really making much of a headway.

686
00:54:35.519 --> 00:54:39.960
But there was someone who I had
gotten contact through my work on Bridgetown,

687
00:54:40.119 --> 00:54:45.760
was a chap named Mike Rogers,
who is sadly no longer with us,

688
00:54:45.079 --> 00:54:51.280
but he was also a contributor in
Bridgetown and I had just got I'd got

689
00:54:51.280 --> 00:54:54.960
in contact with him through my work
on the project, and he retweeted someone

690
00:54:55.280 --> 00:55:01.000
looking for Ruby and Rails freelancers and
I think he sent that tweet directly to

691
00:55:01.039 --> 00:55:05.000
me as well, because he knew
I was looking for freelance work. And

692
00:55:05.599 --> 00:55:08.039
I replied to that message and that
was how I got my first contract,

693
00:55:08.119 --> 00:55:15.119
which got me started with Rails freelancing. And it's been like it's always getting

694
00:55:15.119 --> 00:55:17.719
a first clients always the hardest,
right, And I was with that client

695
00:55:17.840 --> 00:55:22.199
for well over a year. I'm
still in touch with them. I'm still

696
00:55:22.199 --> 00:55:27.840
like good good friends with them.
And yes, I think Bridgetown was instrumental

697
00:55:27.880 --> 00:55:31.000
in giving me a freelance career.
That's the power of open source. All

698
00:55:31.119 --> 00:55:37.800
right, Well, anything else we
want to go into Valentino, No,

699
00:55:37.920 --> 00:55:40.480
I think we've said it all.
I mean, I be honest, I

700
00:55:40.480 --> 00:55:46.239
didn't know much about Bridgetown before today. It looks awesome. It solves you

701
00:55:46.280 --> 00:55:52.559
know, it solves a little bit
more problems than my original solution of middleman.

702
00:55:52.679 --> 00:55:58.039
So I'm excited to try this out
in my next static project for sure.

703
00:55:58.719 --> 00:56:00.880
Cool glad to hear it. Yeah, if you're travel you can always

704
00:56:01.239 --> 00:56:05.239
reach out to me for help.
And yeah, we just want to try

705
00:56:05.280 --> 00:56:09.239
and make it as simple as possible
to get started with static sites and have

706
00:56:09.280 --> 00:56:14.159
the advanced functionality there when you need
it. So yeah, I don't know

707
00:56:14.159 --> 00:56:16.599
a whole lot about Middleman, but
I can say with a fair amount of

708
00:56:16.639 --> 00:56:21.280
certainty that you'd be happy with Bridge
time. You know, it's funny,

709
00:56:21.320 --> 00:56:25.719
there's a lot of similarities in some
of the design decisions. I imagine some

710
00:56:25.840 --> 00:56:30.960
some were pulled, you know,
maybe copied. And that's great because you

711
00:56:30.960 --> 00:56:37.239
know why repurpose. I rebuild it
from scratch, and it does from from

712
00:56:37.239 --> 00:56:40.800
my example of as a you know, Middleman user, it makes it easier.

713
00:56:42.639 --> 00:56:46.000
Yeah, uh but yeah, I
mean I love all of the you

714
00:56:46.039 --> 00:56:50.599
know, you can have like data
files that allow you to like use some

715
00:56:51.239 --> 00:56:55.719
uh you know data objects in reference
in your templates and gives you all of

716
00:56:55.760 --> 00:57:00.559
the how to host static files and
all that stuff is built in and yeah,

717
00:57:00.599 --> 00:57:05.480
yeah that's actually stuffed. We just
inherited from Jackel. Actually we just

718
00:57:05.719 --> 00:57:10.039
that's like those conceptual decisions we just
inherited from Jacqueline. They're good decisions,

719
00:57:10.079 --> 00:57:14.199
so we just stuck with them.
Like why change it if it if it

720
00:57:14.199 --> 00:57:17.480
ain't broke right, Maybe maybe Middleman
also stole it from Jack could be yeah

721
00:57:19.119 --> 00:57:22.119
maybe, Yeah, I mean,
like this whole just the whole ecosystem of

722
00:57:22.239 --> 00:57:27.000
static side generators. Jackel is what
kicked it all off, So I'm not

723
00:57:27.039 --> 00:57:34.800
surprised that such a far reaching effect. Yeah, I'm curious if Middleman is

724
00:57:34.840 --> 00:57:39.119
a fork of Jeckyll as well.
It really wouldn't surprise me. I don't

725
00:57:39.119 --> 00:57:42.199
think it is, but yeah,
if it was. I don't think it

726
00:57:42.280 --> 00:57:45.280
is either, but it wouldn't shock
me if it were. Well, I'm

727
00:57:45.280 --> 00:57:50.079
gonna push this into the picks Valentino, Why don't you start us off with

728
00:57:50.119 --> 00:57:55.159
picks? Sure? Uh, yeah, I've got uh two picks today.

729
00:57:55.719 --> 00:58:01.280
Last week I was at the uh
there was a Ruby AI meet up in

730
00:58:01.320 --> 00:58:05.840
New York City that I attended.
It was awesome. It was hosted by

731
00:58:06.400 --> 00:58:09.360
a company called sub Layer, which, if you're not familiar, is an

732
00:58:09.400 --> 00:58:16.599
awesome company, awesome product Subplayer.
They basically give you like some code generation

733
00:58:17.320 --> 00:58:23.039
in a Ruby ecosystem, and they
provide some awesome tools. I've been experimenting

734
00:58:23.079 --> 00:58:29.800
with their blueprints, which basically let
you save like code snippets as AI generation

735
00:58:30.159 --> 00:58:36.079
like seeds. So if you have
like common patterns that you use in all

736
00:58:36.119 --> 00:58:40.840
of your applications or your teams,
you can get AI to clone those patterns

737
00:58:40.960 --> 00:58:45.519
and say, oh, I want
a service object or I want, you

738
00:58:45.559 --> 00:58:50.639
know, a factory or all these
different patterns that evolve over time and you

739
00:58:50.639 --> 00:58:53.599
can get it to code it in
whatever styles that you have. So it's

740
00:58:53.639 --> 00:58:59.760
really neat and yeah, I just
had a ton of great people there.

741
00:59:00.519 --> 00:59:07.960
Uh. My next pick is,
uh from the Olympia chat team. Uh.

742
00:59:07.159 --> 00:59:14.679
If you're not familiar, Olympia is
like a you know, AI robots

743
00:59:14.679 --> 00:59:21.440
on steroids. Uh. You basically
get like a team of assistants that have

744
00:59:21.639 --> 00:59:25.079
various purposes. Uh. So you
can have a copywriter, you can have

745
00:59:25.159 --> 00:59:31.679
marketing strategists, like all these different
kinds of very specific assistance. Uh.

746
00:59:31.719 --> 00:59:37.400
And there's just like so many incredible
features in it, and they just keep

747
00:59:37.440 --> 00:59:40.360
pumping it out. Like as an
example, when I was, you know,

748
00:59:40.519 --> 00:59:45.920
about to attend the uh you know
event in New York City, I

749
00:59:45.039 --> 00:59:47.599
just said, hey, here's a
list of attendees, Like tell me who

750
00:59:47.679 --> 00:59:52.519
I should like be connecting with,
right like, and it goes and it

751
00:59:52.639 --> 00:59:55.199
summarizes all the people and it was
it was. It's just a fantastic tool.

752
00:59:55.400 --> 01:00:00.440
Uh. Do you want to do
research or even sense e neils for

753
01:00:00.480 --> 01:00:02.239
you if you want, which is
kind of wild, and all of the

754
01:00:02.280 --> 01:00:06.840
systems can talk to each other.
I could talk endlessly about it, but

755
01:00:07.400 --> 01:00:10.599
I think we'll have popeyon soon so
we can dig get in there. Actually,

756
01:00:12.239 --> 01:00:14.800
oh awesome, Yeah, I'm looking
forward to that. All right,

757
01:00:15.119 --> 01:00:17.480
are you? What are your picks? So I've got one pick, which

758
01:00:17.559 --> 01:00:22.920
is going to be pretty alien for
I think most people in America, but

759
01:00:22.039 --> 01:00:27.239
it's a thing that's happening in America. The Cricket twenty twenty World Cup starts

760
01:00:27.239 --> 01:00:32.400
on Saturday in the United States and
West Indies and the first match is USA

761
01:00:32.480 --> 01:00:38.360
VERSUS Canada and Dallas, Texas.
I know cricket's not a thing at all

762
01:00:38.400 --> 01:00:45.519
in America, but given that the
World Cup's happening there, and it's shortened

763
01:00:45.519 --> 01:00:46.880
the form of the game. I
mean, the traditional form lasts for five

764
01:00:46.960 --> 01:00:52.719
days and only muppets like me enjoy
that, but this is more like it's

765
01:00:52.719 --> 01:00:57.119
a three and a half hour vision, way more fast paced. And I'm

766
01:00:57.159 --> 01:01:00.880
aware of the popularity of another spot
in America, which involves throwing a hard

767
01:01:00.920 --> 01:01:05.639
ball and whacking it with the wooden
stick and then chasing it around, and

768
01:01:05.639 --> 01:01:07.920
cricket is basically the same thing.
It's also chucking the hardball, whacking it

769
01:01:07.920 --> 01:01:14.239
with the wooden stick and then chasing
it around. So yeah, I don't

770
01:01:14.239 --> 01:01:19.639
know if you're vaguely interested. Cricket
World Cup starts on Saturday in America and

771
01:01:19.960 --> 01:01:23.159
the biggest, I think one of
the most valuable sporting events in the world

772
01:01:23.239 --> 01:01:29.760
is India versus Pakistan at cricket and
that's happening in New York City. They've

773
01:01:29.840 --> 01:01:35.360
built like a temporary stadium in Central
Park which can hold something like kind of

774
01:01:35.400 --> 01:01:40.039
twenty five thirty thousand people or something
like that, and it's primarily built for

775
01:01:40.159 --> 01:01:45.519
the India verus Pakistan matches, like
the flagship match, and they wanted to

776
01:01:45.559 --> 01:01:49.880
have that in America. So that'll
be interesting to see how that goes.

777
01:01:49.960 --> 01:01:53.480
But yeah, that's my pick cool. And by cool, I mean it's

778
01:01:53.719 --> 01:01:58.880
cricket. But okay, well,
I mean, I mean, you like

779
01:01:58.960 --> 01:02:00.960
baseball out there in America. I
mean, crickets are not that different.

780
01:02:01.519 --> 01:02:07.760
I don't follow baseball. So it's
funny because this seems to be like a

781
01:02:07.719 --> 01:02:12.960
new, like recurring thing because I
know, like I was in Nashville and

782
01:02:12.639 --> 01:02:16.760
they had like a you know,
not the World Cup, but they had

783
01:02:16.800 --> 01:02:24.920
like an international soccer event like where
they built, uh, you know about

784
01:02:24.920 --> 01:02:28.920
all the locals you know that you
talk to, oh, like you know

785
01:02:28.960 --> 01:02:30.880
what's happening down there, and they, you know, they're like some soccer

786
01:02:30.920 --> 01:02:37.000
thing. I don't know, but
but you know, it was packed.

787
01:02:37.039 --> 01:02:43.480
It was like, this is funny, Yeah it is. I'd be I'd

788
01:02:43.519 --> 01:02:46.159
be really curious to know, like
when that India Pakistan match happens in New

789
01:02:46.239 --> 01:02:51.639
York. I think it's just gonna
be largely immigrants from those two countries.

790
01:02:52.159 --> 01:02:57.840
I'd be absolutely astonished. And there
are any like Americans there? All right,

791
01:02:59.360 --> 01:03:05.119
Hey, look there three Americans in
here. All right, all right,

792
01:03:05.159 --> 01:03:07.639
I'm gonna put out a couple of
picks. So I was doing a

793
01:03:07.639 --> 01:03:10.519
board game pick. The one that
I've been playing lately is Legendary, Marvel

794
01:03:10.599 --> 01:03:17.599
Legendary. It's I've picked it before, but the other day we were playing

795
01:03:17.639 --> 01:03:22.079
with one of the expand we have
like six or seven of the expansions,

796
01:03:22.320 --> 01:03:29.679
and the one that we were playing
was the World War Hulk expansion, and

797
01:03:30.320 --> 01:03:35.559
so Legendary has a board game geek
weight of two point four to three.

798
01:03:36.079 --> 01:03:40.639
So it's you know, people can
pick it up not terribly outside the range

799
01:03:40.679 --> 01:03:45.920
of you know, what you'd expect
from a competitive game. The World War

800
01:03:46.000 --> 01:03:50.440
Hulk Expansion has a board game Geek
weight of two point three to three,

801
01:03:50.760 --> 01:03:57.400
so it's slightly less complicated than regular
Legendary And uh yeah, I mean it's

802
01:03:57.400 --> 01:04:01.039
comic book characters, right, So
you you have comic book heroes you recruit,

803
01:04:01.119 --> 01:04:04.400
and then you have comic book villains
that you're trying to defeat, and

804
01:04:04.440 --> 01:04:10.599
they have some scheme that they're trying
to accomplish, and so you're playing against

805
01:04:10.679 --> 01:04:14.599
the game. And anyway, it's
really fun. I really enjoy it.

806
01:04:14.599 --> 01:04:18.719
It is a collaborative game, deck
building game. And so I'm gonna I'm

807
01:04:18.719 --> 01:04:23.679
gonna pick that a couple of other
things that I'm gonna pick really quickly.

808
01:04:23.719 --> 01:04:27.199
I don't know if I picked vat
ruby yesterday we talked a lot a little

809
01:04:27.199 --> 01:04:32.440
bit about Webpacker here, but I've
been using vat Ruby and I'm liking it.

810
01:04:32.519 --> 01:04:36.000
Is it blast me to say that
I like it better than h Important

811
01:04:36.000 --> 01:04:42.719
Maps and prop Shaft anyway, No, it's not really. I haven't used

812
01:04:42.719 --> 01:04:45.800
reeat, but I mean important Maps
and yes, but they're all quite frustratings.

813
01:04:45.840 --> 01:04:48.760
I wouldn't be surprised. Yeah,
there's a tool that does something better

814
01:04:48.800 --> 01:04:53.440
than them. Yeah, vat is
like magic, and I get the hot

815
01:04:53.440 --> 01:04:57.199
module reloading that I want and everything
else out of it. So I'm pretty

816
01:04:57.239 --> 01:05:02.559
happy with it. And this setup
wasn't heinous, so I'm gonna pick that.

817
01:05:02.679 --> 01:05:08.559
I'm also gonna pick another gem at
standard RB, which is the It's

818
01:05:08.599 --> 01:05:15.760
a I think it's built on top
of rubocop, but it essentially just does

819
01:05:15.800 --> 01:05:21.360
your linting on your Ruby and it
just follows a set like. You can't

820
01:05:21.400 --> 01:05:27.639
configure it. It just gives you
your linting, which honestly, I don't

821
01:05:27.639 --> 01:05:30.119
want to make those decisions, right, So I've been pretty happy with that

822
01:05:30.159 --> 01:05:38.000
as well. And then yeah,
I guess the last pick is just Ruby

823
01:05:38.000 --> 01:05:42.320
Geniuses. Go check it out rubygeniuses
dot com. I'm still kind of bolting

824
01:05:42.360 --> 01:05:45.360
some of the pieces together, but
if you want to get together with other

825
01:05:45.440 --> 01:05:49.360
rubyists and see what they're doing and
see what's happening and get trained by people

826
01:05:49.440 --> 01:05:55.679
you know, then definitely check it
out. Yeah those are my picks.

827
01:05:57.840 --> 01:06:01.719
This is awesome, are USh?
Yeah thanks for letting me ramble on again.

828
01:06:01.760 --> 01:06:05.119
That's two weeks in a row now
it's just been me talking. That's

829
01:06:05.159 --> 01:06:13.440
all good. Yeah, Yeah,
trial by fire going on. But yeah,

830
01:06:13.480 --> 01:06:15.280
it's good fun. It's yeah,
it's just good to talk about Bridgetown

831
01:06:15.280 --> 01:06:18.800
because, honestly, I think I
just I find it a bit sad how

832
01:06:18.880 --> 01:06:23.039
few people in the Ruby community are
even aware that it exists. It's good

833
01:06:23.039 --> 01:06:25.559
to chat about it, all right, Well, so next time, folks. Maxill

