WEBVTT

1
00:00:05.679 --> 00:00:10.439
Hey, welcome back to another episode
of the Ruby Rogues podcast. This week

2
00:00:10.439 --> 00:00:15.599
on our panel we have Valentino Stole. Hey. Now we also have a

3
00:00:15.720 --> 00:00:21.239
new rogue and that is a yush
Nuatia. I hope I said that right?

4
00:00:21.839 --> 00:00:24.160
Yeah, close enough. Hello,
Hello, nice to be here.

5
00:00:25.359 --> 00:00:29.760
I'm gonna be nervous about that,
like every time anyway, honestly, don't

6
00:00:29.800 --> 00:00:35.240
care. I'm Charles Maxwood from Top
Endevs and we have a special guest this

7
00:00:35.320 --> 00:00:39.320
week that is Adrian. Adrian,
do you want to tell people who you

8
00:00:39.359 --> 00:00:45.000
are and remind him why you're so
awesome? Hey, hey, guys,

9
00:00:45.000 --> 00:00:48.759
thanks for having me. I don't
know if I'm so awesome. I try

10
00:00:48.799 --> 00:00:51.439
to be, but I know,
thank you. So. My name is

11
00:00:51.479 --> 00:00:57.200
Adrian. I'm a self thought engineer
and I'm the author of AVO. Most

12
00:00:57.240 --> 00:01:02.359
people probably know me like that,
and more recently, I'm one of the

13
00:01:02.359 --> 00:01:07.680
hosts of Friendly RB, which is
a boutique ruby conference in Bucharest, Romania,

14
00:01:07.879 --> 00:01:15.159
happening usually in September. Yeah.
Otherwise, I have one cute one

15
00:01:15.159 --> 00:01:18.640
and a half year old baby boy
and the beautiful wife and I travel to

16
00:01:18.680 --> 00:01:22.439
conferences and talk to people and try
to help. How However, I can

17
00:01:23.359 --> 00:01:26.959
nice, So yeah, let's just
dive in. We had you on to

18
00:01:27.000 --> 00:01:30.519
talk about AVO. I think what
a couple of years ago. A couple

19
00:01:30.519 --> 00:01:37.280
of years Yeah, yeah, So
I think last time a lot of the

20
00:01:37.280 --> 00:01:41.879
focus was around building like admin interfaces
and stuff. But it looks like you've

21
00:01:41.920 --> 00:01:47.560
expanded it some and you're doing some
content focused stuff. So do you want

22
00:01:47.599 --> 00:01:49.959
to just give everybody the ten thousand
foot view what AVO is, why they

23
00:01:51.040 --> 00:01:53.280
might want to use it, and
then and then we can get into the

24
00:01:53.319 --> 00:02:00.439
details on how it goes together.
Yeah. Sure. So it's three and

25
00:02:00.439 --> 00:02:04.480
a half years, it's still sometimes
difficult to tell people what AVO is.

26
00:02:05.040 --> 00:02:08.400
But what I say is like,
it's an admin panel framework, slash content

27
00:02:08.479 --> 00:02:15.120
management system, slash internal tool builder
for rubyond Rails. So it helps developers

28
00:02:15.199 --> 00:02:21.919
build Ruby on rails use their interfaces
very very fast. But it's not just

29
00:02:22.039 --> 00:02:25.319
user interfaces, so don't think of
it like a UI kit, but think

30
00:02:25.360 --> 00:02:29.879
of it with that. It has
some business logic as well, so you

31
00:02:30.039 --> 00:02:31.719
tell it something like, hey,
I have a product, and a product

32
00:02:31.759 --> 00:02:37.039
has a title and a description and
a price, and you tell it what

33
00:02:37.120 --> 00:02:40.240
kind of like attributes those are,
and AVO will read that it will create

34
00:02:40.280 --> 00:02:45.199
for you like a beautiful, crowd
like interface, a very advanced one where

35
00:02:45.199 --> 00:02:47.240
you can see all your products,
you can see details, you can sort,

36
00:02:47.400 --> 00:02:51.800
you can filter, you can apply
actions to them, and so on.

37
00:02:51.919 --> 00:02:54.719
So this is like the basic gist
of it, but it does so

38
00:02:54.719 --> 00:03:02.560
so much more than just an admin
panel framework. Okay, So when we

39
00:03:02.599 --> 00:03:05.840
talked about this, and I don't
know if I brought this up last time,

40
00:03:05.840 --> 00:03:08.599
but there are other admin panel frameworks
that are out there for Rails,

41
00:03:08.680 --> 00:03:15.680
right, yeah, I hate them
all. So I haven't tried although yet,

42
00:03:15.759 --> 00:03:20.879
so I keep wanting to, and
it's just you know, time,

43
00:03:20.960 --> 00:03:23.479
go for it. Yeah, anyway, so yeah, go for How do

44
00:03:23.520 --> 00:03:30.159
you make this not suck? Well, it's a lot of work. It's

45
00:03:30.159 --> 00:03:31.680
a lot of work, and we
did a lot of work for the past

46
00:03:31.719 --> 00:03:36.840
three years to make that a possibility. So when I started, I just

47
00:03:36.879 --> 00:03:38.800
thought about it, you know.
I saw that there were like active admin

48
00:03:38.879 --> 00:03:45.919
and Rails admin and Trestle and administrating
many others. But I think that when

49
00:03:46.000 --> 00:03:50.159
they were created, they were created
with different contexts in mind, with different

50
00:03:50.159 --> 00:03:54.080
technologies and probably different goals as well. When I started building Govel, I

51
00:03:54.199 --> 00:03:59.520
wanted from day one to be something
that you could give to your consumer.

52
00:03:59.599 --> 00:04:03.039
So something that looks good, that
works well, that has some advanced use

53
00:04:03.080 --> 00:04:11.080
cases. So it's not just a
glorified database browser. Yeah, that's what

54
00:04:11.240 --> 00:04:14.560
that's what I hate about them,
yep, I know, it's they're glorified

55
00:04:14.639 --> 00:04:20.000
database browsers. And and so what
happens is is as soon as you hit

56
00:04:20.040 --> 00:04:23.879
an edge case, and an edge
case is anything after I got against the

57
00:04:23.959 --> 00:04:27.519
four, yep, yeah, it
just gets really gross, really fast.

58
00:04:27.959 --> 00:04:31.560
Yep. I agree that That's the
feedback that I got from from everybody.

59
00:04:31.560 --> 00:04:35.439
Basically, like it helped me go
like sixty percent seventy percent of the way

60
00:04:35.680 --> 00:04:40.839
and that's easy, but then like
the rest of thirty percent that's so freaking

61
00:04:41.160 --> 00:04:44.639
you know, difficult to do and
painful, and sometimes I just abandoned the

62
00:04:44.680 --> 00:04:48.920
whole thing. And I knew about
that and I wanted so whenever you hit

63
00:04:48.959 --> 00:04:53.040
that, because it's kind of the
same WITHRA, like the first sixty seventy

64
00:04:53.079 --> 00:04:56.439
eighty, depending on the app,
sometimes you can go like ninety percent and

65
00:04:56.480 --> 00:04:59.519
it's done. O, what does
the whole work for you? But whenever

66
00:04:59.519 --> 00:05:03.240
you have that rest twenty thirty percent, what we try to do is give

67
00:05:03.279 --> 00:05:09.600
you many, many, many escape
hatches, right, so you can you

68
00:05:09.639 --> 00:05:13.480
can modify the queries, you can
modify what options are there, you can

69
00:05:13.519 --> 00:05:16.040
modify. You know, you can
bring your own frameworks inside, like for

70
00:05:16.160 --> 00:05:23.800
search or authentication authorization, and whenever
it's there's something that we cannot build for

71
00:05:23.839 --> 00:05:28.160
you or we haven't built, we
just give you like ERB partials and you

72
00:05:28.160 --> 00:05:31.920
can write your regular rails code however
you know you're used to it. So

73
00:05:32.079 --> 00:05:35.000
again, it's a lot of escape
hatches, a lot of places where it

74
00:05:35.040 --> 00:05:41.920
can come in cook into the whole
business logic that we wrote and you can

75
00:05:41.959 --> 00:05:45.639
take over or like in the worst
case scenario, you can take over like

76
00:05:45.680 --> 00:05:50.040
the HTML, the Ruby code,
JavaScript, CSS, whatever you need.

77
00:05:50.399 --> 00:05:55.639
So yeah, this is all for
you to not get stuck and not to

78
00:05:55.680 --> 00:05:59.279
feel, you know, like a
prisoner like I cannot I can build this

79
00:05:59.600 --> 00:06:05.000
or what. So I think sixty
percent is generous, But I'm just gonna

80
00:06:05.040 --> 00:06:10.839
say, so, what what does
AVO give you? Then that you know

81
00:06:10.879 --> 00:06:13.720
it's kind of the baseline case,
right, So I'm gonna plug this in

82
00:06:14.839 --> 00:06:16.879
kind of do a minimum amount of
effort? What do I get for that?

83
00:06:19.120 --> 00:06:23.519
So you get like with a minimum
amount of effort. You get like

84
00:06:23.879 --> 00:06:27.959
a crowd UI, a very advanced
one where we have for example, we

85
00:06:28.000 --> 00:06:30.959
have about thirty fields. We have
some simple ones like text, text area,

86
00:06:31.079 --> 00:06:34.439
whatever number, but we have like
the price field, which works very

87
00:06:34.439 --> 00:06:39.120
well with the money gem from Rails. We have tricks editor, tip tap

88
00:06:39.199 --> 00:06:43.800
editor. We have a key value
field where you can create like a hash.

89
00:06:43.920 --> 00:06:47.240
Inside the UI, you get access
to all of the all of Rails's

90
00:06:47.279 --> 00:06:50.879
associations like as advanced as you want
to do it, like it belongs to

91
00:06:51.000 --> 00:06:55.040
as many, hasn't belongs to many, whatever, STI whatever you need,

92
00:06:55.079 --> 00:07:00.720
polymorphic with searchable like this is a
big pain point for active many users.

93
00:07:00.879 --> 00:07:02.560
Is like if you have a belongs
to and you want to attach a user,

94
00:07:02.600 --> 00:07:05.920
but you have like millions of records, it will just jam on you.

95
00:07:06.000 --> 00:07:11.759
Like we give you that as a
searchable you know acinc kind of you

96
00:07:11.800 --> 00:07:17.160
know multi select experience. So that's
like, you know, you get quite

97
00:07:17.279 --> 00:07:24.759
quite a lot to be honest with
with AVO. Yeah, I just want

98
00:07:24.759 --> 00:07:29.040
to gush about for a bit because
I was like, I think about three

99
00:07:29.120 --> 00:07:32.759
or four weeks ago from had to
add an Aardmin panel for my client project,

100
00:07:32.920 --> 00:07:40.160
and I've actually used one before because
I think, like Charles, I

101
00:07:40.959 --> 00:07:46.879
hate I just hate them. I
prefer building my own stuff like just that

102
00:07:46.879 --> 00:07:51.319
does just exactly what I need.
But for a yeah, for a client

103
00:07:51.360 --> 00:07:56.800
project, it made sense. So
I played around with like three or four

104
00:07:56.800 --> 00:08:01.160
different options, and AVA was the
only one that to make me want to

105
00:08:01.240 --> 00:08:09.279
jump out of the window. Uh
it honestly, I yet true, But

106
00:08:09.519 --> 00:08:11.399
honestly it was. It gave me
no pain. I was up and running

107
00:08:11.399 --> 00:08:18.399
so quickly that the key value I
feel you mentioned was like a nice surprise

108
00:08:18.480 --> 00:08:22.959
because I just created a json B
field on a table I think last week,

109
00:08:24.199 --> 00:08:26.040
and I'm like, this is going
to cause me trouble in in our

110
00:08:26.079 --> 00:08:28.879
boy, isn't it. And I
got like like, no, it's not

111
00:08:28.920 --> 00:08:31.600
going to cause me any trouble.
Is It's like this amazing thing just out

112
00:08:31.600 --> 00:08:37.080
of the box. Yeah, just
the docks. I must tip my hat

113
00:08:37.120 --> 00:08:43.080
off to the quality of docs.
Like, honestly, anytime I ran into

114
00:08:43.080 --> 00:08:46.679
a problem, I just go search
the docks and it was I found what

115
00:08:46.799 --> 00:08:52.679
I need, like in seconds.
I remember I was trying to add like

116
00:08:52.720 --> 00:08:56.480
a search field, a top level
search field for an entity, and we

117
00:08:56.559 --> 00:09:03.799
had elastic search on that particular entity
for like the main the user facing app,

118
00:09:03.440 --> 00:09:09.159
and I could just hook the same
search thing into AVO with like just

119
00:09:09.440 --> 00:09:13.279
a simple block, just sart a
block in the ARVO resource pilots, like

120
00:09:13.320 --> 00:09:18.879
the analogis to the model, and
yeah, it's using the same thing as

121
00:09:18.720 --> 00:09:22.639
the user facing app. And I
was just super impressed at like every ten

122
00:09:24.200 --> 00:09:30.279
by just how customizable it was yet
how much it gave out of the box.

123
00:09:31.000 --> 00:09:35.399
So yeah, I just wanted to
gush about it because I wasn't expecting

124
00:09:35.480 --> 00:09:41.039
to be impressed by by an admin
panel because I've avoided them for a good

125
00:09:41.080 --> 00:09:45.840
reason. But I was sufficiently impressed
by AVO. Gotcha, thanks a lot,

126
00:09:45.879 --> 00:09:48.200
man, Thanks, I appreciate the
kind words. Yeah, so this

127
00:09:48.279 --> 00:09:50.080
is there are two things here.
Like one is like, okay, we

128
00:09:50.120 --> 00:09:52.919
all hate you know, the pre
made kind of things, like you know,

129
00:09:52.960 --> 00:09:58.320
the admin panels because we have maybe
like when I speak to other developers

130
00:09:58.519 --> 00:10:03.159
about that devendment and administrating rails or
whatever, they say that the experience is

131
00:10:03.200 --> 00:10:09.120
painful and we had to fight these
you know, these ideas with with AVO.

132
00:10:09.279 --> 00:10:13.120
But like the thing is, like
any piece of technology, like even

133
00:10:13.200 --> 00:10:16.879
rails, at some point it's going
to be difficult to implement something. Right,

134
00:10:16.240 --> 00:10:20.000
if it's rails, if it's like
engenets, you can zoom out or

135
00:10:20.039 --> 00:10:22.960
zoom in however much you want.
But there is a sweet spot there where

136
00:10:24.279 --> 00:10:26.919
you know you can get super fast. You can you can go go super

137
00:10:26.960 --> 00:10:31.080
far very fast, and then you
know, it's just a matter of like,

138
00:10:31.120 --> 00:10:33.759
Okay, I need to have the
proper tools and proper hooks in the

139
00:10:33.759 --> 00:10:37.919
proper you know, escape patches to
be able to build my own thing.

140
00:10:37.320 --> 00:10:41.279
So yeah, what I what I
usually So this is I think this is

141
00:10:41.320 --> 00:10:43.279
the most difficult thing that I have
to do. We have to do is

142
00:10:43.519 --> 00:10:46.519
get people to try it. I
just tell them, like, give it

143
00:10:46.519 --> 00:10:48.639
a half an hour, play with
AVO, like build something of substance half

144
00:10:48.639 --> 00:10:52.960
an hour an hour, and you'll
figure it out if it's something that you

145
00:10:52.080 --> 00:10:56.000
need or it's something that you don't
need, but you definitely know more than

146
00:10:56.159 --> 00:11:03.200
just assuming it's you know, crap. Yeah, right, so when you

147
00:11:03.240 --> 00:11:07.679
say try it, you know,
try it for a half hour. I

148
00:11:07.679 --> 00:11:11.960
guess one thing we should point out
is there is a free license for it,

149
00:11:11.240 --> 00:11:15.240
right, Yeah, so you can
go and with you know, without

150
00:11:15.360 --> 00:11:18.159
risking any money or anything else.
You can just go pick it up yep

151
00:11:18.399 --> 00:11:22.159
and so Upple comes in three flavors. It comes like the Community version,

152
00:11:22.200 --> 00:11:26.200
which is free. It probably has
sixty seventy percent of all the features.

153
00:11:26.320 --> 00:11:30.519
Like most of the work that we
do is on the free features, like

154
00:11:30.639 --> 00:11:35.879
supporting advanced educases with associations and all
kinds of crazy stuff. And then if

155
00:11:35.919 --> 00:11:39.919
you need more power, we have
the Pro and the Advanced packages tiers which

156
00:11:41.000 --> 00:11:43.000
bring you give you a little bit
more. But if you want to try

157
00:11:43.039 --> 00:11:46.039
it out, we don't have a
trial feature yet anymore. We had it

158
00:11:46.120 --> 00:11:50.480
last year, but we we we
just took it out. But like,

159
00:11:50.559 --> 00:11:54.639
if you try the free tier,
you're again you're gonna know if this is

160
00:11:54.679 --> 00:11:56.440
something right for you or not.
And if you have any questions like for

161
00:11:56.639 --> 00:11:58.840
the Pro and Advance, like hey
can I do this? Can I do

162
00:11:58.879 --> 00:12:03.559
that? Definitely reach out to us
because we like answering those questions and we

163
00:12:03.639 --> 00:12:07.960
have like proper dogs for everything,
so you will see how things work or

164
00:12:07.080 --> 00:12:11.960
don't work. So yeah, we
try to make it as self serve as

165
00:12:11.000 --> 00:12:18.799
possible. I wanted to walk through
just real quick for our listeners here because

166
00:12:20.279 --> 00:12:24.960
there are so many admin tools out
there and there is a differentiating factor here

167
00:12:24.279 --> 00:12:35.399
and that it's very like very UI
driven, so you've like definitively set how

168
00:12:35.480 --> 00:12:39.840
the UI of the admin looks like, and then you just support a DSL

169
00:12:39.200 --> 00:12:46.840
that allows you to drop in pieces
of where the admin dashboards are. And

170
00:12:46.879 --> 00:12:50.919
I think that's a definitely one of
the differentials I saw with AVO, like

171
00:12:50.960 --> 00:12:54.000
compared to any of the alternatives,
right, Like all the other alternatives either

172
00:12:54.039 --> 00:12:58.799
had like a generator like with the
administrate right where you have the view that

173
00:12:58.840 --> 00:13:05.320
you want or the dashboard manually,
and then like even active admin follows that

174
00:13:05.399 --> 00:13:09.240
process a little similarly, or you
have something completely out of the way like

175
00:13:09.360 --> 00:13:13.080
motor admin, where it's like hey, uh, you know, you throw

176
00:13:13.120 --> 00:13:16.120
everything at it and it like,
you know, you get everything, but

177
00:13:16.120 --> 00:13:20.039
it's like a little bit of a
mess, right right. I feel like

178
00:13:20.080 --> 00:13:22.799
that was a nice middle ground there
where you have like kind of this DSL

179
00:13:22.840 --> 00:13:26.639
that's just for like where to put
things in the buckets of the of the

180
00:13:26.720 --> 00:13:33.639
user interface, which I think is
really clever and so just like you know,

181
00:13:33.639 --> 00:13:37.879
how does that work? Right?
Like I sure patching like flex or

182
00:13:37.960 --> 00:13:41.360
like you know, view components or
something, right, Like, it's so

183
00:13:41.360 --> 00:13:46.120
so clean of an interface, like
I'm super curious. Okay, cool,

184
00:13:46.320 --> 00:13:50.159
So let me touch upon like our
our decision of using a DSL. So

185
00:13:50.440 --> 00:13:54.120
when you're building something like this,
you kind of have you know, like

186
00:13:54.159 --> 00:13:58.039
you said, like three ways of
doing One is you generate things. But

187
00:13:58.360 --> 00:14:03.080
we figured out quite fast that if
you generate you're going to generate views,

188
00:14:03.120 --> 00:14:05.639
or if you generate a lot of
business logic there, you're going to lose

189
00:14:05.679 --> 00:14:09.919
the ability to update. Like because
we are shipping a DSL, we were

190
00:14:11.120 --> 00:14:15.600
able to shipt so many improvements over
the time of three years, and users,

191
00:14:15.720 --> 00:14:18.879
the developers had to do just very
tiny adjustments to the DSL of the

192
00:14:20.000 --> 00:14:22.240
or the configuration. Like imagine if
you have like, you know, fifteen

193
00:14:22.360 --> 00:14:26.799
twenty resources there and at some point
we want to push you know, some

194
00:14:26.960 --> 00:14:31.360
kind of you know, breadcrumbs or
whatever drop down, you'd have to go

195
00:14:31.440 --> 00:14:35.200
into every file, every view file
and updated and make sure there are no

196
00:14:35.360 --> 00:14:39.559
conflicts and you know, maybe you
did something there. So again that's a

197
00:14:39.600 --> 00:14:43.120
little bit messy. It's not you
know, it's not for every project,

198
00:14:43.200 --> 00:14:46.399
but it's a little bit messy when
you're dealing with generated stuff. We do

199
00:14:46.480 --> 00:14:50.399
generate a few things for you,
Like we definitely we generated the configuration files

200
00:14:50.399 --> 00:14:54.120
which are the resources and actions and
some view files. Whenever you want to

201
00:14:54.159 --> 00:14:58.519
take over you want, whenever you
want to take control. But we we

202
00:14:58.639 --> 00:15:01.559
think that the DSL gives us this
power where you know, we can ship

203
00:15:01.600 --> 00:15:07.639
a lot of a lot of value
and in upgrades and so basically people buy

204
00:15:07.720 --> 00:15:11.320
one product, but after a year
you have like so many more things upon

205
00:15:11.600 --> 00:15:16.720
like new things in that product with
very minimal you know, upgrade with a

206
00:15:16.840 --> 00:15:22.559
very minimal upgrade process. And to
answer your question, how like how did

207
00:15:22.600 --> 00:15:26.759
we do it or whatever, like, I don't know. We just think

208
00:15:26.759 --> 00:15:28.879
it's the best way. But at
some point I think we're going to go

209
00:15:28.919 --> 00:15:33.399
a little bit down that route where
you know, you push some code there

210
00:15:33.480 --> 00:15:39.759
like with with configuration, but we
will give you the or give your users

211
00:15:39.759 --> 00:15:43.919
the ability to add some things in
the UI when in like in your production

212
00:15:43.000 --> 00:15:48.399
application, for example, we have
this cool feature called scopes. So you

213
00:15:48.480 --> 00:15:50.720
go on the user's page, but
you have like tiny tabs on the right

214
00:15:50.759 --> 00:15:54.320
where you can say, okay,
give me the just the admin users or

215
00:15:54.440 --> 00:15:58.080
just the non admin or whatever users
were doing. This is still driven by

216
00:15:58.120 --> 00:16:02.279
configuration. So if you want to
add another tab, you have to generate

217
00:16:02.360 --> 00:16:07.279
the scope in your app, commit
it, deploy it to production. But

218
00:16:07.399 --> 00:16:10.720
we would like to give it,
give you give your users the ability to

219
00:16:10.960 --> 00:16:15.200
create a filter for that, you
know, for those users for that resource,

220
00:16:15.320 --> 00:16:18.679
and say, okay, just keep
it here as a scope because I

221
00:16:18.720 --> 00:16:22.240
want to have it, you know, very I want to have it very

222
00:16:22.240 --> 00:16:26.559
handy here. But and this is
going to require us to do some upgrades

223
00:16:26.600 --> 00:16:32.519
and to figure out a way to
make it beautiful and nice and good experience

224
00:16:32.559 --> 00:16:36.960
as it was as it is right
now. And but this is coming somehow.

225
00:16:37.120 --> 00:16:41.320
I think this is the next iteration
of and the configuration having that.

226
00:16:42.480 --> 00:16:47.879
So you mentioned upgrades, and I'm
always curious, is I know upgrading is

227
00:16:47.879 --> 00:16:51.879
always painful no matter what tool you're
using, So like what does that process

228
00:16:51.879 --> 00:16:56.080
look like? And how like how
can you like let people be at ease,

229
00:16:56.320 --> 00:17:00.279
like, oh, it's not so
bad. So we just tell them

230
00:17:00.480 --> 00:17:04.359
it's not a bundle update, So
just say bundal update, avell RO advanced

231
00:17:04.480 --> 00:17:10.039
or whatever you have. And usually
we don't have breaking changes. We do

232
00:17:10.119 --> 00:17:12.400
have sometimes we do have them,
but we have like a nice upgrade guide

233
00:17:12.480 --> 00:17:15.440
where we tell you, okay,
if you're upgrading for two fifty six to

234
00:17:15.720 --> 00:17:18.519
fifty seven. You're gonna watch out
with these two things. This is why

235
00:17:18.559 --> 00:17:22.079
we did them, this is why
it's it's it's a breaking change. This

236
00:17:22.160 --> 00:17:26.319
is what you have to do to
avoid it. So we did have like

237
00:17:26.359 --> 00:17:30.240
a lot of breaking changes going from
two to three, but that was,

238
00:17:30.279 --> 00:17:34.039
you know, a big, big
update. But usually there are there aren't

239
00:17:34.079 --> 00:17:37.599
any. And if you do bundle
updates, you sometimes get like a new

240
00:17:37.759 --> 00:17:42.960
feature or a new big feature that
you know you maybe didn't plan to build

241
00:17:44.720 --> 00:17:48.519
now but you can, but now
you have it. So the upgrades are

242
00:17:48.640 --> 00:17:56.079
quite quite painless, I would say. So I kind of want to get

243
00:17:56.079 --> 00:18:02.440
into the use case a little bit
further, because I'm kind of imagining there's

244
00:18:02.519 --> 00:18:07.440
this fuzzy line, I guess,
between what I think of as like an

245
00:18:07.440 --> 00:18:11.119
admin panel versus say, just stuff
that the user's going to use. Right,

246
00:18:11.640 --> 00:18:15.559
So if I wanted to set up
a dashboard for just a regular So

247
00:18:15.680 --> 00:18:18.160
let's say I'm building a software as
a service, Right, so they log

248
00:18:18.240 --> 00:18:21.920
in, they don't have all the
admin features, they just have the basic

249
00:18:21.920 --> 00:18:26.839
features for whatever, right, Yeah, so I can use AVO to build

250
00:18:26.839 --> 00:18:32.119
those interfaces too, Yeah, yes, so of course, so just just

251
00:18:32.200 --> 00:18:34.519
as the just to give an example. Right, So one app that I've

252
00:18:34.559 --> 00:18:41.880
been wanting to build for a while
is i want podcast guests to, you

253
00:18:41.880 --> 00:18:45.880
know, when they get an invite
to come on the show and they pick

254
00:18:45.920 --> 00:18:48.640
a day in time, then I
want, you know, zapi or something

255
00:18:48.640 --> 00:18:53.480
to hit an API and create a
form basically where they can come in.

256
00:18:53.759 --> 00:18:57.839
And I just looked up the tip
tap where you can do the synchronized editing,

257
00:18:59.119 --> 00:19:02.160
and that's the piece that I've been
trying to figure out because I don't

258
00:19:02.240 --> 00:19:07.200
want to build it myself. But
anyway, so the guests and the host

259
00:19:07.359 --> 00:19:11.480
can all use stuff that I build
in AVO, and then on the other

260
00:19:11.640 --> 00:19:15.880
end where I'm managing users and stuff
like that, same deal, right,

261
00:19:15.960 --> 00:19:18.759
I can use AVO to build that
stuff out. So it's kind of all

262
00:19:18.759 --> 00:19:25.640
of the above. Yeah, So
we have a built in authorization system that

263
00:19:25.839 --> 00:19:30.480
uses funded by default, but you
can hook up action policy which is kind

264
00:19:30.480 --> 00:19:33.440
of similar, and I think there's
a driver for can can can if you

265
00:19:33.480 --> 00:19:37.960
want to do that, and using
the authorization feature, you can tell Avo

266
00:19:38.079 --> 00:19:41.720
like, okay, this is the
kind of user that should be able to

267
00:19:41.759 --> 00:19:47.759
see the user's resource or this page
or that page, or they can create

268
00:19:47.839 --> 00:19:52.880
new ones or edit ones, and
using those funded policy methods and a few

269
00:19:52.880 --> 00:19:57.319
more that we have properly documented in
our dogs, you can tailor the whole

270
00:19:57.359 --> 00:20:00.799
experience. If you just say,
for example, like a user cannot create

271
00:20:00.839 --> 00:20:04.559
a product perfect AVO knows what to
do, it will not show them but

272
00:20:04.759 --> 00:20:08.440
create button. It will not allow
them to go to slash new, it

273
00:20:08.480 --> 00:20:14.359
will do everything. So just to
make sure that they have only the they

274
00:20:14.359 --> 00:20:17.400
have access to, only the things
that they have access to it. So

275
00:20:17.559 --> 00:20:19.559
we try to give you all of
those tools, and we have all of

276
00:20:19.559 --> 00:20:26.480
those primitives for authorizations, and you
could create two different let's say UIs or

277
00:20:26.640 --> 00:20:34.799
panels for two types of users.
That makes sense. I guess the other

278
00:20:34.880 --> 00:20:37.400
question that I have, and this
is something that I've been thinking about for

279
00:20:38.319 --> 00:20:42.920
a bit, is I've been wanting
to build specific tools for people who are

280
00:20:42.920 --> 00:20:45.519
building a software as a service,
right, And it sounds like you've got

281
00:20:45.519 --> 00:20:48.759
a lot of the things that I've
kind of been dreaming of. Okay,

282
00:20:48.720 --> 00:20:51.640
I've built this for people, but
if you built it, you know,

283
00:20:51.799 --> 00:20:53.799
it occurred to me, well,
maybe I just want to sell my own

284
00:20:53.880 --> 00:20:57.359
sort of dashboard panels or things like
that that people can stick in to an

285
00:20:57.359 --> 00:21:02.279
AVO? Is that even an option
like can you build plugins for Ovo?

286
00:21:03.359 --> 00:21:07.200
Yeah, so we do have an
API. We have built an API for

287
00:21:07.279 --> 00:21:11.480
our three. It's not very properly
documented. This is something that we wanted

288
00:21:11.519 --> 00:21:15.079
to do this year and have like
this plug in and plug in system with

289
00:21:15.200 --> 00:21:21.119
a director where people can create their
own fields or their own resource tools,

290
00:21:21.240 --> 00:21:26.400
or their own dashboard cards or whatever
other things that they're thinking about. So

291
00:21:26.440 --> 00:21:32.559
basically the plugin system will give you
access to different initialization hooks where you can

292
00:21:32.759 --> 00:21:36.839
you know, start a plug in
and inject some you know, menu items

293
00:21:36.920 --> 00:21:41.240
or like inject create a new field
and add that field there. So it's

294
00:21:41.319 --> 00:21:48.839
not a very rich and what it
called environment plug in environment, but if

295
00:21:48.880 --> 00:21:52.160
you do want to build something like
that, reach out to us because we

296
00:21:52.319 --> 00:21:56.880
love talking about that and we love
supporting that. Yeah, and and speaking

297
00:21:56.880 --> 00:22:00.839
about this like this is another thing
that people get when they use of On,

298
00:22:02.279 --> 00:22:06.880
especially like the customers that you know
get like the pro advanced license,

299
00:22:07.079 --> 00:22:11.000
and not only those like even the
people people. We have a discourse server,

300
00:22:11.079 --> 00:22:14.240
we have a GitHub repo and whenever
somebody comes in and says, hey,

301
00:22:14.279 --> 00:22:18.079
I have this use case that you
know AVO doesn't know work for us,

302
00:22:18.160 --> 00:22:21.720
or it can't do something because it
does happen, Like you can build

303
00:22:21.799 --> 00:22:25.599
software in so many ways. When
they when that happens, like we try

304
00:22:25.640 --> 00:22:30.720
to make sure that one we build
it for them, or two we give

305
00:22:30.880 --> 00:22:34.039
them the proper hooks for them to
build it. For example, like the

306
00:22:34.160 --> 00:22:38.680
attached the attached scope. So whenever
you have like it has many and one

307
00:22:38.799 --> 00:22:45.440
attach a user or something to a
different record. They wanted just some records

308
00:22:45.440 --> 00:22:48.559
to appear, not others, and
said, that's perfect, that makes sense.

309
00:22:48.799 --> 00:22:51.839
Let us build it for you.
And in about a week we just

310
00:22:51.880 --> 00:22:55.400
deployed a new version and they had
it. So again like if there's anything

311
00:22:55.599 --> 00:22:59.079
we try to do this, you
know, relationship between us, Like if

312
00:22:59.079 --> 00:23:03.079
it's anything that work or whatever,
we either build it for you or we

313
00:23:03.200 --> 00:23:06.680
give you the tools and the hooks
to be able to do that thing.

314
00:23:06.759 --> 00:23:08.759
Which you know, sometimes with other
tools, and I'm not talking to admin

315
00:23:08.799 --> 00:23:12.119
pals, but sometimes with other tools, you would pay anything for somebody to

316
00:23:12.160 --> 00:23:15.839
listen to you. You know,
when you're using a GEM or a jazz

317
00:23:15.839 --> 00:23:18.480
plug in and you're stuck and nobody
listens to you, like come on,

318
00:23:18.640 --> 00:23:22.319
man, I need I need some
help, you know, So, yeah,

319
00:23:22.319 --> 00:23:29.480
this is what we're trying to do
with with with our and everything.

320
00:23:30.720 --> 00:23:33.799
I just want to talk about the
business model a little bit because I think,

321
00:23:33.920 --> 00:23:38.440
yes, Sidekick, I think is
the most famous probably a product that

322
00:23:40.039 --> 00:23:45.039
kind of follows this business model.
So how did you decide that you're gonna

323
00:23:45.240 --> 00:23:48.799
do this community version for free which
is open source, and then the paid

324
00:23:48.880 --> 00:23:55.319
version on top? How do you
decide which features going in free and which

325
00:23:55.359 --> 00:23:59.960
features are paid? And then finally, just can you talk about the technical

326
00:24:00.039 --> 00:24:04.559
side of how do you actually distribute
a gem that isn't free? Yeah?

327
00:24:04.640 --> 00:24:10.480
Gotcha? So how did I decide
that? Was Like when I started with

328
00:24:10.599 --> 00:24:12.960
Avo, I didn't mean to build
a business. I just want to see

329
00:24:14.079 --> 00:24:15.599
first if I can build it,
because that was amazing. I love admin

330
00:24:15.640 --> 00:24:19.279
panels. I built a lot of
those and internal tools, and I wanted

331
00:24:19.279 --> 00:24:22.200
to see if you can build it, and then I said, okay,

332
00:24:22.240 --> 00:24:25.119
I want to sell it. I
think at first I just wanted to sell

333
00:24:25.119 --> 00:24:29.240
it for money, so it wasn't
on Ruby gems or whatever. But then

334
00:24:29.319 --> 00:24:32.640
I figured out and by speaking to
people like, hey, nobody's going to

335
00:24:32.759 --> 00:24:34.880
use it if they can't try it, and that's true. Like if you

336
00:24:34.960 --> 00:24:40.079
cannot you know, test it out
a little bit, it's you're not going

337
00:24:40.160 --> 00:24:41.480
to choose it, you know,
not gonna buy it from just a few

338
00:24:41.559 --> 00:24:47.160
images or videos. So how I
you know, how I got to like

339
00:24:47.359 --> 00:24:51.480
free and paid? You know,
everybody will probably sidekick like like you said,

340
00:24:51.519 --> 00:24:55.079
like I saw Sidekick and other products
and okay, there's a free version

341
00:24:55.079 --> 00:24:56.880
perfect, I'll use this one,
and there's a paid version, which is

342
00:24:57.480 --> 00:25:03.279
the other one. How do we
choose which features go where? It's not

343
00:25:03.599 --> 00:25:07.160
an exact science. It's a mix
of how much it takes us to build

344
00:25:07.200 --> 00:25:11.240
them, how much it takes us
to maintain them, or how much we

345
00:25:11.319 --> 00:25:14.759
think it's going to take to maintain
us maintain it, and a little bit

346
00:25:14.799 --> 00:25:18.400
of how much value value they add. Right for example, like the dynamic

347
00:25:18.519 --> 00:25:25.759
filters where you have like stripe styled
pills where you can go and you just

348
00:25:25.799 --> 00:25:29.319
go on a field like price and
say filterable true, perfect, that's it.

349
00:25:29.599 --> 00:25:32.160
That's all we have to do as
a developer. And then in the

350
00:25:32.279 --> 00:25:33.799
UI you're going to get like a
drop down and say okay, filter by

351
00:25:33.799 --> 00:25:37.920
price, and you're going to have
like a nice pill and say I want

352
00:25:37.960 --> 00:25:41.279
it more than this price or less
or between or whatever. So that's like

353
00:25:41.319 --> 00:25:45.359
a very powerful feature which we spend
I don't know, I think three months

354
00:25:45.440 --> 00:25:48.720
building it or four months or something
like that. If you wanted to build

355
00:25:48.720 --> 00:25:53.680
it in house with your team,
you got to have the first of all,

356
00:25:53.720 --> 00:25:57.319
a product person that knows what they
want to build. You got to

357
00:25:57.359 --> 00:26:02.400
have a designer to design it.
You have a front end person, so

358
00:26:02.519 --> 00:26:06.079
somebody that knows how to build that. Because most or I don't want to

359
00:26:06.119 --> 00:26:08.640
say most teams, but some teams
only have like back end developers. So

360
00:26:08.799 --> 00:26:11.599
you see, it's like this whole
You need a whole team to build a

361
00:26:11.640 --> 00:26:15.079
feature like that, or you can
pay something like, you know, a

362
00:26:15.240 --> 00:26:19.640
fraction of what you would pay for
that team to build it for AVO and

363
00:26:19.720 --> 00:26:25.000
get so so much more. That's
kind of our value proposition instead of,

364
00:26:25.079 --> 00:26:29.720
you know, having teams build certain
features for you, you kind of have

365
00:26:29.839 --> 00:26:36.319
them whatever. Nice. Yeah,
that makes perfect sense. Kind of.

366
00:26:37.119 --> 00:26:38.119
I did think it would be a
bit of an art because there's not like

367
00:26:40.119 --> 00:26:42.400
rualized too. This is free the
spirit. It tends to be a bit

368
00:26:42.440 --> 00:26:48.279
of disenterition and stuff. Yeh.
Yeah, And again, like most of

369
00:26:48.319 --> 00:26:51.480
the work we do we do want
the free features, Like you're not gonna

370
00:26:51.519 --> 00:26:55.200
believe how much because we want to
support so many things. But right now,

371
00:26:55.759 --> 00:27:00.720
yeah, do you have a like
transfer a feature from paid to free

372
00:27:00.759 --> 00:27:04.839
like with an upgrade because you're like
building a lot of new features that are

373
00:27:04.880 --> 00:27:08.279
paid, do you ever say this
feature maybe we can now give it for

374
00:27:08.279 --> 00:27:12.559
free as well? Yeah, we
did do that. So when we jumped

375
00:27:12.599 --> 00:27:18.400
for from Other two, you know, from Other one to two or from

376
00:27:18.400 --> 00:27:19.880
two or whatever I wanted to do, or two to three. I don't

377
00:27:19.880 --> 00:27:25.480
know, something like eight features from
pro we just made them free. It

378
00:27:25.559 --> 00:27:30.559
was like custom fields, custom everything, I think, translations, something about

379
00:27:30.640 --> 00:27:34.480
search, like a lot of things
we just made for free because it was

380
00:27:34.559 --> 00:27:40.279
kind of difficult to try to support
them as paid and make people, you

381
00:27:40.319 --> 00:27:44.400
know, kind of like check if
the person has a paid license or not

382
00:27:44.519 --> 00:27:45.960
or whatever. Some of them were
just because it was easier for us,

383
00:27:47.160 --> 00:27:51.119
and some of them because they really
made sense. It really made sense for

384
00:27:51.200 --> 00:27:56.279
us to give it away for free. So most of the features went downstream

385
00:27:56.319 --> 00:28:00.440
from paid to free. Only we
only had like one time, the feature

386
00:28:00.480 --> 00:28:03.240
that went from Pro to Advance because
we made it so much bigger. It

387
00:28:03.319 --> 00:28:07.240
was released as a Betha to see
people are going to use it. It

388
00:28:07.279 --> 00:28:08.440
was good. So we said,
okay, we're gonna build this whole thing

389
00:28:08.480 --> 00:28:12.480
about around it, and that was
moved to advance. But again, like

390
00:28:12.519 --> 00:28:18.039
we're developers, we don't have any
VC money. We're not in this business

391
00:28:18.119 --> 00:28:23.039
of, you know, trying to
squeeze every little dollar and penny from everybody.

392
00:28:23.279 --> 00:28:29.319
We know how difficult it is when
you're starting out and somebody just saying,

393
00:28:29.359 --> 00:28:30.480
Okay, this is going to be
paid from now on, you're going

394
00:28:30.559 --> 00:28:33.960
to have to We don't want to
do that, but not in that we

395
00:28:34.000 --> 00:28:37.960
want to help you guy. So
yeah, we haven't done that. Yeah,

396
00:28:38.039 --> 00:28:40.799
now that's good. Like, yeah, well, one of the things

397
00:28:40.799 --> 00:28:44.960
that kind of gave me confidence we
use on this project was that I knew

398
00:28:45.000 --> 00:28:48.799
that you want VC backed or anything. You were just in deed developers just

399
00:28:48.880 --> 00:28:52.839
like me. So I knew that
I wasn't going to get messed over by

400
00:28:53.400 --> 00:28:59.359
the usual VC tactics. So,
like, how do you handle the paid

401
00:28:59.480 --> 00:29:04.920
distribute of the gems because you ever
used like three gems off Ruby gems,

402
00:29:06.119 --> 00:29:08.960
Like, if someone's paying, how
do you kind of what the technical side

403
00:29:10.000 --> 00:29:15.160
of distributing that? So In the
beginning with other one and two, we

404
00:29:15.240 --> 00:29:18.599
had everything on GitHub in one repository, so if you were a little bit

405
00:29:18.640 --> 00:29:22.440
savvy, you could go in and
say falls to through whatever and you say,

406
00:29:22.440 --> 00:29:26.440
okay, I have the license for
fee and whatever. And we knew

407
00:29:26.440 --> 00:29:29.960
that some people were going to do
that and whatever. It was all good.

408
00:29:30.000 --> 00:29:32.920
It kind of helped us with the
traction. We wanted to get it

409
00:29:33.160 --> 00:29:36.759
in front of people to get feedback
and see like do you really need this?

410
00:29:37.000 --> 00:29:40.160
Is this something that you you know? Does it help you that much?

411
00:29:40.640 --> 00:29:42.680
So in the beginning we just had
that and we were pushing all the

412
00:29:42.680 --> 00:29:47.039
features in one gem and you only
had like one license kee that would check

413
00:29:47.200 --> 00:29:53.799
on run time if it's a valid
license or not. Now with about three

414
00:29:53.839 --> 00:30:00.000
we broke it up into multiple gems
a little bit. We did that because

415
00:30:00.119 --> 00:30:04.039
we wanted to keep some gems hidden
like behind the paywall, and because it

416
00:30:04.160 --> 00:30:08.160
made sense we had too many things
in the main repot. And what we

417
00:30:08.279 --> 00:30:12.160
do now is we have I think
six or seven gems in total, and

418
00:30:12.640 --> 00:30:15.240
when you want to install it,
you got to have if you want to

419
00:30:15.279 --> 00:30:19.759
install those behind the paywall, you
got to have a gem server token.

420
00:30:19.920 --> 00:30:26.240
So basically you still use sorry,
you still use a gem file and Bundler

421
00:30:26.279 --> 00:30:32.000
and the bundler kind of you know, infrastructure, but instead of asking for

422
00:30:32.119 --> 00:30:36.960
a gem from Ruby gems, you're
asking it from our private repository, and

423
00:30:37.039 --> 00:30:44.119
our private repository uses Bundler authenticated,
the authentication feature, and it will lasts

424
00:30:44.119 --> 00:30:47.799
like do you have a token?
And we will check right very quickly,

425
00:30:47.839 --> 00:30:51.000
like is this token still valid?
Can they use this version? And so

426
00:30:51.079 --> 00:30:56.200
on? So basically you still use
gem files, but you get does the

427
00:30:56.240 --> 00:30:57.480
same thing, doesn't it? Yeah? Yeah, yeah, yeah, yeah

428
00:30:57.559 --> 00:31:02.839
yeah. They have their own private
server. What are you serving the gems

429
00:31:02.880 --> 00:31:07.319
with? Because I know there are
a couple of private gem server systems out

430
00:31:07.319 --> 00:31:11.720
there. I just built my own, I know, I know. So

431
00:31:11.839 --> 00:31:15.359
there were a few gem in a
box and a few others, but I

432
00:31:15.400 --> 00:31:21.039
couldn't I couldn't figure them out.
I'm that smart. Sorry, I couldn't

433
00:31:21.079 --> 00:31:25.119
figure them out. So I just
reversed engineers, and you know what I

434
00:31:25.160 --> 00:31:29.319
did. I set up like an
nd grock, you know, the top,

435
00:31:30.119 --> 00:31:33.680
and then I just I just pointed
bundler the gym file to that n

436
00:31:33.799 --> 00:31:37.839
rock you r l And now I
was just seeing like what what what?

437
00:31:37.960 --> 00:31:40.759
Requests do they do? Right?
What the what request does bundler do?

438
00:31:41.039 --> 00:31:44.079
And I figured it out, I
reverse engineered and I built my own so

439
00:31:44.440 --> 00:31:48.880
we're still running on that works very
very well. It's it's a Sinatra app.

440
00:31:48.200 --> 00:31:51.680
We had it on fly I own, now we have it on something

441
00:31:51.720 --> 00:31:53.799
else. But it just works very
very well. And yeah, I was

442
00:31:53.920 --> 00:31:57.119
going to ask if it was a
standalone app or if it was part of

443
00:31:57.160 --> 00:32:02.480
your monol beautiful monolith. Yeah,
no, it's just that's a Sinata app.

444
00:32:02.599 --> 00:32:06.440
I don't know why we built it
like that, but we have a

445
00:32:06.440 --> 00:32:10.599
different rails app that checks the license
keys and does the licensing and the subscriptions

446
00:32:10.640 --> 00:32:15.400
and everything else, which is a
jump startup. We're very happy with it.

447
00:32:15.160 --> 00:32:20.359
We moved fast when we when we
built, when I built it,

448
00:32:22.119 --> 00:32:24.559
you should, if you get some
time, you should really blog about what

449
00:32:24.640 --> 00:32:29.119
bundle actually does under the head because
I think that would be a fascinating blog.

450
00:32:29.160 --> 00:32:31.960
That would be so interesting. Yeah, you know how much I searched

451
00:32:32.039 --> 00:32:37.079
for that information, Like, there's
no information anywhere. What happens? Why

452
00:32:37.119 --> 00:32:40.880
does the why does it go to
the version's route? Why does I don't

453
00:32:40.880 --> 00:32:45.000
know? So, yeah, I
think I should have written that back in

454
00:32:45.039 --> 00:32:46.920
the day. But I think I
still can remember a few things. If

455
00:32:46.920 --> 00:32:54.279
I if I sell it as a
premium video somewhere for seven dollars. Course,

456
00:32:54.480 --> 00:33:00.440
yeah, but if anybody, if
anybody wants that code, it's an

457
00:33:00.599 --> 00:33:04.880
ugly, stupid code that just works. I just I gave it to somebody.

458
00:33:04.960 --> 00:33:07.759
I think it was Georgia Boy who
wanted to do something with Flexui.

459
00:33:07.079 --> 00:33:10.079
But if anybody wants to just reach
out and I'll figure it out. I

460
00:33:10.079 --> 00:33:17.079
can just copypaste you that one Sinati
file that handles everything. So I'm a

461
00:33:17.079 --> 00:33:22.079
little curious how many people are using
AVO out there, because I think we

462
00:33:22.119 --> 00:33:24.920
talked about it before it was kind
of new and there were some things we're

463
00:33:24.920 --> 00:33:30.039
still kind of turning wrenches on to
make it, you know, not leak.

464
00:33:30.720 --> 00:33:34.440
And yeah, now it seems like
it's something that people go and use

465
00:33:34.480 --> 00:33:37.519
and it's fairly battle tested. So
yeah, how many people out there on

466
00:33:37.559 --> 00:33:43.279
it? So it's kind of difficult
to count. To the customer, it

467
00:33:43.319 --> 00:33:45.920
seems straightforward, but it's difficult because
you know, they get doubled in stripe

468
00:33:45.920 --> 00:33:50.599
whatever, they get more accounts.
It's about I think two hundred two hundred

469
00:33:50.640 --> 00:33:53.720
and something customers paying customers that we
have right now. I don't have the

470
00:33:53.799 --> 00:34:00.400
usage numbers, but we definitely I
think all throughout this whole time of three

471
00:34:00.480 --> 00:34:06.400
years when we built it and we
got some more trust and street credibility from

472
00:34:06.480 --> 00:34:10.960
the community. Like before, I
was going on calls with customers or potential

473
00:34:10.960 --> 00:34:15.800
customers, and they were asking me
plainly, like what happens if you go

474
00:34:15.920 --> 00:34:20.679
under what happens if you don't want
to build this anymore, which is a

475
00:34:20.719 --> 00:34:23.400
fair and valid question. Maybe it's
a little bit rude to ask it just

476
00:34:23.440 --> 00:34:28.800
like that, but whatever, it's
a fair question. And yeah, we

477
00:34:28.840 --> 00:34:31.320
don't get those questions anymore. Right
now. We're a team of three people,

478
00:34:34.000 --> 00:34:37.719
Gabriel being like the third, you
know, junior developer that we hired.

479
00:34:37.800 --> 00:34:42.840
Paul was the first. We're three
people working on this almost full time

480
00:34:42.880 --> 00:34:45.599
everybody. I do a little bit
less engineering now than before. Paul is

481
00:34:45.719 --> 00:34:52.639
very good with that. I'm trying
to focus on marketing and sales and thinking

482
00:34:52.639 --> 00:34:55.679
about the big picture and everything,
and of course going to conferences because this

483
00:34:55.760 --> 00:35:00.199
is what I'm doing lately. So
yeah, but we're three people. It's

484
00:35:00.199 --> 00:35:04.480
a good business we have. We
are profitable, we have a decent four

485
00:35:04.519 --> 00:35:07.800
figure m r R. Yeah,
we have a few couple of few surprises

486
00:35:07.840 --> 00:35:12.360
I can talk about right now.
But yeah, things are going well and

487
00:35:12.639 --> 00:35:16.559
we have a clear path forward.
We're providing value and yeah, it's it's

488
00:35:16.599 --> 00:35:21.559
not that shabby, you know business. You know, I don't know what's

489
00:35:21.559 --> 00:35:24.320
happening with it that that was like
one like two years ago, two and

490
00:35:24.320 --> 00:35:28.760
a half years ago when I first
talked about this. Now we're definitely going

491
00:35:28.800 --> 00:35:34.159
somewhere. Yeah, we'll say your
pricing is really reasonable, thank you all,

492
00:35:35.719 --> 00:35:37.360
I mean more more than reasonable,
to be honest, for a lot

493
00:35:38.199 --> 00:35:42.360
for a lot of businesses. It's
a very small price to pay for them.

494
00:35:42.400 --> 00:35:46.039
And interface that's really really easy to
get started with. Also, I

495
00:35:46.039 --> 00:35:52.000
would I'm curious, like I found
the templates on the site and there's only

496
00:35:52.199 --> 00:35:57.159
you know, three of them I
think solid q being one of them,

497
00:35:57.199 --> 00:36:00.039
and then bullet train and jump start
pro. Uh is just like a pattern

498
00:36:00.159 --> 00:36:08.159
you're looking to expand on or I
thought this was really interesting. Yeah,

499
00:36:08.280 --> 00:36:10.199
yeah, so there are a couple
of things. Yeah, the path,

500
00:36:10.280 --> 00:36:15.840
the templates are there, so people
that have for example jumpstart or bullet Train,

501
00:36:15.960 --> 00:36:20.480
they can install it very very quickly. But if you're starting a bullet

502
00:36:20.480 --> 00:36:22.960
Train app right now, always going
to be the default admin panel, so

503
00:36:23.000 --> 00:36:28.800
it comes shipped with bullet Train for
jumpstarts, you're going to have to run

504
00:36:28.840 --> 00:36:34.639
that template and it's going to be
okay. But I think I know where

505
00:36:34.639 --> 00:36:37.519
you're getting to. Like we are
going to try to build some kind of

506
00:36:38.199 --> 00:36:42.320
it's not starter kits, but like
imagine this. Imagine this. You want

507
00:36:42.360 --> 00:36:45.239
to build a ticketing app, right
support ticketing support app. We give you

508
00:36:45.320 --> 00:36:49.880
all the templates, like okay,
these are the models, these are the

509
00:36:49.920 --> 00:36:54.599
resources, the actions, the filters, everything you need for a regular ticketing

510
00:36:54.639 --> 00:36:58.880
app. And then you can get
those for free and you only have to

511
00:36:58.880 --> 00:37:01.880
pay for the APPA license. So
it's kind of like once, but it's

512
00:37:01.920 --> 00:37:05.960
not kind of like once, you
know. So you get those and then

513
00:37:06.000 --> 00:37:09.320
you can go and explore and update
them and add more things. But you

514
00:37:09.400 --> 00:37:13.440
get the ticketing app almost for free, let's call it, right, you

515
00:37:13.480 --> 00:37:15.440
all have to pay for the app, and then, like you know,

516
00:37:15.519 --> 00:37:19.960
there's another inventory app or whatever.
So we are thinking about these things to

517
00:37:20.239 --> 00:37:25.119
and expand into that direction. Definitely
just need some time to start building it,

518
00:37:25.400 --> 00:37:32.400
that's all. There's never enough time, right right, never, Never

519
00:37:34.800 --> 00:37:39.280
one of these things, Chuck and
I will get our internship program started and

520
00:37:39.599 --> 00:37:45.039
we can start chipping away at everybody's
side projects. Well, this particular side

521
00:37:45.079 --> 00:37:51.440
project that Adrian's talking about is essentially
what I imagined Rail's composer to be.

522
00:37:51.920 --> 00:37:58.679
So yeah, I feel that there's
a lot of movement around like new rails

523
00:37:58.800 --> 00:38:02.039
projects or kids, but not necessarily
started kids. But you know, how

524
00:38:02.199 --> 00:38:07.159
how can we start an app and
not have to add device by ourselves every

525
00:38:07.199 --> 00:38:10.400
time? And there are a couple
of things out there like regular templates,

526
00:38:10.400 --> 00:38:14.440
you know, rails bites and whatever
there are like on the other end of

527
00:38:14.480 --> 00:38:17.880
the spectrum are like jump Start and
bullet Train. But I think that people

528
00:38:17.880 --> 00:38:21.480
are kind of you know, thinking
about, hey, is there a middle

529
00:38:21.519 --> 00:38:27.400
ground somewhere or something? And it's
definitely a good question. Is that something

530
00:38:27.400 --> 00:38:34.239
that you're thinking of building that is
exactly what I'm thinking of building. That's

531
00:38:34.239 --> 00:38:37.480
great, So it's not exactly a
starter kid, Yeah, I'm looking forward.

532
00:38:37.639 --> 00:38:39.840
Yeah, I'm looking forward to see
that, to seeing that If you

533
00:38:39.880 --> 00:38:45.039
want a jam at some point,
definitely I'm open to that because, yeah,

534
00:38:45.719 --> 00:38:52.199
I think it's a there's a need
a little bit for that. Yeah,

535
00:38:52.400 --> 00:38:57.000
yeah, we should definitely talk and
hammer it out because I kind of

536
00:38:57.039 --> 00:38:59.960
miss the days of like I don't
know if you knew the site open Source

537
00:39:00.159 --> 00:39:04.960
Rails, but it was like it
was a page that just had like common

538
00:39:05.480 --> 00:39:08.599
solved problems with rails apps. And
I had like ticket mules, one of

539
00:39:08.599 --> 00:39:14.119
them for like a bug ticket tracker, or like they had all kinds of

540
00:39:14.159 --> 00:39:17.400
like popular you know, reposts that
were just like full featured apps that solve

541
00:39:17.440 --> 00:39:21.440
the specific purpose, so like Evil
would be on there as an example,

542
00:39:21.639 --> 00:39:23.440
or like for admin tools, or
I just had a bunch of them,

543
00:39:24.440 --> 00:39:29.440
and I kind of miss having that
center central resource of like Okay, here's

544
00:39:29.440 --> 00:39:32.800
a full app you could just download
and run and it like solves this problem,

545
00:39:32.960 --> 00:39:37.239
right, yeah, yep, yep, yep. Yeah. I agree,

546
00:39:37.280 --> 00:39:39.440
But you know you gotta so see, we're going back to the same

547
00:39:39.519 --> 00:39:43.679
thing. Like you know, I
hate admin panel frameworks. I wouldn't use

548
00:39:43.719 --> 00:39:49.039
them, right, I would like
to have one, but I don't trust

549
00:39:49.079 --> 00:39:52.119
it, you know. So,
but I think it's a shift. It's

550
00:39:52.119 --> 00:39:54.039
a little bit of a you know, we gotta shift our we gotta you

551
00:39:54.039 --> 00:39:58.920
know, improve ourselves and shift our
mindst I mean, I will say I

552
00:39:59.760 --> 00:40:04.599
used that site mostly to learn,
right, Like I was curious, like

553
00:40:04.639 --> 00:40:07.559
okay, well what else can I
do with rails? And I would like

554
00:40:07.599 --> 00:40:09.199
go on to that site and just
like download a new app and find a

555
00:40:09.239 --> 00:40:14.199
new feature like I didn't know existed, right, And so I feel like

556
00:40:14.199 --> 00:40:19.039
there's definitely like a you know,
is it recreational or not kind of vibe

557
00:40:19.360 --> 00:40:24.119
that's like kind of split you know, a lot of people focus. And

558
00:40:24.159 --> 00:40:28.760
so I love seeing stuff like AVO
where there's like, okay, a business

559
00:40:28.800 --> 00:40:31.840
behind it, like you're not gonna
like quit on this, right, Like

560
00:40:31.960 --> 00:40:36.760
I don't have to worry about like
it going stale as an open source project.

561
00:40:37.159 --> 00:40:40.760
Yes, So I hope that that
like idea keeps going right, like

562
00:40:42.159 --> 00:40:46.000
jumpstart rails and like bullet Train,
like these are all similar paths, right,

563
00:40:46.119 --> 00:40:51.000
Like, Okay, they've created this
thing that's very useful, and you

564
00:40:51.000 --> 00:40:53.480
know, now we can feel pretty
good that it's going to continue to be

565
00:40:53.599 --> 00:40:58.159
useful and not like break all the
time, right, Like it was definitely

566
00:40:58.199 --> 00:41:01.440
like using open source that is like
everyone's fear like how long would this last?

567
00:41:01.559 --> 00:41:05.800
Right, and the guy will just
burn out? Right, like yep,

568
00:41:05.920 --> 00:41:09.000
yep exactly. That's a huge problem
in open source and there are there

569
00:41:09.000 --> 00:41:13.320
are projects and projects. There are
some projects that you can you can call

570
00:41:13.400 --> 00:41:16.559
finished after you know, to one
week of working on it and whatever.

571
00:41:16.599 --> 00:41:21.039
It just maintain it like once a
month or something. But there are projects

572
00:41:21.039 --> 00:41:22.800
like oh, well, like you
know, because we see that in active

573
00:41:22.800 --> 00:41:28.360
admin and Rails admin and everything like
the others, people can't work like we

574
00:41:28.440 --> 00:41:31.199
were three people working at this almost
full time. Like if you're if we

575
00:41:31.199 --> 00:41:35.440
were to do this as an open
source and we have to do jobs and

576
00:41:35.480 --> 00:41:38.880
everything else, this wouldn't have work. Nobody would have anything like like this.

577
00:41:39.000 --> 00:41:43.400
So yeah, I think it's a
it's a sin. It's a sign

578
00:41:43.400 --> 00:41:47.719
of maturity from for you know,
the Rails ecosystem that it can support these

579
00:41:47.760 --> 00:41:52.159
types of projects that people, you
know, they find value in. Okay,

580
00:41:52.199 --> 00:41:54.199
I'll just pay for that instead of
you know, building it myself.

581
00:41:54.840 --> 00:41:59.559
Yeah, and see, you know, we're getting into this and you know,

582
00:41:59.639 --> 00:42:04.239
I try not to just overbearingly talk
about, you know, what I've

583
00:42:04.280 --> 00:42:07.920
been working on, but yeah,
this is where I got into it.

584
00:42:07.039 --> 00:42:10.559
Right, So you're talking about ticketing
or I'm thinking like user management or subscription

585
00:42:10.679 --> 00:42:15.400
management or you know, building in
you know, so you get the piece

586
00:42:15.400 --> 00:42:20.880
of the engine that's the stripe web
hook that everybody has to write eighteen times

587
00:42:20.960 --> 00:42:23.480
every time they build an app.
But then it connects into the rest of

588
00:42:23.480 --> 00:42:27.960
this you get in your admin panel, right. And so that's the piece

589
00:42:28.000 --> 00:42:30.840
that I'm imagining, so that if
somebody goes out and builds software as a

590
00:42:30.880 --> 00:42:36.280
service, right, they say,
okay, I want I want the subscription

591
00:42:36.400 --> 00:42:38.880
management, I want the user management, I want the you know this,

592
00:42:39.039 --> 00:42:42.320
I want that right. I want
people to be able to sign up for

593
00:42:42.360 --> 00:42:45.239
my product products. Right. So
you pull all those pieces in, you

594
00:42:45.320 --> 00:42:47.280
load them in as engines, right, or you know, you hook them

595
00:42:47.280 --> 00:42:52.360
into AVO right for the admin pieces
of those. And so maybe you're pulling

596
00:42:52.400 --> 00:42:54.639
in here's the front facing and here's
the admin facing, right, and so

597
00:42:54.679 --> 00:42:58.639
I'm gonna load both engines. I
don't know, something like that. And

598
00:42:58.920 --> 00:43:00.679
so then at the end of the
day it's like, hey, look,

599
00:43:00.719 --> 00:43:04.079
I want to build this that for
podcasters. Well, I've got the billing

600
00:43:04.119 --> 00:43:07.159
and the this and the that and
the other all set up, and I

601
00:43:07.199 --> 00:43:09.880
can get a support person to come
in and use these systems because they're already

602
00:43:09.920 --> 00:43:15.519
fleshed out. And so and then
AVO gives you the means of adding like

603
00:43:15.920 --> 00:43:17.880
custom fields and stuff like that that
give you the features that you need to

604
00:43:19.000 --> 00:43:22.880
customize it. But it's not this
overwhelming thing that you have to pull in

605
00:43:22.880 --> 00:43:25.679
in order to put out what you
really care about, which is helping the

606
00:43:25.679 --> 00:43:31.079
podcasters. Yep, yep, I
agree. It's it's always it's always a

607
00:43:32.239 --> 00:43:37.360
you know, a fine balance,
I think, because whenever you're pulling in

608
00:43:37.480 --> 00:43:39.920
you know, something like jumpstart or
bullet train, you're going to have to

609
00:43:40.000 --> 00:43:44.639
learn something or avol like even like
you're going to have to learn something about

610
00:43:44.679 --> 00:43:47.440
it, right, just a few
I don't know, there's I think there's

611
00:43:47.719 --> 00:43:52.320
there's no gem out there that will
help you like substantially and doesn't give you

612
00:43:52.400 --> 00:43:54.400
like some dogs, Okay, this
is how you do it. This is

613
00:43:54.400 --> 00:43:57.559
that. So you're going to have
to learn something. But there's like a

614
00:43:57.599 --> 00:44:01.000
fine line about yeah I need to
learn everything about it, or I just

615
00:44:01.079 --> 00:44:06.519
I can just jump on it like
this this. Yeah, And that's that's

616
00:44:06.559 --> 00:44:08.320
the other piece of that, right
is, Yeah, I don't want to

617
00:44:08.400 --> 00:44:14.159
have to go in and understand the
internals of the system. I don't want

618
00:44:14.159 --> 00:44:15.960
a clunky API. I mean,
that's my big issue with most of these

619
00:44:15.960 --> 00:44:21.760
admin panels, right, is it. It's it's got this clunky API that

620
00:44:21.920 --> 00:44:24.159
is halfway based on the database except
for when it's not. But it kind

621
00:44:24.159 --> 00:44:27.159
of is, but it shouldn't be, but it sort of will be.

622
00:44:27.880 --> 00:44:30.440
And so I have to go and
I have to figure out the ins and

623
00:44:30.480 --> 00:44:32.760
outs of why it does or doesn't
do something. And so at the end

624
00:44:32.800 --> 00:44:36.519
of the day, it took me
as long to install it as it would

625
00:44:36.519 --> 00:44:37.800
have taken me to build my own
thing, and I would have understand the

626
00:44:37.800 --> 00:44:42.639
whole my own thing, front to
back. And so you know, I

627
00:44:43.000 --> 00:44:46.000
want, hey, look, I
got all the fundamentals that I needed to

628
00:44:46.000 --> 00:44:51.440
build this app running within a couple
of days, right, and so now

629
00:44:51.480 --> 00:44:53.800
I can go in and I can
do the custom logic that hey, it

630
00:44:53.840 --> 00:44:58.840
doesn't exist this kind of a thing
for podcasters and RSS feeds or whatever the

631
00:44:58.840 --> 00:45:02.880
heck else you're going to build.
Anyway, you mentioned conferences, and you

632
00:45:04.000 --> 00:45:07.679
told us before the show that you
were working on Friendly RB. So what's

633
00:45:07.679 --> 00:45:10.960
the story there. It's in September. Yeah, are you the same word

634
00:45:12.079 --> 00:45:15.559
week as Rails World or no?
No, No, it's actually it happened

635
00:45:15.639 --> 00:45:20.079
like this last year and this year
too, is the same Like before,

636
00:45:20.159 --> 00:45:23.760
Friendly there's Uruko. Like one week
before then there's Friendly, and then one

637
00:45:23.760 --> 00:45:28.280
week after Friendly there's Rails World.
This is this is how it happened last

638
00:45:28.320 --> 00:45:30.760
year. Again this is how it
happened this year. Of course, we

639
00:45:30.880 --> 00:45:35.480
kind of court. Actually we did
coordinate, not kind of. I was

640
00:45:35.519 --> 00:45:38.960
on a manda. I wrote to
her like when are you are you still

641
00:45:39.000 --> 00:45:42.400
on that date? I want to
know because I don't want to be on

642
00:45:42.440 --> 00:45:47.000
the same week definitely, And then
I coordinated with Muhammad that will organize Uruko.

643
00:45:47.119 --> 00:45:52.440
So yeah, it's going to be
September eighteen nineteen in Bucharest, Romania.

644
00:45:52.880 --> 00:45:58.440
The weather is just perfect. We
have amazing food, amazing coffee,

645
00:45:58.480 --> 00:46:01.199
Like the Italian people told me that
we have amazing coffee everywhere. So you

646
00:46:01.239 --> 00:46:08.239
know, there's there's that stamp there
and it's a beautiful walkable city. We're

647
00:46:08.239 --> 00:46:13.800
gonna have beautiful, very nice speaker
speakers. I don't want to name drop

648
00:46:13.880 --> 00:46:17.679
the attendees, but there are great
attendees as well as I've been seeing the

649
00:46:17.679 --> 00:46:22.000
ticket sales and we have like we
have announced the first batch of speakers.

650
00:46:22.639 --> 00:46:28.400
Uh, it's gonna be Rosa Gutierrez
from thirty seven Signals. You might know

651
00:46:28.440 --> 00:46:34.519
her from the latest release of solid
que she was she built it. Uh.

652
00:46:34.599 --> 00:46:38.079
Then Nabila Yusup, which is a
software engineer from Factorial from from Spain.

653
00:46:38.440 --> 00:46:43.880
We have Stephen Markuheim, which is
the ESQ lite guy or escul like

654
00:46:44.000 --> 00:46:50.679
Jesus as Yaro Uh nicknamed him.
And we also have Tom Rossi from buzz

655
00:46:50.719 --> 00:46:52.760
Prout. If you know Tom,
you know, you know, you know

656
00:46:52.840 --> 00:46:55.800
his mile. He's gonna be He's
going to be great. And we do

657
00:46:55.880 --> 00:47:00.920
have a couple of surprises. I'm
still waiting on confirmation from people, but

658
00:47:00.639 --> 00:47:06.559
I do have a few other great
speakers incoming. And it's a it's a

659
00:47:06.559 --> 00:47:09.280
friendly it's a friendly atmosphere. It's
going to be two days, one track,

660
00:47:09.320 --> 00:47:15.280
so everybody does the same thing.
It's very loose. We do have

661
00:47:15.320 --> 00:47:17.440
a schedule, but we don't really
follow it, but it still works out

662
00:47:17.480 --> 00:47:21.119
in the end. We're going to
do some activities Like last year, I

663
00:47:21.199 --> 00:47:24.599
usually I think you remember, we
went and and did walking tours. I

664
00:47:25.159 --> 00:47:30.800
got a few guys, tourist guys, and we did walking tours through Bucharest

665
00:47:30.960 --> 00:47:34.559
and after the conference, we went
to the mountains and we did some activities

666
00:47:34.599 --> 00:47:37.320
there for a day. So it
was really cool and friendly, and a

667
00:47:37.400 --> 00:47:40.159
lot of people told me that they
made, you know, a lot of

668
00:47:40.199 --> 00:47:45.519
friends and they really enjoyed it.
So hopefully if we can keep the bar

669
00:47:45.719 --> 00:47:52.039
up this year as well. Yeah, I really, I really enjoyed last

670
00:47:52.079 --> 00:47:59.119
year. I was lucky enough to
speak last year, and yeah, everyone

671
00:47:59.199 --> 00:48:04.679
that was just super nice, and
Adrian and the rest of the organizing team

672
00:48:04.719 --> 00:48:08.119
were just really on the ball.
Like it was hard for me to believe

673
00:48:08.159 --> 00:48:13.280
it was the first year of the
conference, just given how slick it was.

674
00:48:13.320 --> 00:48:15.079
I mean, I'm sure I must
have been fires behind the scenes,

675
00:48:15.079 --> 00:48:21.079
but I never as a speaker and
attendee, I didn't see any chaos or

676
00:48:21.079 --> 00:48:25.719
anything. It was just a very
relaxed vibe. Like I'm still like fairly

677
00:48:25.880 --> 00:48:30.559
new in the Ruby community because I
only started working with Ruby about in twenty

678
00:48:30.559 --> 00:48:36.960
twenties, just when the world went
to shit, so I haven't really had

679
00:48:36.960 --> 00:48:43.679
a chance to meet many people in
the community in person. I've obviously interacted

680
00:48:43.679 --> 00:48:47.280
with people online and stuff and friendly. I were just a great place to

681
00:48:49.119 --> 00:48:53.400
meet people at kind of worked with
online and meet some new folks as well,

682
00:48:53.480 --> 00:48:59.320
and it was Yeah, the name
is pretty appropriate. I would say

683
00:48:59.320 --> 00:49:06.199
it's a good name, and it's
it's well and thank you. Yeah,

684
00:49:06.320 --> 00:49:07.960
I think the name brought to people
I don't know. I don't know.

685
00:49:09.519 --> 00:49:14.679
Yeah, it's unique, isn't it. It sounds pretty friendly to me.

686
00:49:16.320 --> 00:49:21.360
You shouldn't laugh. It only encourages
me. That was terrible. So my

687
00:49:21.480 --> 00:49:25.360
question on some of this is is
like, I've been to conferences that are

688
00:49:25.639 --> 00:49:30.320
highly technical, and then I've been
to conferences where it's, hey, look,

689
00:49:30.480 --> 00:49:32.880
you know soft skills, and we're
gonna we're gonna pat your head and

690
00:49:32.920 --> 00:49:37.360
stoke your ego and we're not gonna
get as deeply technical. And then I've

691
00:49:37.360 --> 00:49:42.679
been to other conferences where you kind
of get a mix, and then it's

692
00:49:43.159 --> 00:49:45.559
others where you know, there's a
major trend out there. So right now

693
00:49:45.599 --> 00:49:50.119
I'm talking to a lot of people
and everybody wants to learn AI and Ruby

694
00:49:50.519 --> 00:49:53.199
and so like eighty percent of the
conference is that and the other twenty percent

695
00:49:53.360 --> 00:49:59.400
is And we had some keynotes.
So if I show up, what kinds

696
00:49:59.440 --> 00:50:01.800
of talks I expecting? Or if
I fill in your CFP, what kinds

697
00:50:01.840 --> 00:50:06.000
of talks do you want me to
send you? So, first of all,

698
00:50:06.119 --> 00:50:10.599
I want everybody to write to submit
their cfps, because one of the

699
00:50:10.639 --> 00:50:15.719
things that we really want to do
one of the so we we kind of

700
00:50:15.760 --> 00:50:19.360
say we want to do two things. Bring like really known people to the

701
00:50:19.400 --> 00:50:23.239
region. Like last year we had
Chaviernia, we had Jeremy Smith from the

702
00:50:23.239 --> 00:50:28.400
States, Jason Sweat, we had
Nick like a lot of well known people

703
00:50:28.559 --> 00:50:31.199
and others in Nayushen and others that
I'm missing right now, I apologize.

704
00:50:31.519 --> 00:50:35.400
And the second thing we want to
do is bring newcomers to the stage.

705
00:50:35.559 --> 00:50:39.760
Like my first conference talk was in
twenty twenty in Rodswoff in Poland, and

706
00:50:39.840 --> 00:50:44.039
it was very difficult for me to
get there to give my first talk.

707
00:50:44.079 --> 00:50:47.360
And I know that there are so
many people that have a message, have

708
00:50:47.519 --> 00:50:52.719
something to say about it, to
say about to teach others and to speak

709
00:50:52.719 --> 00:50:57.599
about that, and we want to
do that. So everybody please submit a

710
00:50:57.639 --> 00:51:02.639
CFP regarding what are you going to
see, like we'll see this year.

711
00:51:02.800 --> 00:51:07.920
I really wanted to keep it as
balanced as possible, Like we started,

712
00:51:07.920 --> 00:51:13.440
like the first talk was Chavier telling
us about the internals of Zeitwerk, which

713
00:51:13.480 --> 00:51:16.559
are like you gotta like really scratch
your head and that breaks your brain,

714
00:51:17.079 --> 00:51:22.400
exactly right, It's so smart,
exactly definitely, I wouldn't be able to

715
00:51:22.400 --> 00:51:28.000
do what he's doing. So and
then we finished off the conference with Jeremy

716
00:51:28.119 --> 00:51:31.840
speaking about how what it is like
and how he is a good like indie

717
00:51:31.840 --> 00:51:37.400
developer and with his consultancies. And
in between we had talks. We had

718
00:51:37.400 --> 00:51:42.760
one talk about AI. Jason spoke
a little bit about how to use hgpt

719
00:51:44.239 --> 00:51:49.960
uh, and then we spoke about
we had somebody making Julian Chill made music

720
00:51:50.000 --> 00:51:53.840
with using Ruby and it was a
really cool vibe. We had somebody talk

721
00:51:53.880 --> 00:51:59.320
about how to build teams about mental
health, so to talk about mental health

722
00:51:59.599 --> 00:52:05.559
I really recommend to everyone like it
was such a great talk and so so

723
00:52:05.800 --> 00:52:10.000
well said. And then we had
some a little bit more technical, a

724
00:52:10.079 --> 00:52:14.960
little less more technical. We talked
about documentation and everything. So it was

725
00:52:15.280 --> 00:52:19.360
it wasn't like this, you know, ruby tech tech tech tech tech tech

726
00:52:19.440 --> 00:52:22.719
tech kind of conference. It's not
going to be that. If you want

727
00:52:22.760 --> 00:52:24.000
that, I'm sorry, but friend
is not. We're going to have a

728
00:52:24.039 --> 00:52:28.199
little bit of that, but we're
still going to talk about life and mental

729
00:52:28.239 --> 00:52:30.199
health and a little bit about business. This is what I'm trying to bring

730
00:52:30.280 --> 00:52:34.039
this year, a little bit more
about business and people that have done it

731
00:52:34.280 --> 00:52:38.599
and talk about open source and you
know, being doing the indie stuff.

732
00:52:39.000 --> 00:52:45.000
So yeah, it's going to be
very balanced, I would say, awesome.

733
00:52:45.599 --> 00:52:49.599
Yeah. Last year, I think
the thing I liked was it never

734
00:52:49.760 --> 00:52:53.679
got monotonous, like I tend to
get bored quite easily, and I just

735
00:52:53.800 --> 00:52:59.880
liked how we had like intense light. Then we had a completely non technical

736
00:53:00.079 --> 00:53:04.119
talk about mental health like like you
mentioned, and it was just I thought

737
00:53:04.119 --> 00:53:07.239
the flow was nice that it kept
me interested. Otherwise I just zone out

738
00:53:07.239 --> 00:53:12.800
and I get bored. Yep,
that's good because I'm the biggest twelve year

739
00:53:12.840 --> 00:53:16.320
old. My wife knows, so
if it keeps me interested, it's a

740
00:53:16.360 --> 00:53:20.679
good thing. I'm the same.
Yeah, I know, And that's what

741
00:53:20.719 --> 00:53:22.159
I wanted to do. Like,
I know there are people that just want

742
00:53:22.159 --> 00:53:24.639
to see the tech and the heart
tech and the new stuff, and I

743
00:53:24.679 --> 00:53:30.000
understand it, but I think there
are other conferences that will handle that for

744
00:53:30.239 --> 00:53:31.880
you. I want this to be
nice. I wanted to. I want

745
00:53:31.920 --> 00:53:37.000
I want people to come and then
be and you know, make friends and

746
00:53:37.440 --> 00:53:39.880
enjoy themselves and walk out and say, man, this was just perfect.

747
00:53:40.039 --> 00:53:45.119
I love it. And yeah,
well, and you get to go to

748
00:53:45.119 --> 00:53:52.840
Budapest. It's bukerees Charles's caress.
It's okay, It's okay. When when

749
00:53:52.880 --> 00:53:57.039
big stars come and like I think
you know a c DC or Metallica when

750
00:53:57.039 --> 00:54:00.159
they came, they come to Bucharest
and say hello Budapest and the other way

751
00:54:00.159 --> 00:54:04.440
around. So it's okay. I'm
sorry, Nories worries. Bucharous is beautiful.

752
00:54:04.480 --> 00:54:07.760
Really I need to change my back
background to the Cone of Shame or

753
00:54:07.800 --> 00:54:13.480
something. It's okay, it's all
good, awesome, Well, we're kind

754
00:54:13.480 --> 00:54:16.559
of getting toward that hour that we
usually aim for. Is there anything else

755
00:54:16.559 --> 00:54:22.119
that people ought to know about AVO
or Friendly RB? Nothing? Much like

756
00:54:22.159 --> 00:54:25.039
with AVO, I know there are
trust issues, but just give it a

757
00:54:25.079 --> 00:54:29.599
try thirty minutes an hour and you'll
figure it out. If if it's not

758
00:54:29.719 --> 00:54:32.679
for you, I'm all good.
But more importantly, like, let's let's

759
00:54:32.760 --> 00:54:38.920
get to hang out at Friendly and
other events as well. But we're gonna

760
00:54:38.920 --> 00:54:44.400
try and host you very very well
in Bucharest in September. So if you

761
00:54:44.440 --> 00:54:47.840
want to do like a trip and
visit Eastern Europe, this is the perfect

762
00:54:49.000 --> 00:54:53.360
perfect occasion. Awesome, all right, Well, let's do our picks and

763
00:54:53.400 --> 00:55:00.039
then we'll wrap this sucker up.
Adrian, one more thing before we go

764
00:55:00.039 --> 00:55:02.679
wind picks. How do people find
you online if they're like I like Adrian

765
00:55:02.719 --> 00:55:07.239
and I want to talk to them? Yep, So I am Adrian the

766
00:55:07.400 --> 00:55:10.119
Dev, Adrian the Dev almost everywhere, like on Twitter, on GitHub,

767
00:55:10.119 --> 00:55:15.440
I have Adrian the Dev as well. Uh. It's avo HQ dot io

768
00:55:15.800 --> 00:55:20.519
or avo dot cool that's the domain
name avo dot cool uh and friendly rb

769
00:55:20.679 --> 00:55:23.159
dot com. But Adrian the Dev. You just search Adrian novel and for

770
00:55:23.199 --> 00:55:29.920
sure gonna find me. I'm on
discord email. Everything awesome, all right,

771
00:55:30.880 --> 00:55:32.840
Valentino, Why don't you start us
off with our picks? Sure?

772
00:55:34.360 --> 00:55:39.840
Uh? Yeah, So I'm I'm
building more and more of this little hardware

773
00:55:39.880 --> 00:55:46.880
called Adieu I gonna do. But
it's a you know, wearable AI that's

774
00:55:47.000 --> 00:55:52.800
fully open source. Uh and it
works all on device, which is pretty

775
00:55:52.800 --> 00:55:58.199
remarkable for what it is. I
highly recommend it. I finally got it

776
00:55:58.320 --> 00:56:00.800
working the other day on the device. Uh, and so I'm really excited

777
00:56:00.800 --> 00:56:06.639
to like dig in and start experimenting
with it more. So check it out.

778
00:56:06.840 --> 00:56:09.599
It's a pretty cool project. Don't
send it to m k b HD

779
00:56:09.800 --> 00:56:16.199
for a review. That's the first
person I'm sending it to. But that's

780
00:56:16.239 --> 00:56:20.880
a great milestone to have it running
under hardware. That's a that's a good

781
00:56:20.880 --> 00:56:24.840
feeling I met. Yeah, I
gotta. I got it on the Google

782
00:56:24.920 --> 00:56:30.800
Chorld device, but I have a
little Raspberry pies. I'm trying to put

783
00:56:30.800 --> 00:56:37.159
it on next just for pricing.
Okay, nice, All right, are

784
00:56:37.159 --> 00:56:40.360
you su? What are your picks? I think actually, a couple of

785
00:56:40.400 --> 00:56:43.800
weeks ago, when I was on
as a guest, I think my pick

786
00:56:44.039 --> 00:56:49.280
was avoid. I think this is
pretty serendifitent. But the next time,

787
00:56:50.920 --> 00:56:57.599
fast, I think I'm gonna go
with another music pick. There's a band

788
00:56:58.440 --> 00:57:00.119
last time i'd also done a music
pick. I'm going to stick with another

789
00:57:00.159 --> 00:57:05.039
one, the band called Big Big
Train, who I've been following for a

790
00:57:05.119 --> 00:57:07.760
number of years, and they've just
got a new album out called The Likes

791
00:57:07.760 --> 00:57:13.320
of Us, which I'm sure you'll
find wherever you get your music. But

792
00:57:14.400 --> 00:57:17.519
yeah, they're but as English a
band as it's possible to get. I

793
00:57:17.559 --> 00:57:24.920
think literally this country embodied in in
band form. But yeah, I've been

794
00:57:24.920 --> 00:57:29.920
following them for a number of years
and they're another one that I think should

795
00:57:29.960 --> 00:57:34.199
be a lot more famous than they
actually are. They do it America for

796
00:57:34.239 --> 00:57:39.440
the first time last month, so
hopefully see a bit more of that as

797
00:57:39.480 --> 00:57:43.559
time goes on. But yeah,
I can only think of the one pick

798
00:57:43.639 --> 00:57:47.039
this time. I'm going to stick
with that. Awesome, all right,

799
00:57:47.599 --> 00:57:51.679
I'm going to do mine. I
always do a board game kick pick first.

800
00:57:52.800 --> 00:57:54.880
This is a card game, and
I kind of lump them together.

801
00:57:54.960 --> 00:58:00.840
So if you're a purist, sorry, this is called Doomlings. I don't

802
00:58:00.840 --> 00:58:07.199
know if any of you guys have
played Doomlings, but Doomlings is a card

803
00:58:07.239 --> 00:58:13.280
game. It's pretty simple. You
have different color basically traits genetic traits,

804
00:58:13.960 --> 00:58:16.480
and then you have an age deck
and you go through three ages that all

805
00:58:16.559 --> 00:58:22.280
end in a catastrophe, and the
catastrophe makes you adjust your play space right,

806
00:58:22.320 --> 00:58:27.840
so you might it usually lowers your
hand limit, it might make you

807
00:58:27.880 --> 00:58:30.880
get rid of some traits. Things
like that. The different traits give you

808
00:58:30.920 --> 00:58:36.559
different points based on whatever's on the
card. And anyway, it goes pretty

809
00:58:36.559 --> 00:58:39.840
fast. You play it in like
twenty minutes. Of course, it goes

810
00:58:39.880 --> 00:58:43.519
two to six players, and I've
only played it two player with my son.

811
00:58:43.599 --> 00:58:46.559
He got it for his birthday last
year, and he wants to play

812
00:58:46.559 --> 00:58:49.360
it. I want to spend time
with him. It's a win win.

813
00:58:49.719 --> 00:58:52.360
It's like I said, it's a
pretty simple game. I've played some other

814
00:58:52.400 --> 00:58:53.440
games. I have a lot of
these elements to them that are a little

815
00:58:53.440 --> 00:59:00.360
more involved that I like better.
But if you're looking for something you can

816
00:59:00.360 --> 00:59:02.519
pick up and play with, like
a ten year old, he's twelve,

817
00:59:04.119 --> 00:59:06.920
but you know, and he but
he likes it. But I think you

818
00:59:06.920 --> 00:59:08.880
could probably go down to ten,
maybe even eight. My eight year old

819
00:59:08.960 --> 00:59:13.000
might be able to play it.
I don't know if she would get like

820
00:59:13.119 --> 00:59:16.239
how you want to play some of
the cards together to score, if that

821
00:59:16.280 --> 00:59:22.039
makes sense, but she can definitely
play it. Like the mechanics aren't that

822
00:59:22.079 --> 00:59:24.480
involved. So anyway, I'm gonna
pick Doomlings if you're looking for kind of

823
00:59:24.480 --> 00:59:28.559
that simple game and you don't like
the heavy games, or you're playing with

824
00:59:28.639 --> 00:59:32.360
kids, because I could see somebody
that just kind of likes you know,

825
00:59:32.519 --> 00:59:35.840
kind of a little bit of a
thinker. But you could still have a

826
00:59:35.840 --> 00:59:38.119
conversation with whoever you're playing with,
you know, maybe like a sushi go

827
00:59:38.239 --> 00:59:42.760
party. It's it's kind of on
that level as far as how complicated it

828
00:59:42.800 --> 00:59:46.880
is. So Doomlings and I think
there are a bunch of expansions for it

829
00:59:46.920 --> 00:59:55.800
too. So anyway, and then
I thought, my wife and I started

830
00:59:55.840 --> 01:00:00.400
a new TV show. Oh,
we were watching the new star Our Trek

831
01:00:00.440 --> 01:00:05.239
Discovery, which is the last season, and I mean, so far we've

832
01:00:05.320 --> 01:00:07.320
liked it. It's been a couple
of episodes, so obviously we don't know

833
01:00:07.920 --> 01:00:13.400
how well the story arc goes,
but it's based on an old Star Trek

834
01:00:13.400 --> 01:00:16.239
the next Generation episode for you know, kind of the thing they're trying to

835
01:00:16.280 --> 01:00:22.800
find solve whatever. So anyway,
so I'm gonna pick that Star Trek Discovery.

836
01:00:22.400 --> 01:00:25.960
And then just a quick shout out. We have been putting ads in

837
01:00:27.000 --> 01:00:31.079
the shows programmatically, so some of
them aren't always super relevant to you all.

838
01:00:32.840 --> 01:00:36.719
If you want ad free episodes,
go to Ruby Rogues dot com slash

839
01:00:36.719 --> 01:00:42.280
Premium and you can pick that up. And then I'm I'm doing calls every

840
01:00:42.280 --> 01:00:45.440
week. Now I'm going to invite
a bunch of the past guests to either

841
01:00:45.480 --> 01:00:50.199
present and or join the crew for
a little while. And so if you

842
01:00:50.239 --> 01:00:54.000
want to come have conversations about Ruby
or rails every week and hear from experts

843
01:00:54.039 --> 01:00:59.840
in the in the field, it's
Ruby Geniuses dot com so yeah, that's

844
01:00:59.840 --> 01:01:04.599
all the stuff, Adrian. What
are your picks? What? What?

845
01:01:04.599 --> 01:01:07.440
What do I get to pick an
if anything you want? I picked a

846
01:01:07.480 --> 01:01:09.599
board game, I picked a TV
show, like if there's books you like,

847
01:01:10.960 --> 01:01:15.719
you know, tech whatever, So
I'm not ready, but like I

848
01:01:15.760 --> 01:01:20.480
love my AirPods. I still think
that one of the best products Apple makes.

849
01:01:20.760 --> 01:01:24.880
These are just amazing. Speaking of
of shows, the Three Body Problem,

850
01:01:25.079 --> 01:01:30.360
that was amazing and it's very good. It's on Netflix, uh and

851
01:01:30.440 --> 01:01:36.840
something tech I. Oh, there's
a lot of talk about Kamal and deployment

852
01:01:36.960 --> 01:01:43.159
and everything else. Everybody just try
Hatchbox. If you're doing rails, try

853
01:01:43.239 --> 01:01:47.880
Hatchbox because it's like exactly what you
need. Like I was using Doku or

854
01:01:47.920 --> 01:01:52.679
something else before, but now I'm
super super happy with it. It's it's

855
01:01:52.840 --> 01:01:55.639
it's almost perfect, but it's very
very good. So yeah, yeah,

856
01:01:55.639 --> 01:02:00.000
I've been using Kamal and I love
it. But yeah yeah m hmm,

857
01:02:01.440 --> 01:02:06.360
all right, well thanks for coming, Adrian. This was a ton of

858
01:02:06.360 --> 01:02:08.599
fun. Thanks for having me,
guys. Yeah, it was it was.

859
01:02:08.679 --> 01:02:13.880
It was nice speaking about about av
and friendly and uh, seeing you

860
01:02:13.880 --> 01:02:17.599
guys again, Charles and Nayusha.
Nice meeting. Get the clients nice meeting

861
01:02:17.880 --> 01:02:25.280
Until next time. Max out h

