Hey, welcome back to another episode of the Ruby Rogues podcast. This week
on our panel we have Valentino Stole. Hey. Now we also have a
new rogue and that is a yush Nuatia. I hope I said that right?
Yeah, close enough. Hello, Hello, nice to be here.
I'm gonna be nervous about that, like every time anyway, honestly, don't
care. I'm Charles Maxwood from Top Endevs and we have a special guest this
week that is Adrian. Adrian, do you want to tell people who you
are and remind him why you're so awesome? Hey, hey, guys,
thanks for having me. I don't know if I'm so awesome. I try
to be, but I know, thank you. So. My name is
Adrian. I'm a self thought engineer and I'm the author of AVO. Most
people probably know me like that, and more recently, I'm one of the
hosts of Friendly RB, which is a boutique ruby conference in Bucharest, Romania,
happening usually in September. Yeah. Otherwise, I have one cute one
and a half year old baby boy and the beautiful wife and I travel to
conferences and talk to people and try to help. How However, I can
nice, So yeah, let's just dive in. We had you on to
talk about AVO. I think what a couple of years ago. A couple
of years Yeah, yeah, So I think last time a lot of the
focus was around building like admin interfaces and stuff. But it looks like you've
expanded it some and you're doing some content focused stuff. So do you want
to just give everybody the ten thousand foot view what AVO is, why they
might want to use it, and then and then we can get into the
details on how it goes together. Yeah. Sure. So it's three and
a half years, it's still sometimes difficult to tell people what AVO is.
But what I say is like, it's an admin panel framework, slash content
management system, slash internal tool builder for rubyond Rails. So it helps developers
build Ruby on rails use their interfaces very very fast. But it's not just
user interfaces, so don't think of it like a UI kit, but think
of it with that. It has some business logic as well, so you
tell it something like, hey, I have a product, and a product
has a title and a description and a price, and you tell it what
kind of like attributes those are, and AVO will read that it will create
for you like a beautiful, crowd like interface, a very advanced one where
you can see all your products, you can see details, you can sort,
you can filter, you can apply actions to them, and so on.
So this is like the basic gist of it, but it does so
so much more than just an admin panel framework. Okay, So when we
talked about this, and I don't know if I brought this up last time,
but there are other admin panel frameworks that are out there for Rails,
right, yeah, I hate them all. So I haven't tried although yet,
so I keep wanting to, and it's just you know, time,
go for it. Yeah, anyway, so yeah, go for How do
you make this not suck? Well, it's a lot of work. It's
a lot of work, and we did a lot of work for the past
three years to make that a possibility. So when I started, I just
thought about it, you know. I saw that there were like active admin
and Rails admin and Trestle and administrating many others. But I think that when
they were created, they were created with different contexts in mind, with different
technologies and probably different goals as well. When I started building Govel, I
wanted from day one to be something that you could give to your consumer.
So something that looks good, that works well, that has some advanced use
cases. So it's not just a glorified database browser. Yeah, that's what
that's what I hate about them, yep, I know, it's they're glorified
database browsers. And and so what happens is is as soon as you hit
an edge case, and an edge case is anything after I got against the
four, yep, yeah, it just gets really gross, really fast.
Yep. I agree that That's the feedback that I got from from everybody.
Basically, like it helped me go like sixty percent seventy percent of the way
and that's easy, but then like the rest of thirty percent that's so freaking
you know, difficult to do and painful, and sometimes I just abandoned the
whole thing. And I knew about that and I wanted so whenever you hit
that, because it's kind of the same WITHRA, like the first sixty seventy
eighty, depending on the app, sometimes you can go like ninety percent and
it's done. O, what does the whole work for you? But whenever
you have that rest twenty thirty percent, what we try to do is give
you many, many, many escape hatches, right, so you can you
can modify the queries, you can modify what options are there, you can
modify. You know, you can bring your own frameworks inside, like for
search or authentication authorization, and whenever it's there's something that we cannot build for
you or we haven't built, we just give you like ERB partials and you
can write your regular rails code however you know you're used to it. So
again, it's a lot of escape hatches, a lot of places where it
can come in cook into the whole business logic that we wrote and you can
take over or like in the worst case scenario, you can take over like
the HTML, the Ruby code, JavaScript, CSS, whatever you need.
So yeah, this is all for you to not get stuck and not to
feel, you know, like a prisoner like I cannot I can build this
or what. So I think sixty percent is generous, But I'm just gonna
say, so, what what does AVO give you? Then that you know
it's kind of the baseline case, right, So I'm gonna plug this in
kind of do a minimum amount of effort? What do I get for that?
So you get like with a minimum amount of effort. You get like
a crowd UI, a very advanced one where we have for example, we
have about thirty fields. We have some simple ones like text, text area,
whatever number, but we have like the price field, which works very
well with the money gem from Rails. We have tricks editor, tip tap
editor. We have a key value field where you can create like a hash.
Inside the UI, you get access to all of the all of Rails's
associations like as advanced as you want to do it, like it belongs to
as many, hasn't belongs to many, whatever, STI whatever you need,
polymorphic with searchable like this is a big pain point for active many users.
Is like if you have a belongs to and you want to attach a user,
but you have like millions of records, it will just jam on you.
Like we give you that as a searchable you know acinc kind of you
know multi select experience. So that's like, you know, you get quite
quite a lot to be honest with with AVO. Yeah, I just want
to gush about for a bit because I was like, I think about three
or four weeks ago from had to add an Aardmin panel for my client project,
and I've actually used one before because I think, like Charles, I
hate I just hate them. I prefer building my own stuff like just that
does just exactly what I need. But for a yeah, for a client
project, it made sense. So I played around with like three or four
different options, and AVA was the only one that to make me want to
jump out of the window. Uh it honestly, I yet true, But
honestly it was. It gave me no pain. I was up and running
so quickly that the key value I feel you mentioned was like a nice surprise
because I just created a json B field on a table I think last week,
and I'm like, this is going to cause me trouble in in our
boy, isn't it. And I got like like, no, it's not
going to cause me any trouble. Is It's like this amazing thing just out
of the box. Yeah, just the docks. I must tip my hat
off to the quality of docs. Like, honestly, anytime I ran into
a problem, I just go search the docks and it was I found what
I need, like in seconds. I remember I was trying to add like
a search field, a top level search field for an entity, and we
had elastic search on that particular entity for like the main the user facing app,
and I could just hook the same search thing into AVO with like just
a simple block, just sart a block in the ARVO resource pilots, like
the analogis to the model, and yeah, it's using the same thing as
the user facing app. And I was just super impressed at like every ten
by just how customizable it was yet how much it gave out of the box.
So yeah, I just wanted to gush about it because I wasn't expecting
to be impressed by by an admin panel because I've avoided them for a good
reason. But I was sufficiently impressed by AVO. Gotcha, thanks a lot,
man, Thanks, I appreciate the kind words. Yeah, so this
is there are two things here. Like one is like, okay, we
all hate you know, the pre made kind of things, like you know,
the admin panels because we have maybe like when I speak to other developers
about that devendment and administrating rails or whatever, they say that the experience is
painful and we had to fight these you know, these ideas with with AVO.
But like the thing is, like any piece of technology, like even
rails, at some point it's going to be difficult to implement something. Right,
if it's rails, if it's like engenets, you can zoom out or
zoom in however much you want. But there is a sweet spot there where
you know you can get super fast. You can you can go go super
far very fast, and then you know, it's just a matter of like,
Okay, I need to have the proper tools and proper hooks in the
proper you know, escape patches to be able to build my own thing.
So yeah, what I what I usually So this is I think this is
the most difficult thing that I have to do. We have to do is
get people to try it. I just tell them, like, give it
a half an hour, play with AVO, like build something of substance half
an hour an hour, and you'll figure it out if it's something that you
need or it's something that you don't need, but you definitely know more than
just assuming it's you know, crap. Yeah, right, so when you
say try it, you know, try it for a half hour. I
guess one thing we should point out is there is a free license for it,
right, Yeah, so you can go and with you know, without
risking any money or anything else. You can just go pick it up yep
and so Upple comes in three flavors. It comes like the Community version,
which is free. It probably has sixty seventy percent of all the features.
Like most of the work that we do is on the free features, like
supporting advanced educases with associations and all kinds of crazy stuff. And then if
you need more power, we have the Pro and the Advanced packages tiers which
bring you give you a little bit more. But if you want to try
it out, we don't have a trial feature yet anymore. We had it
last year, but we we we just took it out. But like,
if you try the free tier, you're again you're gonna know if this is
something right for you or not. And if you have any questions like for
the Pro and Advance, like hey can I do this? Can I do
that? Definitely reach out to us because we like answering those questions and we
have like proper dogs for everything, so you will see how things work or
don't work. So yeah, we try to make it as self serve as
possible. I wanted to walk through just real quick for our listeners here because
there are so many admin tools out there and there is a differentiating factor here
and that it's very like very UI driven, so you've like definitively set how
the UI of the admin looks like, and then you just support a DSL
that allows you to drop in pieces of where the admin dashboards are. And
I think that's a definitely one of the differentials I saw with AVO, like
compared to any of the alternatives, right, Like all the other alternatives either
had like a generator like with the administrate right where you have the view that
you want or the dashboard manually, and then like even active admin follows that
process a little similarly, or you have something completely out of the way like
motor admin, where it's like hey, uh, you know, you throw
everything at it and it like, you know, you get everything, but
it's like a little bit of a mess, right right. I feel like
that was a nice middle ground there where you have like kind of this DSL
that's just for like where to put things in the buckets of the of the
user interface, which I think is really clever and so just like you know,
how does that work? Right? Like I sure patching like flex or
like you know, view components or something, right, Like, it's so
so clean of an interface, like I'm super curious. Okay, cool,
So let me touch upon like our our decision of using a DSL. So
when you're building something like this, you kind of have you know, like
you said, like three ways of doing One is you generate things. But
we figured out quite fast that if you generate you're going to generate views,
or if you generate a lot of business logic there, you're going to lose
the ability to update. Like because we are shipping a DSL, we were
able to shipt so many improvements over the time of three years, and users,
the developers had to do just very tiny adjustments to the DSL of the
or the configuration. Like imagine if you have like, you know, fifteen
twenty resources there and at some point we want to push you know, some
kind of you know, breadcrumbs or whatever drop down, you'd have to go
into every file, every view file and updated and make sure there are no
conflicts and you know, maybe you did something there. So again that's a
little bit messy. It's not you know, it's not for every project,
but it's a little bit messy when you're dealing with generated stuff. We do
generate a few things for you, Like we definitely we generated the configuration files
which are the resources and actions and some view files. Whenever you want to
take over you want, whenever you want to take control. But we we
think that the DSL gives us this power where you know, we can ship
a lot of a lot of value and in upgrades and so basically people buy
one product, but after a year you have like so many more things upon
like new things in that product with very minimal you know, upgrade with a
very minimal upgrade process. And to answer your question, how like how did
we do it or whatever, like, I don't know. We just think
it's the best way. But at some point I think we're going to go
a little bit down that route where you know, you push some code there
like with with configuration, but we will give you the or give your users
the ability to add some things in the UI when in like in your production
application, for example, we have this cool feature called scopes. So you
go on the user's page, but you have like tiny tabs on the right
where you can say, okay, give me the just the admin users or
just the non admin or whatever users were doing. This is still driven by
configuration. So if you want to add another tab, you have to generate
the scope in your app, commit it, deploy it to production. But
we would like to give it, give you give your users the ability to
create a filter for that, you know, for those users for that resource,
and say, okay, just keep it here as a scope because I
want to have it, you know, very I want to have it very
handy here. But and this is going to require us to do some upgrades
and to figure out a way to make it beautiful and nice and good experience
as it was as it is right now. And but this is coming somehow.
I think this is the next iteration of and the configuration having that.
So you mentioned upgrades, and I'm always curious, is I know upgrading is
always painful no matter what tool you're using, So like what does that process
look like? And how like how can you like let people be at ease,
like, oh, it's not so bad. So we just tell them
it's not a bundle update, So just say bundal update, avell RO advanced
or whatever you have. And usually we don't have breaking changes. We do
have sometimes we do have them, but we have like a nice upgrade guide
where we tell you, okay, if you're upgrading for two fifty six to
fifty seven. You're gonna watch out with these two things. This is why
we did them, this is why it's it's it's a breaking change. This
is what you have to do to avoid it. So we did have like
a lot of breaking changes going from two to three, but that was,
you know, a big, big update. But usually there are there aren't
any. And if you do bundle updates, you sometimes get like a new
feature or a new big feature that you know you maybe didn't plan to build
now but you can, but now you have it. So the upgrades are
quite quite painless, I would say. So I kind of want to get
into the use case a little bit further, because I'm kind of imagining there's
this fuzzy line, I guess, between what I think of as like an
admin panel versus say, just stuff that the user's going to use. Right,
So if I wanted to set up a dashboard for just a regular So
let's say I'm building a software as a service, Right, so they log
in, they don't have all the admin features, they just have the basic
features for whatever, right, Yeah, so I can use AVO to build
those interfaces too, Yeah, yes, so of course, so just just
as the just to give an example. Right, So one app that I've
been wanting to build for a while is i want podcast guests to, you
know, when they get an invite to come on the show and they pick
a day in time, then I want, you know, zapi or something
to hit an API and create a form basically where they can come in.
And I just looked up the tip tap where you can do the synchronized editing,
and that's the piece that I've been trying to figure out because I don't
want to build it myself. But anyway, so the guests and the host
can all use stuff that I build in AVO, and then on the other
end where I'm managing users and stuff like that, same deal, right,
I can use AVO to build that stuff out. So it's kind of all
of the above. Yeah, So we have a built in authorization system that
uses funded by default, but you can hook up action policy which is kind
of similar, and I think there's a driver for can can can if you
want to do that, and using the authorization feature, you can tell Avo
like, okay, this is the kind of user that should be able to
see the user's resource or this page or that page, or they can create
new ones or edit ones, and using those funded policy methods and a few
more that we have properly documented in our dogs, you can tailor the whole
experience. If you just say, for example, like a user cannot create
a product perfect AVO knows what to do, it will not show them but
create button. It will not allow them to go to slash new, it
will do everything. So just to make sure that they have only the they
have access to, only the things that they have access to it. So
we try to give you all of those tools, and we have all of
those primitives for authorizations, and you could create two different let's say UIs or
panels for two types of users. That makes sense. I guess the other
question that I have, and this is something that I've been thinking about for
a bit, is I've been wanting to build specific tools for people who are
building a software as a service, right, And it sounds like you've got
a lot of the things that I've kind of been dreaming of. Okay,
I've built this for people, but if you built it, you know,
it occurred to me, well, maybe I just want to sell my own
sort of dashboard panels or things like that that people can stick in to an
AVO? Is that even an option like can you build plugins for Ovo?
Yeah, so we do have an API. We have built an API for
our three. It's not very properly documented. This is something that we wanted
to do this year and have like this plug in and plug in system with
a director where people can create their own fields or their own resource tools,
or their own dashboard cards or whatever other things that they're thinking about. So
basically the plugin system will give you access to different initialization hooks where you can
you know, start a plug in and inject some you know, menu items
or like inject create a new field and add that field there. So it's
not a very rich and what it called environment plug in environment, but if
you do want to build something like that, reach out to us because we
love talking about that and we love supporting that. Yeah, and and speaking
about this like this is another thing that people get when they use of On,
especially like the customers that you know get like the pro advanced license,
and not only those like even the people people. We have a discourse server,
we have a GitHub repo and whenever somebody comes in and says, hey,
I have this use case that you know AVO doesn't know work for us,
or it can't do something because it does happen, Like you can build
software in so many ways. When they when that happens, like we try
to make sure that one we build it for them, or two we give
them the proper hooks for them to build it. For example, like the
attached the attached scope. So whenever you have like it has many and one
attach a user or something to a different record. They wanted just some records
to appear, not others, and said, that's perfect, that makes sense.
Let us build it for you. And in about a week we just
deployed a new version and they had it. So again like if there's anything
we try to do this, you know, relationship between us, Like if
it's anything that work or whatever, we either build it for you or we
give you the tools and the hooks to be able to do that thing.
Which you know, sometimes with other tools, and I'm not talking to admin
pals, but sometimes with other tools, you would pay anything for somebody to
listen to you. You know, when you're using a GEM or a jazz
plug in and you're stuck and nobody listens to you, like come on,
man, I need I need some help, you know, So, yeah,
this is what we're trying to do with with with our and everything.
I just want to talk about the business model a little bit because I think,
yes, Sidekick, I think is the most famous probably a product that
kind of follows this business model. So how did you decide that you're gonna
do this community version for free which is open source, and then the paid
version on top? How do you decide which features going in free and which
features are paid? And then finally, just can you talk about the technical
side of how do you actually distribute a gem that isn't free? Yeah?
Gotcha? So how did I decide that? Was Like when I started with
Avo, I didn't mean to build a business. I just want to see
first if I can build it, because that was amazing. I love admin
panels. I built a lot of those and internal tools, and I wanted
to see if you can build it, and then I said, okay,
I want to sell it. I think at first I just wanted to sell
it for money, so it wasn't on Ruby gems or whatever. But then
I figured out and by speaking to people like, hey, nobody's going to
use it if they can't try it, and that's true. Like if you
cannot you know, test it out a little bit, it's you're not going
to choose it, you know, not gonna buy it from just a few
images or videos. So how I you know, how I got to like
free and paid? You know, everybody will probably sidekick like like you said,
like I saw Sidekick and other products and okay, there's a free version
perfect, I'll use this one, and there's a paid version, which is
the other one. How do we choose which features go where? It's not
an exact science. It's a mix of how much it takes us to build
them, how much it takes us to maintain them, or how much we
think it's going to take to maintain us maintain it, and a little bit
of how much value value they add. Right for example, like the dynamic
filters where you have like stripe styled pills where you can go and you just
go on a field like price and say filterable true, perfect, that's it.
That's all we have to do as a developer. And then in the
UI you're going to get like a drop down and say okay, filter by
price, and you're going to have like a nice pill and say I want
it more than this price or less or between or whatever. So that's like
a very powerful feature which we spend I don't know, I think three months
building it or four months or something like that. If you wanted to build
it in house with your team, you got to have the first of all,
a product person that knows what they want to build. You got to
have a designer to design it. You have a front end person, so
somebody that knows how to build that. Because most or I don't want to
say most teams, but some teams only have like back end developers. So
you see, it's like this whole You need a whole team to build a
feature like that, or you can pay something like, you know, a
fraction of what you would pay for that team to build it for AVO and
get so so much more. That's kind of our value proposition instead of,
you know, having teams build certain features for you, you kind of have
them whatever. Nice. Yeah, that makes perfect sense. Kind of.
I did think it would be a bit of an art because there's not like
rualized too. This is free the spirit. It tends to be a bit
of disenterition and stuff. Yeh. Yeah, And again, like most of
the work we do we do want the free features, Like you're not gonna
believe how much because we want to support so many things. But right now,
yeah, do you have a like transfer a feature from paid to free
like with an upgrade because you're like building a lot of new features that are
paid, do you ever say this feature maybe we can now give it for
free as well? Yeah, we did do that. So when we jumped
for from Other two, you know, from Other one to two or from
two or whatever I wanted to do, or two to three. I don't
know, something like eight features from pro we just made them free. It
was like custom fields, custom everything, I think, translations, something about
search, like a lot of things we just made for free because it was
kind of difficult to try to support them as paid and make people, you
know, kind of like check if the person has a paid license or not
or whatever. Some of them were just because it was easier for us,
and some of them because they really made sense. It really made sense for
us to give it away for free. So most of the features went downstream
from paid to free. Only we only had like one time, the feature
that went from Pro to Advance because we made it so much bigger. It
was released as a Betha to see people are going to use it. It
was good. So we said, okay, we're gonna build this whole thing
about around it, and that was moved to advance. But again, like
we're developers, we don't have any VC money. We're not in this business
of, you know, trying to squeeze every little dollar and penny from everybody.
We know how difficult it is when you're starting out and somebody just saying,
Okay, this is going to be paid from now on, you're going
to have to We don't want to do that, but not in that we
want to help you guy. So yeah, we haven't done that. Yeah,
now that's good. Like, yeah, well, one of the things
that kind of gave me confidence we use on this project was that I knew
that you want VC backed or anything. You were just in deed developers just
like me. So I knew that I wasn't going to get messed over by
the usual VC tactics. So, like, how do you handle the paid
distribute of the gems because you ever used like three gems off Ruby gems,
Like, if someone's paying, how do you kind of what the technical side
of distributing that? So In the beginning with other one and two, we
had everything on GitHub in one repository, so if you were a little bit
savvy, you could go in and say falls to through whatever and you say,
okay, I have the license for fee and whatever. And we knew
that some people were going to do that and whatever. It was all good.
It kind of helped us with the traction. We wanted to get it
in front of people to get feedback and see like do you really need this?
Is this something that you you know? Does it help you that much?
So in the beginning we just had that and we were pushing all the
features in one gem and you only had like one license kee that would check
on run time if it's a valid license or not. Now with about three
we broke it up into multiple gems a little bit. We did that because
we wanted to keep some gems hidden like behind the paywall, and because it
made sense we had too many things in the main repot. And what we
do now is we have I think six or seven gems in total, and
when you want to install it, you got to have if you want to
install those behind the paywall, you got to have a gem server token.
So basically you still use sorry, you still use a gem file and Bundler
and the bundler kind of you know, infrastructure, but instead of asking for
a gem from Ruby gems, you're asking it from our private repository, and
our private repository uses Bundler authenticated, the authentication feature, and it will lasts
like do you have a token? And we will check right very quickly,
like is this token still valid? Can they use this version? And so
on? So basically you still use gem files, but you get does the
same thing, doesn't it? Yeah? Yeah, yeah, yeah, yeah
yeah. They have their own private server. What are you serving the gems
with? Because I know there are a couple of private gem server systems out
there. I just built my own, I know, I know. So
there were a few gem in a box and a few others, but I
couldn't I couldn't figure them out. I'm that smart. Sorry, I couldn't
figure them out. So I just reversed engineers, and you know what I
did. I set up like an nd grock, you know, the top,
and then I just I just pointed bundler the gym file to that n
rock you r l And now I was just seeing like what what what?
Requests do they do? Right? What the what request does bundler do?
And I figured it out, I reverse engineered and I built my own so
we're still running on that works very very well. It's it's a Sinatra app.
We had it on fly I own, now we have it on something
else. But it just works very very well. And yeah, I was
going to ask if it was a standalone app or if it was part of
your monol beautiful monolith. Yeah, no, it's just that's a Sinata app.
I don't know why we built it like that, but we have a
different rails app that checks the license keys and does the licensing and the subscriptions
and everything else, which is a jump startup. We're very happy with it.
We moved fast when we when we built, when I built it,
you should, if you get some time, you should really blog about what
bundle actually does under the head because I think that would be a fascinating blog.
That would be so interesting. Yeah, you know how much I searched
for that information, Like, there's no information anywhere. What happens? Why
does the why does it go to the version's route? Why does I don't
know? So, yeah, I think I should have written that back in
the day. But I think I still can remember a few things. If
I if I sell it as a premium video somewhere for seven dollars. Course,
yeah, but if anybody, if anybody wants that code, it's an
ugly, stupid code that just works. I just I gave it to somebody.
I think it was Georgia Boy who wanted to do something with Flexui.
But if anybody wants to just reach out and I'll figure it out. I
can just copypaste you that one Sinati file that handles everything. So I'm a
little curious how many people are using AVO out there, because I think we
talked about it before it was kind of new and there were some things we're
still kind of turning wrenches on to make it, you know, not leak.
And yeah, now it seems like it's something that people go and use
and it's fairly battle tested. So yeah, how many people out there on
it? So it's kind of difficult to count. To the customer, it
seems straightforward, but it's difficult because you know, they get doubled in stripe
whatever, they get more accounts. It's about I think two hundred two hundred
and something customers paying customers that we have right now. I don't have the
usage numbers, but we definitely I think all throughout this whole time of three
years when we built it and we got some more trust and street credibility from
the community. Like before, I was going on calls with customers or potential
customers, and they were asking me plainly, like what happens if you go
under what happens if you don't want to build this anymore, which is a
fair and valid question. Maybe it's a little bit rude to ask it just
like that, but whatever, it's a fair question. And yeah, we
don't get those questions anymore. Right now. We're a team of three people,
Gabriel being like the third, you know, junior developer that we hired.
Paul was the first. We're three people working on this almost full time
everybody. I do a little bit less engineering now than before. Paul is
very good with that. I'm trying to focus on marketing and sales and thinking
about the big picture and everything, and of course going to conferences because this
is what I'm doing lately. So yeah, but we're three people. It's
a good business we have. We are profitable, we have a decent four
figure m r R. Yeah, we have a few couple of few surprises
I can talk about right now. But yeah, things are going well and
we have a clear path forward. We're providing value and yeah, it's it's
not that shabby, you know business. You know, I don't know what's
happening with it that that was like one like two years ago, two and
a half years ago when I first talked about this. Now we're definitely going
somewhere. Yeah, we'll say your pricing is really reasonable, thank you all,
I mean more more than reasonable, to be honest, for a lot
for a lot of businesses. It's a very small price to pay for them.
And interface that's really really easy to get started with. Also, I
would I'm curious, like I found the templates on the site and there's only
you know, three of them I think solid q being one of them,
and then bullet train and jump start pro. Uh is just like a pattern
you're looking to expand on or I thought this was really interesting. Yeah,
yeah, so there are a couple of things. Yeah, the path,
the templates are there, so people that have for example jumpstart or bullet Train,
they can install it very very quickly. But if you're starting a bullet
Train app right now, always going to be the default admin panel, so
it comes shipped with bullet Train for jumpstarts, you're going to have to run
that template and it's going to be okay. But I think I know where
you're getting to. Like we are going to try to build some kind of
it's not starter kits, but like imagine this. Imagine this. You want
to build a ticketing app, right support ticketing support app. We give you
all the templates, like okay, these are the models, these are the
resources, the actions, the filters, everything you need for a regular ticketing
app. And then you can get those for free and you only have to
pay for the APPA license. So it's kind of like once, but it's
not kind of like once, you know. So you get those and then
you can go and explore and update them and add more things. But you
get the ticketing app almost for free, let's call it, right, you
all have to pay for the app, and then, like you know,
there's another inventory app or whatever. So we are thinking about these things to
and expand into that direction. Definitely just need some time to start building it,
that's all. There's never enough time, right right, never, Never
one of these things, Chuck and I will get our internship program started and
we can start chipping away at everybody's side projects. Well, this particular side
project that Adrian's talking about is essentially what I imagined Rail's composer to be.
So yeah, I feel that there's a lot of movement around like new rails
projects or kids, but not necessarily started kids. But you know, how
how can we start an app and not have to add device by ourselves every
time? And there are a couple of things out there like regular templates,
you know, rails bites and whatever there are like on the other end of
the spectrum are like jump Start and bullet Train. But I think that people
are kind of you know, thinking about, hey, is there a middle
ground somewhere or something? And it's definitely a good question. Is that something
that you're thinking of building that is exactly what I'm thinking of building. That's
great, So it's not exactly a starter kid, Yeah, I'm looking forward.
Yeah, I'm looking forward to see that, to seeing that If you
want a jam at some point, definitely I'm open to that because, yeah,
I think it's a there's a need a little bit for that. Yeah,
yeah, we should definitely talk and hammer it out because I kind of
miss the days of like I don't know if you knew the site open Source
Rails, but it was like it was a page that just had like common
solved problems with rails apps. And I had like ticket mules, one of
them for like a bug ticket tracker, or like they had all kinds of
like popular you know, reposts that were just like full featured apps that solve
the specific purpose, so like Evil would be on there as an example,
or like for admin tools, or I just had a bunch of them,
and I kind of miss having that center central resource of like Okay, here's
a full app you could just download and run and it like solves this problem,
right, yeah, yep, yep, yep. Yeah. I agree,
But you know you gotta so see, we're going back to the same
thing. Like you know, I hate admin panel frameworks. I wouldn't use
them, right, I would like to have one, but I don't trust
it, you know. So, but I think it's a shift. It's
a little bit of a you know, we gotta shift our we gotta you
know, improve ourselves and shift our mindst I mean, I will say I
used that site mostly to learn, right, Like I was curious, like
okay, well what else can I do with rails? And I would like
go on to that site and just like download a new app and find a
new feature like I didn't know existed, right, And so I feel like
there's definitely like a you know, is it recreational or not kind of vibe
that's like kind of split you know, a lot of people focus. And
so I love seeing stuff like AVO where there's like, okay, a business
behind it, like you're not gonna like quit on this, right, Like
I don't have to worry about like it going stale as an open source project.
Yes, So I hope that that like idea keeps going right, like
jumpstart rails and like bullet Train, like these are all similar paths, right,
Like, Okay, they've created this thing that's very useful, and you
know, now we can feel pretty good that it's going to continue to be
useful and not like break all the time, right, Like it was definitely
like using open source that is like everyone's fear like how long would this last?
Right, and the guy will just burn out? Right, like yep,
yep exactly. That's a huge problem in open source and there are there
are projects and projects. There are some projects that you can you can call
finished after you know, to one week of working on it and whatever.
It just maintain it like once a month or something. But there are projects
like oh, well, like you know, because we see that in active
admin and Rails admin and everything like the others, people can't work like we
were three people working at this almost full time. Like if you're if we
were to do this as an open source and we have to do jobs and
everything else, this wouldn't have work. Nobody would have anything like like this.
So yeah, I think it's a it's a sin. It's a sign
of maturity from for you know, the Rails ecosystem that it can support these
types of projects that people, you know, they find value in. Okay,
I'll just pay for that instead of you know, building it myself.
Yeah, and see, you know, we're getting into this and you know,
I try not to just overbearingly talk about, you know, what I've
been working on, but yeah, this is where I got into it.
Right, So you're talking about ticketing or I'm thinking like user management or subscription
management or you know, building in you know, so you get the piece
of the engine that's the stripe web hook that everybody has to write eighteen times
every time they build an app. But then it connects into the rest of
this you get in your admin panel, right. And so that's the piece
that I'm imagining, so that if somebody goes out and builds software as a
service, right, they say, okay, I want I want the subscription
management, I want the user management, I want the you know this,
I want that right. I want people to be able to sign up for
my product products. Right. So you pull all those pieces in, you
load them in as engines, right, or you know, you hook them
into AVO right for the admin pieces of those. And so maybe you're pulling
in here's the front facing and here's the admin facing, right, and so
I'm gonna load both engines. I don't know, something like that. And
so then at the end of the day it's like, hey, look,
I want to build this that for podcasters. Well, I've got the billing
and the this and the that and the other all set up, and I
can get a support person to come in and use these systems because they're already
fleshed out. And so and then AVO gives you the means of adding like
custom fields and stuff like that that give you the features that you need to
customize it. But it's not this overwhelming thing that you have to pull in
in order to put out what you really care about, which is helping the
podcasters. Yep, yep, I agree. It's it's always it's always a
you know, a fine balance, I think, because whenever you're pulling in
you know, something like jumpstart or bullet train, you're going to have to
learn something or avol like even like you're going to have to learn something about
it, right, just a few I don't know, there's I think there's
there's no gem out there that will help you like substantially and doesn't give you
like some dogs, Okay, this is how you do it. This is
that. So you're going to have to learn something. But there's like a
fine line about yeah I need to learn everything about it, or I just
I can just jump on it like this this. Yeah, And that's that's
the other piece of that, right is, Yeah, I don't want to
have to go in and understand the internals of the system. I don't want
a clunky API. I mean, that's my big issue with most of these
admin panels, right, is it. It's it's got this clunky API that
is halfway based on the database except for when it's not. But it kind
of is, but it shouldn't be, but it sort of will be.
And so I have to go and I have to figure out the ins and
outs of why it does or doesn't do something. And so at the end
of the day, it took me as long to install it as it would
have taken me to build my own thing, and I would have understand the
whole my own thing, front to back. And so you know, I
want, hey, look, I got all the fundamentals that I needed to
build this app running within a couple of days, right, and so now
I can go in and I can do the custom logic that hey, it
doesn't exist this kind of a thing for podcasters and RSS feeds or whatever the
heck else you're going to build. Anyway, you mentioned conferences, and you
told us before the show that you were working on Friendly RB. So what's
the story there. It's in September. Yeah, are you the same word
week as Rails World or no? No, No, it's actually it happened
like this last year and this year too, is the same Like before,
Friendly there's Uruko. Like one week before then there's Friendly, and then one
week after Friendly there's Rails World. This is this is how it happened last
year. Again this is how it happened this year. Of course, we
kind of court. Actually we did coordinate, not kind of. I was
on a manda. I wrote to her like when are you are you still
on that date? I want to know because I don't want to be on
the same week definitely, And then I coordinated with Muhammad that will organize Uruko.
So yeah, it's going to be September eighteen nineteen in Bucharest, Romania.
The weather is just perfect. We have amazing food, amazing coffee,
Like the Italian people told me that we have amazing coffee everywhere. So you
know, there's there's that stamp there and it's a beautiful walkable city. We're
gonna have beautiful, very nice speaker speakers. I don't want to name drop
the attendees, but there are great attendees as well as I've been seeing the
ticket sales and we have like we have announced the first batch of speakers.
Uh, it's gonna be Rosa Gutierrez from thirty seven Signals. You might know
her from the latest release of solid que she was she built it. Uh.
Then Nabila Yusup, which is a software engineer from Factorial from from Spain.
We have Stephen Markuheim, which is the ESQ lite guy or escul like
Jesus as Yaro Uh nicknamed him. And we also have Tom Rossi from buzz
Prout. If you know Tom, you know, you know, you know
his mile. He's gonna be He's going to be great. And we do
have a couple of surprises. I'm still waiting on confirmation from people, but
I do have a few other great speakers incoming. And it's a it's a
friendly it's a friendly atmosphere. It's going to be two days, one track,
so everybody does the same thing. It's very loose. We do have
a schedule, but we don't really follow it, but it still works out
in the end. We're going to do some activities Like last year, I
usually I think you remember, we went and and did walking tours. I
got a few guys, tourist guys, and we did walking tours through Bucharest
and after the conference, we went to the mountains and we did some activities
there for a day. So it was really cool and friendly, and a
lot of people told me that they made, you know, a lot of
friends and they really enjoyed it. So hopefully if we can keep the bar
up this year as well. Yeah, I really, I really enjoyed last
year. I was lucky enough to speak last year, and yeah, everyone
that was just super nice, and Adrian and the rest of the organizing team
were just really on the ball. Like it was hard for me to believe
it was the first year of the conference, just given how slick it was.
I mean, I'm sure I must have been fires behind the scenes,
but I never as a speaker and attendee, I didn't see any chaos or
anything. It was just a very relaxed vibe. Like I'm still like fairly
new in the Ruby community because I only started working with Ruby about in twenty
twenties, just when the world went to shit, so I haven't really had
a chance to meet many people in the community in person. I've obviously interacted
with people online and stuff and friendly. I were just a great place to
meet people at kind of worked with online and meet some new folks as well,
and it was Yeah, the name is pretty appropriate. I would say
it's a good name, and it's it's well and thank you. Yeah,
I think the name brought to people I don't know. I don't know.
Yeah, it's unique, isn't it. It sounds pretty friendly to me.
You shouldn't laugh. It only encourages me. That was terrible. So my
question on some of this is is like, I've been to conferences that are
highly technical, and then I've been to conferences where it's, hey, look,
you know soft skills, and we're gonna we're gonna pat your head and
stoke your ego and we're not gonna get as deeply technical. And then I've
been to other conferences where you kind of get a mix, and then it's
others where you know, there's a major trend out there. So right now
I'm talking to a lot of people and everybody wants to learn AI and Ruby
and so like eighty percent of the conference is that and the other twenty percent
is And we had some keynotes. So if I show up, what kinds
of talks I expecting? Or if I fill in your CFP, what kinds
of talks do you want me to send you? So, first of all,
I want everybody to write to submit their cfps, because one of the
things that we really want to do one of the so we we kind of
say we want to do two things. Bring like really known people to the
region. Like last year we had Chaviernia, we had Jeremy Smith from the
States, Jason Sweat, we had Nick like a lot of well known people
and others in Nayushen and others that I'm missing right now, I apologize.
And the second thing we want to do is bring newcomers to the stage.
Like my first conference talk was in twenty twenty in Rodswoff in Poland, and
it was very difficult for me to get there to give my first talk.
And I know that there are so many people that have a message, have
something to say about it, to say about to teach others and to speak
about that, and we want to do that. So everybody please submit a
CFP regarding what are you going to see, like we'll see this year.
I really wanted to keep it as balanced as possible, Like we started,
like the first talk was Chavier telling us about the internals of Zeitwerk, which
are like you gotta like really scratch your head and that breaks your brain,
exactly right, It's so smart, exactly definitely, I wouldn't be able to
do what he's doing. So and then we finished off the conference with Jeremy
speaking about how what it is like and how he is a good like indie
developer and with his consultancies. And in between we had talks. We had
one talk about AI. Jason spoke a little bit about how to use hgpt
uh, and then we spoke about we had somebody making Julian Chill made music
with using Ruby and it was a really cool vibe. We had somebody talk
about how to build teams about mental health, so to talk about mental health
I really recommend to everyone like it was such a great talk and so so
well said. And then we had some a little bit more technical, a
little less more technical. We talked about documentation and everything. So it was
it wasn't like this, you know, ruby tech tech tech tech tech tech
tech kind of conference. It's not going to be that. If you want
that, I'm sorry, but friend is not. We're going to have a
little bit of that, but we're still going to talk about life and mental
health and a little bit about business. This is what I'm trying to bring
this year, a little bit more about business and people that have done it
and talk about open source and you know, being doing the indie stuff.
So yeah, it's going to be very balanced, I would say, awesome.
Yeah. Last year, I think the thing I liked was it never
got monotonous, like I tend to get bored quite easily, and I just
liked how we had like intense light. Then we had a completely non technical
talk about mental health like like you mentioned, and it was just I thought
the flow was nice that it kept me interested. Otherwise I just zone out
and I get bored. Yep, that's good because I'm the biggest twelve year
old. My wife knows, so if it keeps me interested, it's a
good thing. I'm the same. Yeah, I know, And that's what
I wanted to do. Like, I know there are people that just want
to see the tech and the heart tech and the new stuff, and I
understand it, but I think there are other conferences that will handle that for
you. I want this to be nice. I wanted to. I want
I want people to come and then be and you know, make friends and
enjoy themselves and walk out and say, man, this was just perfect.
I love it. And yeah, well, and you get to go to
Budapest. It's bukerees Charles's caress. It's okay, It's okay. When when
big stars come and like I think you know a c DC or Metallica when
they came, they come to Bucharest and say hello Budapest and the other way
around. So it's okay. I'm sorry, Nories worries. Bucharous is beautiful.
Really I need to change my back background to the Cone of Shame or
something. It's okay, it's all good, awesome, Well, we're kind
of getting toward that hour that we usually aim for. Is there anything else
that people ought to know about AVO or Friendly RB? Nothing? Much like
with AVO, I know there are trust issues, but just give it a
try thirty minutes an hour and you'll figure it out. If if it's not
for you, I'm all good. But more importantly, like, let's let's
get to hang out at Friendly and other events as well. But we're gonna
try and host you very very well in Bucharest in September. So if you
want to do like a trip and visit Eastern Europe, this is the perfect
perfect occasion. Awesome, all right, Well, let's do our picks and
then we'll wrap this sucker up. Adrian, one more thing before we go
wind picks. How do people find you online if they're like I like Adrian
and I want to talk to them? Yep, So I am Adrian the
Dev, Adrian the Dev almost everywhere, like on Twitter, on GitHub,
I have Adrian the Dev as well. Uh. It's avo HQ dot io
or avo dot cool that's the domain name avo dot cool uh and friendly rb
dot com. But Adrian the Dev. You just search Adrian novel and for
sure gonna find me. I'm on discord email. Everything awesome, all right,
Valentino, Why don't you start us off with our picks? Sure?
Uh? Yeah, So I'm I'm building more and more of this little hardware
called Adieu I gonna do. But it's a you know, wearable AI that's
fully open source. Uh and it works all on device, which is pretty
remarkable for what it is. I highly recommend it. I finally got it
working the other day on the device. Uh, and so I'm really excited
to like dig in and start experimenting with it more. So check it out.
It's a pretty cool project. Don't send it to m k b HD
for a review. That's the first person I'm sending it to. But that's
a great milestone to have it running under hardware. That's a that's a good
feeling I met. Yeah, I gotta. I got it on the Google
Chorld device, but I have a little Raspberry pies. I'm trying to put
it on next just for pricing. Okay, nice, All right, are
you su? What are your picks? I think actually, a couple of
weeks ago, when I was on as a guest, I think my pick
was avoid. I think this is pretty serendifitent. But the next time,
fast, I think I'm gonna go with another music pick. There's a band
last time i'd also done a music pick. I'm going to stick with another
one, the band called Big Big Train, who I've been following for a
number of years, and they've just got a new album out called The Likes
of Us, which I'm sure you'll find wherever you get your music. But
yeah, they're but as English a band as it's possible to get. I
think literally this country embodied in in band form. But yeah, I've been
following them for a number of years and they're another one that I think should
be a lot more famous than they actually are. They do it America for
the first time last month, so hopefully see a bit more of that as
time goes on. But yeah, I can only think of the one pick
this time. I'm going to stick with that. Awesome, all right,
I'm going to do mine. I always do a board game kick pick first.
This is a card game, and I kind of lump them together.
So if you're a purist, sorry, this is called Doomlings. I don't
know if any of you guys have played Doomlings, but Doomlings is a card
game. It's pretty simple. You have different color basically traits genetic traits,
and then you have an age deck and you go through three ages that all
end in a catastrophe, and the catastrophe makes you adjust your play space right,
so you might it usually lowers your hand limit, it might make you
get rid of some traits. Things like that. The different traits give you
different points based on whatever's on the card. And anyway, it goes pretty
fast. You play it in like twenty minutes. Of course, it goes
two to six players, and I've only played it two player with my son.
He got it for his birthday last year, and he wants to play
it. I want to spend time with him. It's a win win.
It's like I said, it's a pretty simple game. I've played some other
games. I have a lot of these elements to them that are a little
more involved that I like better. But if you're looking for something you can
pick up and play with, like a ten year old, he's twelve,
but you know, and he but he likes it. But I think you
could probably go down to ten, maybe even eight. My eight year old
might be able to play it. I don't know if she would get like
how you want to play some of the cards together to score, if that
makes sense, but she can definitely play it. Like the mechanics aren't that
involved. So anyway, I'm gonna pick Doomlings if you're looking for kind of
that simple game and you don't like the heavy games, or you're playing with
kids, because I could see somebody that just kind of likes you know,
kind of a little bit of a thinker. But you could still have a
conversation with whoever you're playing with, you know, maybe like a sushi go
party. It's it's kind of on that level as far as how complicated it
is. So Doomlings and I think there are a bunch of expansions for it
too. So anyway, and then I thought, my wife and I started
a new TV show. Oh, we were watching the new star Our Trek
Discovery, which is the last season, and I mean, so far we've
liked it. It's been a couple of episodes, so obviously we don't know
how well the story arc goes, but it's based on an old Star Trek
the next Generation episode for you know, kind of the thing they're trying to
find solve whatever. So anyway, so I'm gonna pick that Star Trek Discovery.
And then just a quick shout out. We have been putting ads in
the shows programmatically, so some of them aren't always super relevant to you all.
If you want ad free episodes, go to Ruby Rogues dot com slash
Premium and you can pick that up. And then I'm I'm doing calls every
week. Now I'm going to invite a bunch of the past guests to either
present and or join the crew for a little while. And so if you
want to come have conversations about Ruby or rails every week and hear from experts
in the in the field, it's Ruby Geniuses dot com so yeah, that's
all the stuff, Adrian. What are your picks? What? What?
What do I get to pick an if anything you want? I picked a
board game, I picked a TV show, like if there's books you like,
you know, tech whatever, So I'm not ready, but like I
love my AirPods. I still think that one of the best products Apple makes.
These are just amazing. Speaking of of shows, the Three Body Problem,
that was amazing and it's very good. It's on Netflix, uh and
something tech I. Oh, there's a lot of talk about Kamal and deployment
and everything else. Everybody just try Hatchbox. If you're doing rails, try
Hatchbox because it's like exactly what you need. Like I was using Doku or
something else before, but now I'm super super happy with it. It's it's
it's almost perfect, but it's very very good. So yeah, yeah,
I've been using Kamal and I love it. But yeah yeah m hmm,
all right, well thanks for coming, Adrian. This was a ton of
fun. Thanks for having me, guys. Yeah, it was it was.
It was nice speaking about about av and friendly and uh, seeing you
guys again, Charles and Nayusha. Nice meeting. Get the clients nice meeting
Until next time. Max out h