Andrew
00:00:00 – 00:00:04
I got a note.
It's right here.
It says, Laravel.
Laravel.
Aaron
00:00:05 – 00:00:19
That's perfect.
You nailed it.
I wanna hear what's going on
Andrew
00:00:19 – 00:00:25
in your world, man.
You made a big announcement in your new role at 2 bolt.
I did.
Aaron
00:00:25 – 00:01:20
I started and then I borrowed $200,000.
So, yeah, for for a little bit of backstory, the announcement is I started at Tuple as the marketing engineer and went last week to Boston to meet everybody.
And we made this whole plan, and I put out a tweet at the end of the week that said we're gonna take $200,000 from Stripe Capital and execute 3 different marketing experiments, basically, and one kind of meta experiment, which is we're going to, like, film the whole thing and try to put together a cohesive narrative about it.
So, yeah, that was kind of like a welcome to the company.
Here's $200,000 please spend it to make us more than $200,000 So that's kinda that's the plan.
Andrew
00:01:21 – 00:01:42
So I love it.
I think it's brilliant.
I think that's the reaction that I sort of saw from from most people.
Yes, This is a very clever idea for a couple of different reasons.
But maybe for a little bit of background, can you explain what Stripe Capital is to people that may not be familiar with Stripe, like not everybody's running a business on Stripe or whatever.
Andrew
00:01:42 – 00:01:52
How does it work?
Why are they giving you guys 2 $100,000?
Is that available to everybody, or what's the situation there, and what are the terms?
Aaron
00:01:52 – 00:02:16
Yeah.
So the most boring way to describe it would be revenue based financing.
I think that's probably the technical term, and that has been around for, you know, a super long time.
Stripe's not the only company doing revenue based financing.
Stripe is obviously our payment processor and so they have access to all of our incoming revenue.
Aaron
00:02:16 – 00:03:08
And so, they're perfectly set up to do revenue based financing, which is they will look at how much money we're making and offer us variable loans from $1,000 up to, I think, the slider maxed out at like $2.50 or something, and then they take a portion of each payment that comes through.
So, the benefit here, and it's got a fixed fee of I forget what the $200,000 was.
It's not the cheapest money available.
Like, we could go to a bank and say, we, as a company, would like to take a loan, please, and then we would be in paperwork hell for the next, you know, 2 months while we're trying to figure everything out, and it'd just be a huge distraction.
One of the nice things about Stripe Capital is you just push a button.
Aaron
00:03:08 – 00:03:24
It's just so internet native and they make it so easy on you that you just push a button, you get the money, and then over the next however long, they'll take a portion of each payment to repay that loan.
Andrew
00:03:25 – 00:03:50
Yeah.
I love how it inverts it where nobody's initiating anything.
They've got a bunch of robots that are out there watching your finances, and then when they see the right criteria pop up or you have a certain amount of stability in your revenue or whatever, then they approach you with terms commensurate with the financials of your business.
And at that point, the conversation happens.
So it's, like, no effort.
Andrew
00:03:50 – 00:04:05
I mean, it's, like, perfect software play.
Right?
They're in the perfect place to do it.
You've got some automation there, and a conversation doesn't even happen unless the right conditions exist in your business, and you see the notification and you're, like, yeah.
Let's do that.
Andrew
00:04:05 – 00:04:36
And then to take it a step further, the repayment of the loan, they're in the perfect position to do that because they're tapped right into your financial stream.
So, yeah, I think it's a really cool option, especially if you're not worried so much about the dollars and the cents, if that's not your main thing that you're fixated on.
And I think that's a large category of people.
Like, there will be people that'll look at that.
I remember somebody said a tweet like, what's this offer that I'm getting from Stripe Capital?
Andrew
00:04:36 – 00:04:52
It's so terrible.
And I felt like that's very telling.
Those terms when I looked at the terms that you are offered, I'm like, those aren't terrible at all.
Yeah.
And so it's probably more reflective of volatility or whatever in their business that's coming out in the numbers that they're being offered.
Andrew
00:04:53 – 00:05:06
But I think for those of us who value our time and the convenience, what a sort of cool thing to have available just because you're on a payment platform.
That's amazing.
I love it.
Very cool.
Aaron
00:05:07 – 00:05:42
If you were optimizing purely for dollars and cents, you could do better.
If you're optimizing for, like, more things like time and ease, I don't think you can do any better.
And we're spending the money on marketing, and so it makes a lot of sense for us.
We're spending this money to hopefully return even more money, and so that makes sense to bring some of our revenue forward in hopes that we can spend it and generate even more revenue.
So revenue based financing makes a lot of sense when there are marketing options on the table, and that's where we're at.
Andrew
00:05:42 – 00:05:53
Yeah.
Here's the other thing too.
I think it's so clever on Tuple's part.
I think it's very clever to have identified that people would be interested in this.
And I think that
Aaron
00:05:53 – 00:05:54
Mhmm.
Andrew
00:05:54 – 00:06:35
There is actually a real strong opportunity for Tuple as a company because of the success, because your target audience is engineers, and I think more and more engineers or people that work online, but I think of it as software developers.
Right?
And I think a lot of software developers are increasingly aware that marketing and sales has not been our strong suit, but, hey, if I look around at my friends that have been good at sales and marketing and leaned into that as a discipline, they tend to be the people that run very successful software businesses.
Yep.
Yeah.
Andrew
00:06:36 – 00:06:45
So it's a smart move all around.
I think it's gonna resonate with the audience that you're trying to reach, and I'm excited to see how it plays out.
Good luck.
Aaron
00:06:46 – 00:07:04
Yeah.
Thanks.
It's fun to treat it as a set of experiments.
Like, we really are just trying to see if this works, and to bring people along in that journey kinda gives us, like, a force multiplier because it's like, hey, we're trying this thing.
Why don't you come along with us, and we'll see if it works together?
Aaron
00:07:04 – 00:07:07
And people are interested in that.
So, yeah, it should be fun.
Andrew
00:07:07 – 00:07:16
Alright.
Cool.
So with that personal update covered, I wanna chat about Laravel Nova.
It was like a major release, right, in
Aaron
00:07:16 – 00:07:21
the last few weeks?
Yep.
First major release in a long time.
Nova 4 just dropped.
Andrew
00:07:22 – 00:07:33
So if I understand it correctly, Nova is an admin panel.
This is for, like, the back end of a Laravel application.
Right?
Correct.
Yep.
Andrew
00:07:33 – 00:07:43
Okay.
You don't use Nova for any user facing functionality, do you?
Sometimes, maybe?
No.
It depends.
Andrew
00:07:43 – 00:07:43
About it.
Aaron
00:07:43 – 00:07:54
Yeah.
So it depends.
So you can find it at nova.laravel.com.
Nova is a first party package.
It's written by Taylor and his friend David.
Aaron
00:07:54 – 00:08:19
It's an admin panel.
It's basically like a CRUD app admin interface.
So here's the thing: you can use it for user facing stuff.
It just depends on who your users are.
So if you're building, like, some sort of, we'll say, inventory management, store tracking, that kind of stuff, that tends to be pretty Creddy.
Aaron
00:08:20 – 00:08:44
So if the app is pretty Creddy by nature, Nova is gonna be a perfect fit for that.
If your app is bespoke UI and user experience and design and all that matters a ton, you're probably not going to be using Nova for that.
But if it's 95% of the apps in the world, you could get away with using Nova.
Andrew
00:08:44 – 00:08:55
Yeah.
So there's a bunch of interesting things on this that I wanted to ask you about.
So I think the big cool one is the fact that it's first party.
Aaron
00:08:56 – 00:08:56
Mhmm.
Andrew
00:08:57 – 00:09:28
So we have nothing like that in the Rails ecosystem.
I remember when I worked in PHP, there were a lot of, oh, here's a UI for your database.
But it was nothing that was built on top of the model layer because there wasn't a standardized model layer in PHP back when I was using it.
And in Rails, we have a model layer.
We have active record, and so you can get things like rails admin or administrate and some of the other open source ones that play off of the fact that, like, hey, it's not database tables.
Andrew
00:09:28 – 00:09:49
It's a domain model.
So there's that comparison there, I think, with Nova, but they're all open source, they're all third party.
It's not part of the Rails brand or part of the Rails package or developer experience really.
Right?
There's not like a solidified or a consolidated user experience on this.
Andrew
00:09:49 – 00:10:12
And in fact, it is one of the things where it seems like a lot of people use a lot of different ones, and there's some new entrants, people that are working on new versions of it, and things like that.
But I love the idea that there's, like, this first party offering.
I think that that's really strong and that's really cool.
Is it it's a 100% commercial?
How does that work?
Andrew
00:10:12 – 00:10:13
100% commercial.
Aaron
00:10:13 – 00:10:27
Yep.
It is totally paid.
It is not open source.
It is a private package that is distributed via private composer package and you install it into your app with credentials.
Yep.
Andrew
00:10:27 – 00:10:56
Okay.
So if that's the case with Nova, I've always been interested in it because I remember back in the day when I was explaining to you some of the stuff that I was working on, there was, like, a little bit of confusion.
Bullet Train, for example, the product that I work on, we delegate that to the available options.
We used to default to rails admin and then eventually we're just like, we don't even want that as a dependency.
Like, cut it out, let people choose.
Andrew
00:10:56 – 00:12:03
But I remember there being some confusion when you and I would chat about it where you were thinking of super scaffolding, for example, as being more akin to something like Rails admin or Nova, whereas, really, Super Scaffolding's only for the end users.
I'm curious in Nova in that scenario because I always thought it was really cool.
Back in the day, 7 years ago, I used to tell people when building internal apps in Rails, hey, you can build with the trifecta of Rails, Rails admin, and CanCanCan, and Devise, actually, so it's not trifecta, but, you know, the trifecta of 4.
With those four things, if you had, like, Devise, KanKanKan, and Rails admin, Rails admin would pick up on the authentication, it would pick up on the authorization from KanKanKan, and you really could create little internal tools using this.
It wasn't a scaffolder, it was like literally just an admin interface, but you could configure it enough.
Andrew
00:12:04 – 00:12:41
And so at Borrowed and Blue, for example, we had a bunch of little tools, like domain models exposed through rails admin that people would use for internal processes.
And I get that Nova is a really, really great fit for that.
That's its bread and butter.
In a multi tenant world so say you're building an application and you're like, I'm building this internal tool, but it's not just for my company.
I want to also share it with other people, is Nova a fit for that scenario, or does that kind of, like, cross a boundary where, nah, it wouldn't be a good fit for that?
Aaron
00:12:42 – 00:13:20
It would totally fit that.
So multi tenancy is not gonna be a problem with Nova, and I think maybe it would be helpful to explain a little bit architecturally how it works.
So pre Nova, I was unaware of anything like Nova.
So Nova took a little bit of a different route in that it itself is a framework.
So if we think of the difference between framework and library, where framework is you get called and library is you call it, So a framework is the code is going to call your stuff, and a library is your code is gonna call their stuff.
Aaron
00:13:20 – 00:13:55
Nova, in that definition, is a framework in itself.
So Laravel is a framework.
Nova is a framework on top of Laravel because everything that you do in Nova is, 1, it's all driven by code, so all configuration is code.
There's no YAML files, there's no configuration records being saved to the database so it doesn't muddy up with a bunch of admin tables.
And, weirdly, you're not mucking around with the frontend views.
Aaron
00:13:56 – 00:14:36
In fact, you're not even mucking around with controllers.
So, not only are you not having to generate corresponding form fields on the front end, you're not writing controllers at all.
So, what Nova did was it took all of this Preddy admin work, wrote an entire scaffolding around it that combines frontend, backend, validation, the whole deal, and then it gives you the smallest unit where you can write your stuff.
And so in the case of Nova, it's called, like, they have a couple of discrete units.
I think resources are 1 and those map 1 to 1 with models.
Aaron
00:14:37 – 00:15:24
So resources and then you have actions, which are things that can run on resources, so like delete, update, send email, that kind of stuff.
And then there are a couple others that have, like, tools to where you can do non resource kind of stuff.
So in terms of, going back to the original question, multi tenancy, yeah, it totally supports multi tenancy because if your Laravel app supports multi tenancy, your Nova install supports multi tenancy.
So Nova comes in to your Laravel app as a package and then exposes certain Nova routes.
And so, it lives in your Laravel app on top of your Laravel models and your Laravel authorization, which is first party.
Aaron
00:15:25 – 00:15:40
And you can configure all of that at the Laravel level and then take advantage of it at the Nova level.
So, like, if you have multi tenancy set up in Laravel, you've got it set up in Nova.
Does that make sense?
You look quizzical to me.
Andrew
00:15:40 – 00:16:02
I'm loving every minute of this.
Yeah.
It's really interesting.
So is it common for people then to use Nova as an assist in building the user facing part of their app, or are most people using it on the back end, regardless of what's technically possible?
Aaron
00:16:03 – 00:17:01
My guess, and it's mostly a guess, is my guess is Nova drives a ton of back office work.
And so the question about, like, user facing is blurry because if we call it back office work, then that would be like where the employees of a company are doing a thing, then those are technically users, but they're not the end users of that company, if that makes sense.
So they're the users of the developer, but of the company, they're the back office workers.
And so, my estimation, based on the people I've talked to and the ways that I've done it, is that Nova drives all of the internal internal tooling, that's probably a good way to say it.
So it drives all the internal tooling where employees are answering the phone and the customer is like, hey, can you look at my record and I need to cancel the next order and move it and it's okay, I can do all of that in Nova.
Andrew
00:17:01 – 00:17:11
Yeah.
So I think that corresponds to what most people are using things like rails admin and administrate for
Aaron
00:17:11 – 00:17:11
Mhmm.
Andrew
00:17:11 – 00:17:42
In their rails applications.
Kinda knowing where it fits in, that's helpful, and I was really curious about that.
So what's the landscape look like then in the Laravel ecosystem for other administrative tools?
Is it kind of like Nova came in as this first party option and it's one option to rule them all, or are there alternative tools available?
If there are, what's their angle?
Andrew
00:17:43 – 00:17:47
Are they paid?
Are they open source?
What's the deal there?
Aaron
00:17:47 – 00:18:10
Yeah.
So, I can't speak too much to the pre Nova days.
I know there was one, I think, maybe called Backpack, but Nova basically came in and just dominated the market immediately.
Part of that is a function of Taylor's reach.
He announced it live at Laracon, which if you've never watched one of the in person Laricons, they're basically like Apple events.
Aaron
00:18:10 – 00:18:47
He gets up there and he's like, oh, and by the way, I'm also launching this new thing and everybody freaking loses their mind.
So he launched it at Alaricon and everybody freaking lost their mind.
And I think part of the reason why is the way that it's configured is it is just beautiful and expressive and powerful.
And I think tying the front end and the back end and the validation and the authorization and the authentication all together made everyone hyper productive.
Like, you could build an entire back office app in a day or 2.
Aaron
00:18:48 – 00:19:14
So he came in, launched that, totally dominated the market forever, and up until today, honestly, still dominates the market.
Nova has spawned a few I won't say copycats because that's rude.
It has inspired a few admin panels.
They have taken a different route in that they've chosen different tech stacks.
So where Nova is Vue.
Aaron
00:19:14 – 00:19:44
Js, these other ones have gone with LiveWire and Alpine, so it's kind of like the Phoenix Live View of Laravel.
They've chosen to go with LiveWire.
So, one of them is called Filament and the other is called Lean Admin.
Filament is open source, totally free, has a big community around it because people love LiveWire.
The model for Filament is they now have a marketplace.
Aaron
00:19:45 – 00:20:15
And so I think if you sell plugins for the Filament admin panel through the Filament marketplace, they get a cut of that.
Lean Admin is a paid product and I'm not sure the specifics on that.
So that's the landscape as I'm aware of it.
There may be others, but these are the biggest ones in my mind.
And they all take the same Nova inspiration of configure everything in code with like, explicit methods and generate it's all generative UI.
Aaron
00:20:16 – 00:20:23
You never touch the UI, you just configure everything on the back end and the UI shows up exactly as you would expect.
Andrew
00:20:24 – 00:20:31
Alright.
So all that makes sense.
What about pricing?
So did you mention it yet?
Aaron
00:20:32 – 00:20:52
No.
There's a lot to talk about there.
It's a one time payment of $99 per site, or $2.99 for unlimited.
Historically, they've done that based on major versions.
So, going from version 3 would get you updates all through the life of version 3, which lasted for like 3 years or something.
Aaron
00:20:52 – 00:20:59
And now version 4, I think you got a discount, but you to buy a new license for version 4.
So $99, basically.
Andrew
00:20:59 – 00:21:21
This blows my mind.
And I think there's some, Yeah.
There's something to be said there for the strength of a distribution channel.
So if you have a distribution channel, then you can work on a piece of software.
You can sell it for a $100 for, like, effectively a 2, 3 year license and still make a ton of money on it to support us.
Aaron
00:21:21 – 00:21:38
Yeah.
It's good.
It's also bad.
So the reasons that it's good, it's extremely affordable.
It's unbelievably high quality software that you can turn around and bill out projects for extreme multiples.
Aaron
00:21:38 – 00:21:51
I mean, you could build tens of 1,000 of dollars to build out a back end app, and you're sitting on top of a $99 admin panel doing a huge amount of work.
That's incredible for the Laravel ecosystem.
Andrew
00:21:52 – 00:21:53
That's the part.
Aaron
00:21:53 – 00:23:01
That's most people because most people, as they interact with Nova, are going to be purchasing Nova or using Nova, so the majority of the universe it's good for.
It is bad for a small section of the universe, in my opinion, and the section of the universe that it's bad for is other people selling in the Laravel ecosystem.
Why is that?
Because if you have Taylor Otwell, the creator of Laravel, out there pushing world class software, legitimately world class software, between Forge and Vapor and Spark and Nova.
And you've got him out there pushing this software that he has employees working on, and he's pushing it for $99 That sets a bar in the mind of Laravel developers that I can get world class software that I can build my entire business on for a one time payment of $99 And so everyone else is not Taylor and doesn't have the reach and the cap audience, yeah, of him.
Aaron
00:23:01 – 00:23:15
And so it creates downward price pressure on everything else.
And so for that section $99.
Yeah.
But I'm not selling like Taylor is.
Yeah.
Andrew
00:23:15 – 00:23:29
I mean, I get that.
I always thought it was amazing that Spark, for example, was, like, a $100.
Right?
Yep.
I never could have built bullet train as a business on a $100 license fees.
Andrew
00:23:29 – 00:23:34
I mean, I don't know.
I don't think.
I mean, that's the hypothesis.
I never tried it.
Aaron
00:23:34 – 00:23:34
Mhmm.
Andrew
00:23:34 – 00:23:49
But I've seen other people with similar products, and I don't ever see anybody put the price down.
I think the price never goes down.
It's always as they add value to the product, they increase the price.
And I think there's a bunch of reasons for that.
Right?
Andrew
00:23:49 – 00:24:08
Like, with some of the tooling that developers are developing, there's substantial support costs, all of that stuff.
So it's interesting to try and find that balance.
You have a product that you sell into the Laravel ecosystem, Refine.
We've talked about it before.
You've announced the pricing for it.
Andrew
00:24:08 – 00:24:08
Right?
Aaron
00:24:08 – 00:24:22
Mhmm.
Yeah.
So we sell Refine, which is a visual query builder for your end users.
So you would as a developer, you would say, I've got these, you know, 6 fields available.
These 2 are dates.
Aaron
00:24:22 – 00:24:32
That's a text one.
That's a Boolean.
Now let the end users build whatever queries they want.
So that's what we that's what we build, that's what we sell.
We sell it for $1,000 a year,
Andrew
00:24:32 – 00:24:35
yeah, as a subscription as a subscription.
Aaron
00:24:36 – 00:24:48
Here's the thing, it's hard to sell, and we have a Nova plug in.
We sell one of the feature, one of the channels is Nova.
It's really hard to sell an add on to a
Andrew
00:24:48 – 00:25:16
product that costs $99, sell the add on for a 1000 a year.
It's hard.
So I chatted with somebody that was building a product and was a candidate for using Refine.
Mhmm.
And I pointed them in that direction, told them this is best of breed, you'll love the support you get, you'll love the way the thing works, like, I've seen this thing in action.
Andrew
00:25:16 – 00:25:58
It is an incredible software component.
It'll just make your software feel totally OP.
It's a completely overpowered kind of thing for your little indie SaaS that you're working on for you to be able to provide this to your customers so they can filter and query and whatever in the huge amounts of data that they'll import into your system.
And when I mentioned the pricing to him that it was $1,000 a year as a subscription, he shot back right away and said, no problem.
It'll be well worth it because I know what it will cost to build.
Andrew
00:25:58 – 00:26:20
Yep.
And so I sort of feel like almost it's an opportunity to establish the fact that there are 2 types of contributors to the Laravel ecosystem.
There are the first party things, and there's a lot of them.
And, actually, if you add them all up, you're paying $1,000.
Right?
Andrew
00:26:20 – 00:27:13
If you're doing Spark and Nova and some of the other utilities, it does add up, and it's nice that it's a la carte and that people can come in at those lower price points.
That's good for the ecosystem.
There's no doubt in my mind that that's good that people can start at those lower price points, it's accessible, and then they can increase their spending in the ecosystem as their success kind of warrants it, that they need this new feature, we need that.
But I think you're doing everybody a favor in a way by setting that price point where you know you need it to be in order to provide the level of support.
And who's to say that as your product evolves, becomes more mature, receives more adoption?
Andrew
00:27:14 – 00:27:31
I know the thing that everybody always says is, oh, raise your prices or charge more or whatever.
I don't know.
I kinda got a lot of satisfaction going from 14.50 to 0.
Yeah.
That's been very good for us.
Andrew
00:27:31 – 00:27:32
Like, it's been fantastic.
Aaron
00:27:32 – 00:27:36
It hasn't made you more money.
So that's that is the difference.
Andrew
00:27:36 – 00:28:06
It depends.
I think it remains to be seen how it plays out in the long term.
And I'm not saying that you go from a1000 to 0.
I'm just saying that as time goes on and you get into a groove with the support and all of that stuff, there may be opportunities to charge less.
It's not economies of scale, but it's kinda like the longer you've worked on something, the more documentation you have, the less active effort you're putting into it, and potentially the easier it is to make it more available to people.
Andrew
00:28:06 – 00:29:05
But I think regardless of that, the component is so valuable and there's so much active effort going into it that if it works, if your pricing point works and you're able to generate basically, if your hypothesis that that's the right price point is confirmed, then it sets an example for other developers as well.
Because it's not just, oh, I'm gonna build a thing and charge a lot for it.
That's not the hypothesis.
Right.
The hypothesis is more, you could say, in your own words, but the way I would sort of describe your business is you go really, really deep on very specific problems beyond the point that it would make sense for any individual software team to go in their individual application.
Andrew
00:29:06 – 00:29:49
And so you can provide these totally OP features, and that, to me, is something that every ecosystem could use a lot more of.
There's examples in other ecosystems you think of people that have paid components in, like, mvc.net and all of that.
I hope that it ends up being the right price point and that it means a lot of success in terms of both adoption and financial support for the products that you're working on, and that means that more people will look at that and it will make sense to them how they can lean in and invest to some of those other components.
And not ones that compete with you, not like the
Aaron
00:29:49 – 00:29:50
Yes, please don't.
Andrew
00:29:51 – 00:29:59
Yeah.
Right.
Not like the Nova is successful and we have our own take on it, so we launch that.
That's fine.
That always happens.
Andrew
00:29:59 – 00:30:19
But what is even more valuable than that is, look how cool that is.
What other cool things are out there waiting to be developed that somebody can say, I can go deep on that and solve this problem for everybody?
Because I think there's a pretty large number of those out there waiting to be discovered.
Aaron
00:30:19 – 00:30:47
I think that that is the correct takeaway.
So, Colleen and I, our thesis is basically we can care more than anyone else can care about this problem.
We can care more than your business can justify caring about this particular problem.
And the reason is your business is doing other stuff.
Our business is not doing other stuff.
Aaron
00:30:47 – 00:31:05
Our business is building this one component for now, hopefully in the future, 2 or 3 components.
But the thesis is everyone needs this thing.
Right?
Everyone needs this component we're building, hopefully.
It's really hard to build.
Aaron
00:31:05 – 00:31:18
It's really hard to get all of the edge cases.
I mean, you just just talk about dates, and you're already up a creek.
Right?
And then you start nesting ands and ors and groups.
So everyone has the problem.
Aaron
00:31:18 – 00:31:54
The problem is really hard to solve and everyone basically ends up solving 60% of it and moving on.
And the thesis is, what if we could make the best and final solution and care to the nth degree because our entire business is this one thing.
And I think that is replicable.
I think there are a lot of problems that are undifferentiated heavy lifting.
At the end of the day, your app needs filtering.
Aaron
00:31:55 – 00:32:10
Your app needs to be able to say, show me users who are named Andrew, who live in California, whatever.
Your app needs that at the end of the day.
But when you finally implement it, your users are like, Oh, thanks.
Great.
Now it's like every other app thinks I finally have filtering.
Aaron
00:32:10 – 00:32:35
It was table stakes.
It was table stakes all along, but it was freaking hard to build.
And those problems are not few and far between.
Those problems are everywhere.
If you go look on GitHub, there are abandoned repos all over the place of things that set out to solve particular problems and then because it's open source, people get burnt out and stop doing it.
Aaron
00:32:35 – 00:32:51
And so, our thesis is, if we make it paid, we can justify caring more than anyone else.
So, I think that's a viable business strategy.
We'll find out.
I mean, we've sold $5,000 worth of licenses, so we're not swimming in gold coins or anything.
But I think in the
Andrew
00:32:51 – 00:33:29
long run, this will play out and it will be proven correct.
That's my hypothesis.
Two other points for me stemming out of sort of the discussion so far because we focused on the $100 as being so low Mhmm.
And then talked about, well well, hopefully, at a $1,000, you'll be really successful, and that sets an example for people.
But I think that undercuts the fact that I'm so grateful that Taylor charges for as much as he does because, first of all, it's on the back of so much open source contribution.
Andrew
00:33:29 – 00:33:49
And I think there's a lot of developers out there that can never get out of the open source mindset.
It is really helpful to have Taylor as an example and Mike with Sidekick.
These people who have set an example of and in Mike's case, his thing is at your price point.
Right?
Sidekick Pro's 9.50.
Andrew
00:33:49 – 00:34:58
He's at that price point.
But with Taylor, just the fact that he's charging for these incremental add ons provides so much value on the open source side for free, accessible to everyone, totally incredible to everyone, totally incredible ideals there, but then shows as well how you can monetize that with these incremental features when you've built that foundation for folks.
I think that's also a very valuable example that a lot of people could probably benefit from taking example from.
A lot of healthy software businesses could be created just on that pattern, which is the, hey, you've been giving away your stuff for so long.
Maybe consider what angles are out there for monetizing that contribution so that the open source stuff is maintainable, so that it never has to be abandoned, so that you're not tempted to move on to something else, so that you don't lose interest in it because you have an economic incentive for continuing to support it and benefiting everybody that uses it.
Aaron
00:34:58 – 00:35:15
Yep.
I think you're correct in that Taylor's basically kind of running cover for everyone else because we can all point to Taylor and be like, look, he's charging for stuff.
We could charge for stuff.
We should charge for stuff.
He contributes to open source, but some things he sells as paid products.
Aaron
00:35:15 – 00:35:47
And I think that normalizes it in a lot of people's minds because I do think there's this I think it's wrong or bad, but this notion that everything related to software needs to be free and open, I can't live like that.
Like, I have to feed my children.
But in terms of the amount of stuff that Laravel, as a company, gives away for free, it's completely disproportionate.
It's like 95% of the value is free and open.
And like we've talked about, when he does charge, it's not very much, frankly.
Aaron
00:35:47 – 00:36:09
It's just not very much, which I think is correct.
I think it's good for the whole ecosystem in general.
He's a ruthless manager of his brand.
He manages his brand like nobody it's like Taylor Swift.
Taylor Swift manages her brand to, like, an unbelievable extent and she is, like, ideal businesswoman.
Aaron
00:36:09 – 00:36:40
Everything she does is brand management.
Taylor, I swear, Taylor is like that with Laravel.
He manages the brand so incredibly well.
Nobody should ever complain about the amount of value to paid products because the amount of stuff that they give away and it's not just him, he's got like 6 employees, 8 employees, and they're also giving away stuff.
He's just incredibly savvy on the brand management aspect.
Aaron
00:36:40 – 00:36:45
And I think that's great for developers to see, because I don't think that's super normal in our world.
Andrew
00:36:46 – 00:37:13
So there was a time when Rails was the new hotness, and you could just sort of count on people coming into the ecosystem without any effort or anything like that.
And I think in the current atmosphere and in the current situation that the rails ecosystem finds itself in, it's not like that anymore.
The new hotness is elsewhere.
People have moved on in in many different directions.
Right?
Andrew
00:37:13 – 00:37:36
Like, we we have people that used to be Rails developers that went on to build out the Elixir sort of ecosystem, Phoenix, and all of that.
There are folks that have moved over to JavaScript or just other things.
I met up with a developer in Atlanta that was a Rails developer for as long as I could remember.
And we got together, and they said to me, hey, I'm doing Android development now.
What?
Andrew
00:37:36 – 00:38:20
And it's right?
No.
It's just an evolution of, yeah, people's careers.
And so because there isn't this built in gravity of sort of being as I mean, it was very culturally relevant in the software ecosystem in, like, 2008 through 2010, and tons of good has come out of that.
But for those of us still working on the Rails ecosystem, I think it is worth considering the brand, right, of Rails and the surrounding tooling and things like that and being as vested in its success and its presentation and all of that.
Andrew
00:38:20 – 00:38:56
So, yeah, I think it's a good thing, especially for developers who are coming back to the thing that we opened on, typically, shy on the marketing, promotion, sales, all of that stuff.
Well, you know what they said, everything's sales, interviews, all of it.
And I think now that user acquisition and developer acquisition in the Rails ecosystem doesn't come as easy, there's work to be done.
If you love this thing, if this is what you wanna do for the rest of your career, and that's not everybody's take, not everybody cares about it that way, but I don't wanna do something else.
I love it.
Andrew
00:38:56 – 00:39:32
And so in order to make it viable for the the remaining years that I'm working, these are conversations that can be had, things that can be reflected on, and and honestly, plans that can be made.
Yeah.
Talk about what we're gonna do.
So, yeah, really, I think there's a lot of good stuff there.
And then my last point is coming back to what you're working on, Laravel, generally, everything, all of the adoption, whether it's on the open source side, you mentioned it with Nova, it's the developer experience.
Andrew
00:39:34 – 00:40:14
It's not enough for your thing to just be technically the best version of itself.
It has to ignite some sort of joy when a developer sits down to use it.
And that was so evident to me with Nova when you first got your hands on it back at the 1.0 release, right, like, when it first came out.
I just remember how excited you were for what was possible with it, and so I think that's a thing to aim for.
It's not just making something available or making something technically the best or the most performant.
Andrew
00:40:14 – 00:40:35
In fact, I would assert that's not even the most important thing.
The most important thing for most type of tooling that we're doing is your docs, your onboarding, your support, what's your Discord community like, or whatever your support structures are, making it, and the actual interfaces.
Aaron
00:40:35 – 00:40:45
The public interface.
The public interface of it.
The public interface is the thing that Nova opened my eyes to.
You've seen Refine.
You've worked with Refine.
Aaron
00:40:45 – 00:41:14
Refine Rails was ported from Refine Laravel, which I wrote Laravel, Colleen wrote Rails.
You know that long chain of configuration that we do, that fluent configuration?
It's like text condition, attribute, like, you set it all on the object and you just keep going.
That is all directly inspired by Nova, and I know that it is not RAILSI whatsoever.
But it's directly inspired by Nova in that it's auto discoverable.
Aaron
00:41:15 – 00:42:30
In our case, you'd write text condition make, and you put the attribute name or the name in or whatever.
And then your IDE is just completing all of these methods, and each method has its own signature.
So instead of passing in an opaque configuration object or passing in 18 different constructor arguments, it's all this pending configuration object, and so you're then able to call these fluent methods and configure it as you go, and each configuration method has just 1 or 2 or 3 arguments instead of trying to configure the whole world upon construction or pass in this array that is not typed, that has no introspection available whatsoever.
That's the thing that Nova really clued me in on, was you can create this pattern where developers can basically discover the object as they're going and it makes intuitive sense.
That was revolutionary to me because it made it, like, yes, the docs are incredible, yes, like, the support is good, but the public interface is like self discoverable and self documenting and weirdly IDE friendly.
Aaron
00:42:31 – 00:42:50
So you could just, like, hit arrow and see what all of the available methods are and be like, oh yeah, I want that one.
I'm gonna autocomplete that one, hit command down, drill into the source code, see exactly what it's doing, and, like, that's the whole game right there.
And so, I feel like that was a step change in developer experience for me.
Andrew
00:42:50 – 00:43:18
So this is interesting because I think that it differs from ecosystem to ecosystem, right, what feels native.
I know that's something that you've had to deal with, porting, refined to rails, but thank you so much for doing that.
You're welcome.
But I think the underlying principle there is to be sure that when developers interact with your thing, it's a joy at the point where they interact with it.
And so it's interesting because I actually said all the other stuff about, like, support and all of that.
Andrew
00:43:19 – 00:43:49
But more than anything, when they get into the IDE and they're interacting with your thing, have you minimized the number of steps?
Have you made it self discoverable?
Is it intuitive?
Does it feel native?
Those are the things that are going to really create a tool that I think gets adoption, that gets people excited, that gets people talking about it, similar to what I saw when you used Nova for the first time.
Aaron
00:43:49 – 00:44:34
Yep.
Final example, like a concrete example on what that feels like is some of these Nova objects, and then because of that, some of the refined objects that we've written have an unbelievable number of public methods that just seem crazy.
But that allows you to do stuff let's say you've got a Boolean column and it can be nullable in your database.
That allows you to say, let's make a boolean condition, and then the method to set nulls to true or false, you can say, as a method, nulls are true and as a method, nulls are false.
And so then you go back and you read your condition and it's, you know, Boolean is published, nulls are true, or nulls are false.
Aaron
00:44:34 – 00:44:47
And it just reads so nicely.
And you could make an argument that the method should really be like set nulls.
And set nulls would then allow you to pass in a true or false.
Okay.
Yeah.
Aaron
00:44:47 – 00:45:27
That makes perfect technical sense.
But isn't it more, in my opinion, I suppose, isn't it more expressive and more elegant to read it back and say Boolean condition is published, nulls are true.
It's like, oh, I know exactly what that's doing.
And so we have all of these, like, little helper methods that make the whole thing read super nicely instead of just being, what is the most primitive technical method I could make?
Thinking one step further and say what's like the most empathetic thing I could write such that a developer using it can write it really easily, and maybe more importantly, can come back and read it really easily when they come back to it in 6 months.
Aaron
00:45:27 – 00:45:31
And so that's the kind of experience that I'm aiming for.
Andrew
00:45:31 – 00:46:22
I think it's interesting.
I can't imagine we don't have a deeper conversation about this another time, but it kinda reminds me of the contrast between the things that, you know, people who tend to be okay with a lot of ceremony so that you fit into a specific paradigm that their worldview of, you know, how code should be written or anything like that, and so there are a lot of examples of people who will tell you how to write code.
It's interesting, I think, there's 2 real audiences that you need to be thinking about when you're writing code.
1 is the CPU, and the CPU doesn't care about over abstracting things or, like, it doesn't care how many lines of code are in your method or something like that.
Right?
Aaron
00:46:22 – 00:46:23
Mhmm.
Andrew
00:46:23 – 00:46:32
And so that's one person that gets to and and they're very forgiving and also very unforgiving.
But if if they run your code, you're good to go, and that that was
Aaron
00:46:32 – 00:46:34
really smarter and smarter every year.
Andrew
00:46:35 – 00:46:50
Yeah.
Yeah.
Yeah.
But the second is other developers, and this person doesn't always necessarily exist on your team, they may never be on your project, and if that's the case, then have at it.
Do whatever you want as long as the CPU's happy, and don't let anybody wag their finger at you.
Andrew
00:46:50 – 00:47:31
But the second is other developers that are going to come into your code and and try to figure out what's happening.
And it's interesting because, hot take, I think a lot of the things some vocal developers out there say about the way that you should, oh, you should refactor this or these things shouldn't be coupled, or whatever.
The things that you have to do in order to appease those demands or those opinions actually makes your code less readable to people coming into it for the first time.
That was something that came to mind when you were talking about designing interfaces that are intended to be readable in their finished state.
Aaron
00:47:31 – 00:47:38
I would argue that there's even if it's a solo project, there's always another developer, and that's you in 6 months.
Andrew
00:47:38 – 00:47:40
Like Yeah.
That's another yeah.
Aaron
00:47:40 – 00:48:07
Good.
You're always, always, always, unless you kill the project, which happens, but you're always gonna come back to old code.
And many times, you're gonna think, now what exactly was I doing here?
And Yep.
Even as a kindness, let's say you don't care about other people, as a kindness to yourself, as readable and as expressive and as self documenting and discoverable as you can make it, will make your own life easier.
Aaron
00:48:07 – 00:48:12
So if you want to be purely self interested, just do it for your future self.
Andrew
00:48:12 – 00:48:42
Yeah, absolutely.
For today, I think that's probably a pretty good place to break, and I just wanted to say from the outside looking in, congratulations to Taylor, David, anybody else on the team that worked on that Nova 4 release.
I was genuinely excited from the outside looking in.
So congratulations on sticking the landing on that one, and thanks for setting the example for all of us of how to write really high quality software components in all of our frameworks.
Aaron
00:48:42 – 00:48:43
Yep.
Thanks, guys.
Andrew
00:48:44 – 00:48:48
Framework Friends is edited by Paul Barr at Peachtree Sound.
Aaron
00:48:48 – 00:48:51
Our intro music was created by Corey Griffin.
Andrew
00:48:51 – 00:48:52
You can find us at frameworkfriends.com.
Aaron
00:48:54 – 00:48:56
Andrew's on Twitter at Andrew Culver.
Andrew
00:48:57 – 00:49:00
And Aaron is on Twitter at at Aaron Francis.