Adam & Dax discuss Dax's recent efforts in benchmarking Vercel against OpenNext and then bring on Aaron Francis to discuss type systems and what good hustle looks like.
You wanna know something funny?
I, this is embarrassing.
I wanna say it anyway.
Say it.
Hey.
Can you tell me about the benchmarking stuff?
I just can't wait any longer.
It's driving crazy.
I just need to know, like, how slow is Vercel?
How slow is Vercel?
Yeah.
Okay.
So I guess for some context, what I found interesting is it seems like nobody actually benchmarks providers as much as I thought they would.
And I think everyone's kind of the same position where I'm like, oh, everyone says it's fast.
Someone else probably benchmarked it.
Everyone's probably assuming the same thing.
And, AJ actually told me the other day that no one had really benchmarked AWS until, like, Max had that, like, nice Lambda cold start page.
And that was, like, what, like a year ago?
So I think we're just in this funny situation where, like, we're all engineers, but we don't, like, really do the engineering stuff
Which I get because, like, you know, one, these speed differences might not even matter.
Like, you're gonna use the thing you wanna use, and you'll just eat the performance overhead if it gives you other benefits.
But yesterday I was like, okay, we built this OpenNext SST thing and deployed Next.
Js to AWS.
We didn't really focus on performance.
We were just kind of like, let's just make it work and we'll figure out performance later.
I assumed that it just gonna be slower because of that because we know we, like, didn't do anything special.
So let me just run a benchmark.
So I ran it, and the results were really surprising.
I thought Open Next would probably be like I was ballparking, like, maybe, like, 30% slower in general.
It turned out it was actually 3 times faster for the mean latency.
The throughput was also insanely higher, I think.
So I did a benchmark of, like, 10 seconds, 20 concurrent requests, constantly hitting it for 10 for 10 seconds.
I think the throughput was like almost 4 times more, on the AWS self hosted version with OpenNext.
So this was kind of shocking.
I was like, their brand is just so much around, we focus on making your front ends run well.
And I think that's true of how some of the React framework is designed.
But I think I've always said this, performance comes a lot from architecture.
Like if you improve your architecture, you can probably like make a much bigger impact than improving like, oh, this function executes faster in my code base.
So yeah, that's kind of what's at play here is their architecture is probably really complicated for two reasons.
I think one reason being they have a lot of additional features that the Virtual Cloud Dashboard offers.
And some of these are good features, so they probably have to execute some extra stuff to support them.
And then 2, they're in the challenging situation of, you know, they potentially need to support a 1000000 deployments on their AWS account.
That means they're running up on all kinds of like AWS limits, all kinds of workarounds they need to do.
So that part, the first part, if they have additional features, okay, maybe worth the performance trade off.
The second part where them having to scale to a 1000000 deployments is not your problem, that's their problem.
They're getting worse performance for that reason.
Again, I'm theorizing why it could be so much slower.
But that to me is like, that's like less acceptable.
Like, I'm not gonna get worse performance just so they can scale more, you know?
Yeah.
Yeah.
There, I can see the self hosting side being worth it.
So it it we're just to clarify, were these API requests, or these were like SSR rendering pages?
Yeah.
So, the thing that I posted yesterday was very simple.
It was just a hello world type API route just to keep it as as stripped down as possible.
Because what I was actually looking to test was what the Next.
Js runtime overhead was of just having a simple API route.
Yeah.
But I just kind of discovered this other thing.
I did run benchmarks on, like, the root page, which is which is an which is a React server component page.
Also, it was also, like, drastically different there as well.
So it doesn't I don't think there's a difference between, API router or any other stuff.
Yeah.
And it puts into question, like, if it's this much worse, all the streaming stuff that they added, like, does that even compensate for that?
Is that even worth it on top of all this?
Like, we haven't added streaming, and we will.
And so we'll improve the performance even beyond what we have now.
But, yeah, it really confuses me because it's like this is the most basic thing.
Like, what's the server?
What's the delay from the server and you?
Yep.
And that's like where you start optimizing things.
And I feel like they focus on a bunch of other places while the core is is kinda slow.
I mean, I've realized when I saw this stuff yesterday that you posted that all of my stuff under Excel is just, like, simple websites that don't even have an API.
It's just, like, informational websites.
And the only, like, full stack site where there's, like, a back end and I used API routes and I used Prisma too,
of the problem.
But the only one I've ever built and deployed to Vercel is so stupid slow.
I just assumed I was doing something wrong.
And then I learned, like, Prisma's giant and you like, Prisma in a Lambda function is just a bad bad deal.
I learned that, so that's probably explains a lot of it.
But I was really surprised.
And I think it's like it's kinda like when somebody yells at a crowd for help.
You just assume somebody's taking care like, someone has done this
And figured out that we're so slow.
Turns out, no.
You just did it yesterday, and that's very surprising.
Yeah.
It's a diffusion of diffusion of responsibility thing.
It's like we all just assume someone else is gonna take care of it, and it just doesn't happen.
Yeah.
Yeah.
So it's interesting.
So I didn't I didn't get a response from them.
I'm sure they're actually, no, I did.
1 of their employees replied being like and I kind of gave him my setup, and he's going to explore.
Yeah.
Like they could and I talked to AJ for a bit.
AJ had a bunch of theories on what they might be doing behind the scenes that causes some of this because he was at Serverless Inc when they kinda had their hosted offering.
I think they had to do a bunch of weird workarounds also to deal with just the challenges you run into when you're trying to, you know, support a 1,000,000 deployments.
So I'm I'm used to, like, the true the main trade off seems to always be, like, developer experience or runtime performance.
And I don't feel like that's, like, inherently should be the case.
I feel like we should get to a place where we have both.
But it turns out Vercel is that too.
I didn't know that I was actually sacrificing runtime performance inherently by deploying to Vercel.
But, like, they tout all these DX features, like, it's so easy to use at the cost of runtime performance, it sounds like.
Yeah.
There's a historical advice.
Don't remember exactly how the quote goes.
It's like, make it work, make it something, make it fast, or whatever.
I forgot what that is.
Make it work, make it good, make it fast, or something like that?
Something like that.
Yeah.
And I find that you can you can if you can manage to rearrange that quote in every any order, and you can kind of be like, oh, that makes sense.
And I think for us, our order is like, we don't have an amazing dashboard or console, which is an amazing hook if you're trying to sell something like Vercel.
So you show off that, look how easy it is, that, like, magic experience.
And I think that's kind of where they focused.
And they when you focus on a certain area, you kind of compromise on the other.
So it might be performance they compromise on.
Also just like, like structure of the project, like it's not open source, it's closed source, things like that.
It's cause they did things in a certain order.
I think for us, we took a harder direction where we were like, let's make it open source first, which has its own challenges.
Okay.
Let's make it perform well, which has its own challenges.
And then now we're getting to, okay, we're going to eventually have a dashboard that feels like as magical to use as ourselves.
It's just a different order.
But I like our order better because I feel like it leads to something that's sustainable and healthy, whereas the other one grows really big upfront because you can really hook a lot of people.
And then then you have a bunch of work you have to now do afterward now that you have this this attention on you.
Yeah.
I'm so glad though, I'm I got out of that world, and I'm now just a Laravel developer.
I'm never gonna touch Next.
Js or Vercel again.
Wait.
When could SST deploy Laravel apps?
When will that be a thing?
Aaron
00:08:18 – 00:08:19
Does that make sense?
I mean, there's Laravel Vapor.
Right?
Which is some kind of serverless deployment option for Laravel.
So can you just, like, copy what they did with Vapor and build it in the SSD?
Yeah.
We probably I'll talk to Frank.
I'll get I'll get I'll get on it.
Is that an implication that Frank does all the work?
Yeah.
Yeah.
Yeah.
No.
I'm just, like, he does these new frameworks.
Right?
That's true.
We've been we've been laughing so hard at Frank because, he's, like, really becoming a world expert on how all these frameworks work under the hood, but he just does not do front end development at all.
So he knows, like, the exact build process of SvelteKit and all their little quirks and how it worked under the hood, But, like, he could never build a Svelte app.
I mean, he, like, he has never used Next.
Js.
And he, like, has never used Remix.
And he doesn't understand any of the conversations that anyone is having about any of these things, but he weirdly knows more about this stuff than anyone.
It's just like a weird weird situation.
But yeah.
It's what happens when you work in infrastructure, I guess.
Yeah.
Now I wanna see, like, a YouTube video of Frank building a front end app.
That would just be that would make my day.
Can we please make that happen?
Oh, well.
Yeah.
Exactly.
And he has all these opinions on what he likes and what he doesn't like, but it's fully related to, like, how annoying their internals are.
So And Next.
Js is
the most annoying by far.
Right?
Yes.
Yeah.
Yeah.
I mean, yes.
Everyone everyone knows this.
gotta try Svelte.
I kinda tried the Svelte experience.
People would get really passionate about Svelte.
My experience was kind of interesting because I was there was a moment where I knew I didn't wanna do React anymore.
So I was like, okay, what are the options?
And Svelte really seemed like it was it.
I was like, I'm going to be in a Svelte world.
I'm going to do Svelte.
But literally right when I was about to go all in, Ryan published Solid 1.0 or I think it was right before Solid 1.0.
He had some blog post that went viral about Solid.
Js.
And I saw it, and I was like, think I already said this before, but I was like, Ugh, great.
Another, like, stupid framework that looks like React.
Like, what's the point of this?
But it intrigued me enough to, like, be like, okay, maybe I should do more research before I commit to Svelte.
And then that's when I researched Solid and then, ended up using that.
But it just goes to show that yeah.
So I'm, like, super in the solid world.
I'm building everything as solid, but it's, like, just sheer random coincidence and timing that that made it so that I, I used it.
If if if it came out that blog post came out a week later, I don't think I would be using Solid.
Wild.
Sliding doors of tech.
Now, DAX is, like, one of the big solid per people.
You're one of the big solid advocates.
just Could've been doing the same for Svelte.
Who knows what that world would have been like?
And that means I would have been pro Vercel probably.
You might be working at Vercel right now.
working at Vercel without much benchmarking
it.
Yeah.
Right.
You're doing
that work for them.
So tell me about this Laravel curiosity you do.
I wanted
to make a video.
So I'm like a free agent right now.
Like, I've left React.
I don't like that, by the way.
You don't like what?
Me being a free agent?
I can be what I
wanna be.
A free agent.
I I need to know where you are.
I need to pin I need to pin it down.
I don't like the uncertainty.
If you didn't end up anywhere, you could end up somewhere I don't want you to end up.
Maybe I could.
Maybe I could.
What are you gonna do about it?
What's the problem with me ending up anywhere?
What's kinda
just won't talk to you anymore.
You just don't no.
You just don't want me to be cool.
You think I'm gonna become cool because I'm gonna get into some technology that you're not in on yet, and then we'll have problems.
Because you like to be the cool I'm
not worried about you becoming cool.
That's fair.
Totally fair.
So Laravel, I wanna make a video now that I'm done with React forever and ever.
I wanted to make a video of my first impressions of Laravel, because I hear it's like they live right beside us.
They're like our neighbor that we never really hang out with.
Yeah.
Our nice neighbor.
The kind, considerate neighbor that, like, brings your trash to the front door.
Like, so it brings your trash can in when it's out on the street.
You know?
That neighbor.
But then you never interact with them outside of, like, hey.
How how are you?
I know you had Aaron on your stream, so I'm gonna I'm gonna give you credit for that.
But, like, they just seem like our cousins, and at the same time, we have everything in common and nothing in common, and I wanted to know what's it all about.
So I'm making a video of my first impressions.
I just spent, like, an hour going through, like, Laravel getting started stuff, and it's incredible.
I can't believe how good it is, and I can't believe we chose this path of JavaScript on the back end and all the drama.
Why is it so I gotta figure this out.
You gotta help me.
You'll you'll think through this the right way.
You'll come to the right answer.
What is it about the Laravel community that doesn't they're not invested in all the drama?
They don't get caught up in it.
And why does the JavaScript community get so caught up in just, like, petty stupid stuff?
Is it an age thing?
My best theory is older, wiser developers use PHP, and they don't get caught up in the games of children, and that's the problem with JavaScript ecosystem.
Is that a good theory?
Yeah.
I I I can give you my grand theory.
Are you ready for it?
Ready for a grand theory?
Yeah.
I think this follows a lot of other things in the world and life in general.
When you have something that's homogeneous and low scale, it tends to be very stable.
And people tend to look at it as, wow, like, why can't we be like that?
Like, think about how America is always compared to, like, some Scandinavian country.
And it's because, you know, the Scandinavian country is smaller.
People are very, very similar.
Culturally, they're the same.
In America, we have just complete much bigger scale and complete chaos in who we are, where we come from, etcetera.
But Lerville is Finland.
That's So you're telling me?
Yeah.
It's like everyone's everyone's happy, and there's not too much.
It's kinda, like, very stable and and like, Ben, I think it's because, you know, they all, like, what Taylor has done with Laravel, everyone pretty much agrees.
Like, that's that works.
I'm sure there's some, like, you know I'm not gonna, like, paint an extreme picture.
I'm sure there's, like, disagreement.
And, of course, it's whenever those engineers evolve, there's gonna be disagreement.
But it's different than, like, crazy the the crazy level of competition that exists in, the JavaScript world.
It's just way, way, way bigger.
Right?
It's massive compared to the PHP world.
Why why though?
So what are the forces that led to JavaScript being so much bigger than PHP?
It's a it's a minority rule thing.
Right?
The intolerant minorities always
Say that again with different words.
There's a concept called minority rule, which is a thing where when there is an intolerant minority, it always becomes the most popular.
So a quick example is okay, you're a vegan.
This is actually a great example.
If you're a vegan, when me and you hang out, it's almost guaranteed that we're gonna eat at a vegan restaurant or a restaurant that has vegan food because you can't eat meat, but I'm willing to eat eat vegan food.
Right?
So similarly, no one can avoid JavaScript because it runs on the browser.
PHP developers are willing to write because they have to.
It runs on the browser.
And but JavaScript developers don't really need to write PHP or whatever other language.
So I think it's just that force drives it.
Like, I wasn't a JavaScript on back end developer for a long time.
I did a bunch of other languages on the back end.
I didn't really want to use JavaScript on the back end because I liked other languages and ecosystems better.
But it just got to a point where JavaScript got so big, because of this minority rule thing, I think.
And then, yeah, like with scale comes problems, but also benefits.
So here's here's what I will say.
Laravel is like a paradise because they have a great BFL in Taylor.
Right?
Benevolent dictator for life, whatever, kinda like Linus.
Which is awesome.
But if you think about continuity and, like, it like relies on like one amazing person right now, which is completely fine for PHP.
Like that person is gonna be around for a very long time.
So it's not a big deal.
But just thinking in terms of, like, like, long term and, like, really thinking about the downsides, like, that is the downside.
Like, we have more chaos, but we also have way more resilience.
Yeah.
So it's the bus factor.
Like, if if something happened to Taylor or if he just decides he's got his Lambo and his amazing life and he's just gonna quit.
Yeah.
Then the Laravel community has to figure out how to go on without him.
There is no similar figurehead in JavaScript land, is there?
If Guillermo decides he's done, he's gonna live on his angel investments or whatever.
I think JavaScript will keep going the way it is now.
Yeah.
Like, there's no one person that really holds a future of it.
Like I said, like I'm describing this in an extreme way.
I'm sure Laravel is like well run where people can take over, but just not to the same degree.
And yeah, I think, yes, the chaos is annoying, but like there is good that comes from it.
But I also completely get where you also can just not want to deal with that.
And that's that also makes complete sense.
So this was all kind of a downer.
I was really excited.
And then you said all this stuff about minority reporting and whatever Minority reporting.
Reporting.
And now I like to think about
how you're judging me because I'm a vegan.
You're judging me because I wanna do Laravel.
I actually wanna move to Finland.
It's a thing that I would love to do if they would accept me.
I don't know if the Laravel community will accept me.
It's like they don't want a bunch of Americans just rushing into Finland.
They probably don't want a bunch of us coming from the Java JavaScript ecosystem.
We'll bring all our drama with us.
The worst part about being vegan is everyone can eat our food.
So, like, the deli case at Mama Jean's, they have sushi, and they only have, like, 2 different kinds of vegetable only, like, vegan friendly sushi, vegetable rolls and stuff.
But everyone gets them even if they're not vegan.
Then they run out of that every single day.
And when we go, it's a 5050 chance that we can actually get the kind we like because all you meat eaters eating up our veggies.
Sucks.
So I don't know where that came from.
Don't worry.
I I I never get veggie sushi.
So
I'm not contributing to your problem.
Thank you so much.
I did think it was funny doing the Laravel stuff.
Like, they didn't escape NPM.
You have to, like, NPM install and NPM build.
Like, there's, like, a piece of your front end that still lives in that world.
Yeah.
So it's it's inescapable.
You can't escape JavaScript, therefore, it'll always be around.
Like, I don't want like, if I just consider nothing else, I wouldn't be using JavaScript as my backend language.
But it's just inescapable.
And because inescapable, there is and I definitely underestimated this when I was outside of the JavaScript on the back end world.
I was like, why do people care so much their back end and their final language is the same?
Like, who cares?
Like, it isn't it's not a big deal that they're different.
And it's not a big deal that they're different.
But there is a crazy amount of synergy you get when the back end and the front end is in the same language.
And with SST, we've, like, made your infrastructure code in the same language as well.
You just get better at the language no matter what what you're doing.
And that that is kind of nice.
And now that I have it, like, I'm, like, not super willing to give that up.
Yeah.
I do.
I am.
But I am jealous for all the same reasons.
And I I definitely look to that world to understand where our bar should be because their bar is so much higher on what is, like, good experience, what's a good entry level experience for a new project, what is considered complete for a framework.
I think we can get there, and I think the right people are, like, entering the JavaScript world now that will help us get there.
But, yeah, we have a long way to go.
5 years, I would say.
Yeah.
I mean, there aren't there, like, people who've tried the Adonis, Adonis, Redwood?
Like, are these things just why do people not run with those?
I think Redwood is a little bit different because okay.
So here's the issue in the JavaScript world that makes this hard.
Because I was thinking about this this morning.
I was like, okay, if I was gonna take SST and build another select jet stream, the thing you were using, if I was gonna build an equivalent, like, what what could what would that look like?
And I realized, like, I wouldn't even be comfortable saying that you should use tRPC, or you should use REST, or you should use GraphQL, or you should use Replicash, whatever, because I can't make I just don't feel
the ability to make that strong of a decision in the JavaScript world.
I am not super clear on why it's easier to do that in other ecosystems because, for me, I feel there's all kinds of use cases, and I personally wouldn't always just use one of those things.
Yeah.
I struggle to, like, create, like, a really complete boilerplate for that reason.
But, yeah, I'm not sure why that seems to fly in.
Again, maybe just because they're smaller.
Is it yeah.
I was gonna say, when, like, little air of the world, is there just one of all those things and you don't have to make decisions because there's just one way of doing it?
Sounds nice.
Oh, okay.
So here's, like, the root issue or here's, like, an example of the problem.
Right?
If I built a starter, it would have to work whether you're building linear or you're building, I don't know, like an e commerce website or something, or I don't know, some other SaaS that's not like intense, like linear.
And the PHP world, no one would try to build a linear.
So they they do the inertia thing.
Have you seen that?
Yeah.
Exactly.
I've seen that.
I'm not saying you can't use front end frameworks there, but yeah.
Inertia looks cool.
Yeah.
I don't know.
I I didn't wanna use it because I was trying to escape the Next.
Js world.
Like, that was my whole thing.
And then it's like, inertia plus Next.
Js.
Like, no.
Don't take me back.
Oh, inertia.
Use Next.
Js.
Like, I thought it was for, like, using the frameworks directly, like React or
You can use React Vue.
But it said with Next.
Js, I think you can, like, build an Next.
Js app, but you just wanna build your back end with PHP, I guess.
guess that's the thing.
I don't know.
I gotta learn PHP, so I can actually be a Laravel dev, because I don't actually know any PHP.
That's the other issue.
I do think TypeScript is a better language than than PHP.
I mean, I'm obviously gonna say that because I'm really into going crazy with types and not everyone's into that.
Are there any types in PHP?
Is it does it have a type system?
It does.
It does have a type system.
I think the newest version of PHP is type system.
Aaron mentioned he doesn't even use it.
Like, he hasn't even tried it.
Why has Aaron not used types?
Why is Aaron wrong?
He's asked, like, what?
Give me a compelling reason to use it, and no one has been able to convince him of anything compelling enough.
That sounds exciting enough for him to try it out.
Wait.
We have compelling reasons to use type systems.
Right?
Not really.
I feel like Someone give him a compelling reason?
No?
I feel like I've struggled with
this problem for, like, a decade now.
Because one of the problems why?
I thought we liked types.
No.
I love types, and I think everyone should use them.
But that's different for me being able to get someone excited about types when they don't understand it.
Oh, Aaron's here.
Aaron's saying he doesn't like types.
What do you mean?
We're on a podcast, Max.
What are you talking about?
Who's here?
Aaron's not here.
Do you wanna bring Aaron on?
I mean, we can.
Yeah.
We can bring Aaron on.
We're talking about Laravel and how Aaron has types type takes.
But, yeah, I I don't I love types.
I just have never been able to found find a convincing way to get someone excited about trying them out when they aren't already using them, understanding the benefits.
It's hard to explain, I think.
Well, see if you can see if you can convince Aaron when he comes on.
This is Aaron Francis joining us from PlanetScale.
Aaron
00:23:14 – 00:23:20
Here I am.
I was listening in the car.
I was out getting coffee, and I was listening in the car, and I made it just in time.
Go ahead, Dex.
I've seen that PHP has its types.
I'm curious what that means, and I'm curious
Aaron
00:23:34 – 00:23:35
We we have types, and
Aaron
00:23:36 – 00:24:00
lot of people think of PHP as, like, the 5.2 days, which was, like, you know, 15 years ago where it was just the wild, wild west.
We have full on we have full on type systems now.
I think in, like, 8 point something, we have generics, which I understand can be very fancy.
I haven't I haven't dug into them very much.
I I feel like I'm kind of a type incrementalist.
Aaron
00:24:00 – 00:24:21
In in PHP, we have a lot more, like, proper classes than something like JavaScript.
So in JavaScript, my understanding is from what I see on on Twitter, which is most of my understanding.
My understanding is you pass around a lot of objects.
Right?
Just just objects, and they have this amorphous shape, and the type system helps enforce, like, hey.
Aaron
00:24:21 – 00:24:45
This object that I'm passing around, it conforms to the user type or the or the podcast type or the post type.
And it's like, oh, that's helpful because I know I can look for username or podcast title.
Right?
I kinda I kinda buy that.
In PHP, we would be passing around something like a user object, like an actual proper class or a podcast episode class.
Aaron
00:24:46 – 00:25:11
And if you're using, you know, an IDE or if you're, like, using PHPStorm or something, you get all of that, like, you get all of that that autocomplete.
And if you type hint the, if you type hint the method that accepts the podcast, the actual language will say, like, hey.
You passed a user instead of a podcast.
I'm gonna, like, I'm gonna blow up, and so you can't run.
Now I think that is runtime and not, like, compile because we don't do that.
Aaron
00:25:11 – 00:25:39
So there's a little bit of a difference there.
But I where I where I land is, like, I like type hinting objects.
Like, I I like knowing that my process podcast method is going to receive a podcast object.
Like, that makes me feel pretty comfortable.
It's it's when you get into stuff like, I'm gonna type hint or I'm gonna make a a type called positive integer so that I always know that when I'm charging my user, the type is positive integer.
Aaron
00:25:39 – 00:25:57
I'm like, I don't understand the overhead of creating this creating this very base type of positive integer to protect.
Who am I protecting, I think, is always the question.
Like, what what are you guys not writing tests?
Not YouTube, but, like, the the community.
Are y'all not writing tests?
I'm not writing tests.
Well, sorry.
Aaron
00:26:00 – 00:26:24
Because peep people are always like, well, how do you know like, I never write bugs because I have a type system.
And I'm like, I don't understand all the bugs that are coming from mismatched types.
I understand bugs that are coming from me doing something silly, but not because I'm passing, you know, a string instead of a a integer.
So that's kinda like my my broad stance.
So pick that apart as you will.
Aaron
00:26:24 – 00:26:24
Yeah.
I think that makes sense.
I think the way I see it is there's almost, like, 2 level not not 2, but we'll start with 2.
There's, like, 2 levels to type systems.
So there's the basic like, like keep track of the structure of the things I'm passing around, which it sounds like if you're yeah, if you're using any language with classes, like you kind of already get that without having to have an additional set of annotations annotating everything.
Ifand mostand a lot of languages, that's kind of where they stop.
And I think there's this weird gap between that and the next level where you can add, like, a few more features.
But it feels kind of like useless, like, the examples you get, right?
Like, yeah, those aren't like game changing.
I need to have it features.
But then the next, there's like a language can get a more complex type system.
If they kind of keep going down that path, they can kind of like break through to another level, which is where I think TypeScript has gotten to, where you can do like all sorts of like interesting derivations and inference and all kinds of fancy things that realistically, like, the end user really never sees, or the end developer really never sees that stuff or need to touch it.
But it allows for something like really insane, just kind of features in when you're using a certain library or using, you know, certain things.
look at some of the libraries that do this, like, you know, Drizzle, like the ORM, that new one.
If you look at, like, all the 10 stack, all of Tanner stuff he's been rewriting on the front end, they all kind of follow this model where the end user just is writing plain JavaScript.
It's almost like someone's there, like, guiding them on how they're structuring things.
So there's this weird gap where languages don't go that far, where it's kind of like, I don't see the huge benefit of the type system.
I feel that way about Go.
I feel like I like everything about Go, but I feel that type system doesn't go far enough.
So it's just kind of this annoying type system to deal with, where I'm like, like it's not really doing enough for me.
And again, the thing I'm describing, like this next level thing, it's hard to understand it.
Like, I don't know how else to explain it.
If I think back to when I understood it, I can't remember.
I just remember trying a bunch of stuff in TypeScript and realizing I could do certain things.
And then it turned out that was like a whole category of stuff that I didn't know existed.
But, yeah, I think there's, like, light type systems where I'm like, yeah, that's that's probably good enough.
Like in the PHP world, what you have is probably definitely good enough.
And going, like, 10% more isn't worth it unless you're gonna go, like, a 100% further with the type system, if that makes sense.
And there's, like, levels past that.
There's, like, languages with, like, a really, like, correct type system.
Like, you have, like, the OCamls and the Haskells, things like that.
But, yeah, I think, like, there's, like, different stops on the station, if that makes sense.
Aaron
00:29:00 – 00:29:12
Yeah.
That that totally makes sense.
And I will freely admit that, like, I haven't I haven't really dug into TypeScript.
And I see all these people as a corollary corollary be like, oh, man.
Tailwind sucks.
Aaron
00:29:12 – 00:29:46
And I'm like, you just gotta try Tailwind, man.
And I admit, like, I'm the person saying TypeScript sucks, but I haven't used it.
Like, another thing is PHP community has been relatively slow to adopt more strict typing.
And I have found in my career that I, I have gotten outsized advantages from ignoring things until, like, until I'm sure that they're gonna stick around.
And so, for example, Laravel has just recently adopted, stronger typing in Laravel core.
Aaron
00:29:46 – 00:30:11
And so that to me is a signal that, like, okay, Aaron.
It's time to, you know, it's time to move on from 2014 and, like, catch up a little bit to typing.
And so I'm now at the point, like, I'm now at the point in my career where it's like, okay.
The the benevolent dictator, Taylor, has decided we're gonna bring some typing to the core, and now it's time for me to say, okay.
Well, I guess types are gonna stick around for a while.
Aaron
00:30:11 – 00:30:37
What I don't wanna do is I don't wanna be the one expending all of my energy trying to convince Laravel to bring typing to Laravel because I got other stuff I gotta do.
But now that, like, now that it's here, it's like, alright.
Well, I guess, types 1 like, I was able to success successfully, like, ignore Angular until it went away.
I ignored microservices till they went away.
I'm still waiting for Docker to go away, but, like, I just ignore a lot of stuff.
Aaron
00:30:37 – 00:30:51
And then when somebody says, like when Laravel says, hey.
We're gonna use Vue JS now.
I'm like, alright.
Well, I guess I gotta learn Vue JS, and it's been fantastic, and I love it.
And so I will admit that part of it is, like, I just don't wanna learn it until I'm sure that it's gonna stick around.
Aaron
00:30:52 – 00:30:54
And now it seems like it's gonna stick around.
I would say the adoption curve thing is is interesting because, naturally this stuff at the early part of the adoption curve, you're gonna have this weird combination of, so like you probably work on, like, real products.
I work on products for developers.
Right?
Mhmm.
Yeah.
So I tend to be more on, like, extremely early adoption of things because I'm, like, trying to figure out opportunities for me to build stuff for the developers.
So I find a lot of the people in that space are and they're all similar to me that we're trying to, like, figure out the next thing.
The paradox here is most of the things in this space are gonna die because they're in we're, like, in this early zone.
So I think a lot of conversation is this weird clash of people in my area talking with people in your area, and we're, like, kinda doing very different things.
Mhmm.
We really don't need to be listening to what we're talking about because we're debating with each other on where we what we think is gonna make it through.
And we each have different opinions on it.
And like, 1 out of 10 of us are gonna be right.
Right?
So, yeah, it does make sense if you're just building like like, an actual thing, not just stuff for other developers, that you're not at the same part of the adoption curve as the rest of us.
I feel like I'm on Twitter.
I hate this conversation so much.
I'm sorry.
This is, like, the same stuff I can't stand listening to when you guys talk about types on Twitter Yeah.
Discord.
Aaron
00:32:13 – 00:32:18
Also, as as a show note, feel free to tell me to leave whenever once I've served my purpose of types of types.
Talk to you.
No.
That's the last thing in the world we should have talked about with you because you you work at PlanetScale.
You're actually a good DevRel, which is, like Thanks.
Yeah.
That's my brother.
Unicorn.
Yeah.
There's that.
There's I wanna know what a perfect Saturday is for
Aaron because someone asked that in Twitch.
I have all kinds of things I wanna talk to Aaron about.
Laravel?
Aaron
00:32:37 – 00:32:41
Hey.
I am I am here.
I got my coffee.
I got my studio.
What do you wanna talk about?
Aaron
00:32:41 – 00:32:42
Give me give me one, and I'll pick 1.
Dax, what do we wanna talk about?
Let's talk about DevRel stuff.
I I Yeah.
Maybe we can ask you an open ended question of, like, is this your first role as in being a DevRel?
Aaron
00:32:53 – 00:33:21
Yeah.
So I was, for a minute, I was, like, a marketing engineer at Tuple, the pair programming company, which is amazing, for literally, like, 6 months.
And then Ben and I, the CEO, and I decided, like, no.
Y'all need, like, a y'all need a marketer, not someone who's gonna, like, you know, build stuff and talk about it.
And so then after that, I went to I went to PlanetScale, and this is my first role as, like, a developer, you know, whatever, relations evangelist, educator.
Aaron
00:33:21 – 00:33:35
I have opinions on that.
But this is my first role in that.
Prior to that, I spent, like, 6 years at a property tax company in Texas where I live, building, their internal CRM, and it was wonderful.
I loved it.
Yeah.
So I'm curious, like, when you shifted into this role, did kinda did PlanetScale, like, tell you what their philosophy around it was, or were you be, like, did you have to kinda help them figure it out?
Like, what what did like, what's your goal in your job?
Aaron
00:33:49 – 00:34:24
My goal is to be happy, Dax.
So here like, when I when when I joined when I joined PlanetScale, I joined because and I think, Dax, you and I talked a little bit about this philosophy in the last episode.
I joined because I was already doing the job that they were trying to hire someone to do.
I just wasn't doing it for them.
So I joined because I was writing articles about MySQL, and I was talking about MySQL, and they looked and were like, hey, we're trying right now to hire someone to do this under our banner.
Aaron
00:34:24 – 00:34:40
We come do this for us.
And so they're, like I think the philosophical lesson there is, like, do the work and put yourself out publicly and see what happens.
Because I got a DM from Sam, the CEO, that was like, hey.
How come you don't work for us?
And I was like, dude, no one's ever asked me to work for you.
Aaron
00:34:40 – 00:34:50
Like, why would I work for you?
And so he said, you know, hey.
I like what you're doing.
We're we're trying to hire a developer educator, which I think is nuanced.
Do you wanna come do that for us?
Aaron
00:34:50 – 00:35:03
And I was like, what does it mean?
He said, I just kinda do the exact same thing you're doing, but more of it and get paid for it.
I was like, yeah.
That sounds great.
And so I think the nuance there is that I am I am a developer educator.
Aaron
00:35:04 – 00:35:30
And I listen, I'm new to this, like, be a public presence for a company.
I think there is, a whole community of developer relations, that is a little bit different and not a community that I'm, like, super involved in.
I think the developer relations community has structure and history and leaders and opinions, and I'm just like, I don't have any I'm I'm I am not a part of that community.
Aaron
00:35:31 – 00:36:08
I think what is slightly different for me is I'm a developer educator, and my job specifically, we we have it really good at PlanetScale because our product is MySQL, and MySQL is broad and huge and useful and useful apart from PlanetScale.
I'm biased, but I think it's best on PlanetScale, but it's incredibly useful if you just put it on a box yourself.
Right?
And so my job is to, like, teach people how to use MySQL effectively.
And as a part of that, hopefully, we will convince them that, like, you can use MySQL effectively, and you can use it most effectively on PlanetScale.
Aaron
00:36:09 – 00:36:29
But if if you don't choose to come to PlanetScale, we're still gonna give you, like, all the knowledge you need to to use it effectively.
And we have this nice split of, like, I don't know the lower level of, like, how to run MySQL effectively.
And so I don't teach people how to do that, but that's great because that's what PlanetScale does anyway.
So we have this nice split, kinda naturally.
The the broadness is something I've been thinking about so much.
I'm so grateful for it.
I think, it's easy when your company is in a broad space because then this part of your job, it's very easy to deliver broad value.
Like, so for us, you know, we build a very specific framework, but we're just in the serverless space.
We want to help people do stuff in a serverless way and help people figure out what the best way to do things is.
So I get to, like, talk about anything, like anything related to serverless, whether it's on the more on the front end side, more on the back end side.
Like, that's fun.
And I can kind of talk about it.
And it's, like, not hard for me to not be talking about SST every day because our scope is so broad that we're we're down to, like, do anything.
And MySQL is the same where, you know, there's so much information that's not PlanetScale specific.
And that I find is the best, probably the only form of like, whatever you wanna call this category or thing, like when companies have people publicly talking about things, like that's the only form of it that I engage with.
The part that drives me crazy is when the company's scope and product is very small and specific, which is fine because a lot of value and opportunity there.
But then this side of it, like the DevRel side of it, ends up being really weird because they can only ever talk about this very specific thing.
And they need to talk about it as though it's going to solve every possible scenario, every possible problem.
And like, for me, it just kinda loses authenticity there.
And I I think I actually found that's most of it.
I would say, like, 90% of companies fall into this category.
I think, like, they could do what Aaron and PlanetScale are doing in some for like, I think of the auth case.
Instead of just making a bunch of videos, they're like, here's how this auth service works with Vercel, and here's how it works with whatever.
They could just, like, teach people about auth.
I mean, right?
They could do the thing where there's, like, there are a lot of concepts here people are fuzzy on.
And the more you understand about auth, the more likely you're like, I don't wanna do this.
I wanna pay someone to just do this for me.
Right?
Could they do that?
Yeah.
I mean, that auth is actually a good example because I was actually thinking about it as it's hard to make that broad.
But you're right.
Because you can just talk about how OAuth works, how OIDC works, like a history of it, like, why this all makes sense, like why these centers exist and how they have like, there's just so much you can talk about there.
But as maybe the part that's gonna be spicy, you can only do that if you're an expert in those things.
And when Planetsky got hired Aaron, they didn't hire him because he was an expert at he didn't have like years of experience doing this role.
They hired him because he has a lot of experience with MySQL.
And they figured he could learn this other stuff and figure out his own flavor of it.
I think that's a much better approach.
Like, if you are a company doing auth, like make sure you have someone that's just like the guy that can do all the auth stuff.
So yeah, I think that's maybe where it's hard for, like, someone with a lot of DevRel experience to, like, shift into like, one day, they're working at a database company.
The next day, they're working at an auth company.
The next day, you know, you can't become an expert.
That's the other problem.
Yeah.
The famous, like, DevRels for hire, the ones that are on all the conferences.
Like, when you don't know what company they work for at the conference they show up at, that's a problem.
Like Mhmm.
There's just no authenticity there.
Like, you're shilling a different thing this week.
That's just that loses everything that we're talking about, which is the thing that's so
great about what Aaron's doing at PlantScale.
Aaron
00:39:39 – 00:40:04
Yeah.
There are only there are only a few of these roles I could fill, and PlantScale is 1.
I would say Laravel is another.
If they needed any evangelism, I could do that.
But I would feel, like, I would feel really out over my skis if I were at some other company where it was like, I'm I'm being paid to evangelize something, and I am the junior here.
Aaron
00:40:04 – 00:40:19
Because when like, at at PlanetScale or with Laravel, I can talk intelligently about the shortcomings.
Like, I know what the trade offs are.
And so when somebody's like, hey.
I need I need to run a analytics database.
I can be like, I don't think my SQL is right for that.
Aaron
00:40:20 – 00:40:27
Whereas if I were if I were the junior, I was like, yeah.
Data you said database.
I say database.
Like, we're talking about the same thing.
It's like, oh, boy.
Aaron
00:40:27 – 00:40:41
We are not talking about the same thing.
And so, like, if I were if I were to go to some other company, I would feel really insecure, but that's my personality.
I think some people don't feel insecure.
They just talk like they're the expert.
And I'm like, wait.
Aaron
00:40:42 – 00:41:00
I know I know more than you about this thing, and I know that you're being paid to say this, and you're wrong.
And, that's where I think it's like, oh, gosh.
This is this is a weird and that's why I said I'm not a part of the dev rel because there's a whole, like, commune I just I I teach people how to use MySQL, and I think PlanetScale's a good place to do that.
Yeah.
Yeah.
I think there's a lot of room to grow.
Hopefully, these people hear these kind of things as constructive criticism.
Like, I think there's a lot of room for companies, start ups, to do better in this area in terms of marketing their products.
This this whole podcast has been so technical and so, like that we started this without a topic, and it just feels like it's it's had, like, a track.
We're going places.
Aaron
00:41:21 – 00:41:23
We can talk about peanut butter and jelly sandwiches if you want.
Aaron
00:41:24 – 00:41:27
that.
Listen.
I listened to I listened to yesterday's episode.
Yeah.
What's your, what's your perfect Saturday, Aaron?
Let's Let's talk about something that's on tech.
Aaron
00:41:32 – 00:41:40
Yeah.
Well, unfortunately, it might be tech anyway.
I was I was just on yesterday.
I don't know if y'all know Justin Jackson.
He has a podcast called Build Your SaaS.
And Yeah.
Transistor.
We use it for this podcast.
Aaron
00:41:43 – 00:41:57
Yeah.
Yeah.
Yeah.
Exactly.
I was on with him yesterday talking about how at this phase in my life, I'm really trying to, like, change the trajectory of my life, and so I'm working extremely hard in this era, and I call it, like, my maximum effort era.
Aaron
00:41:57 – 00:42:16
And it will you know, that era will end at some point.
Some point.
And so right now, my perfect Saturday is I have 2 kids who just turned 2.
They're twins.
My perfect Saturday right now is usually, we wake up, you know, 7, 7:30, get the kids up, do the whole breakfast thing.
Aaron
00:42:16 – 00:42:40
And then I usually take the kids out so that the boss, my wife, has some time just, like, home alone, you know, just to, like Yeah.
Sit and stare at the wall and let the brain come down a little bit.
So I take the kids out and then, you know, we come back and we usually, like we usually hang out.
This past weekend, we went to the fire truck museum here in Dallas, and the kids lost their freaking minds.
It was so much fun.
Aaron
00:42:40 – 00:42:56
They just fire truck, ew, ew, just like all day long.
So a lot of time with family.
And then when they nap, and then in the afternoons, I spend a lot of time just, like, doing side work.
And I was telling Justin yesterday, I don't have hobbies.
I don't play video games.
Aaron
00:42:56 – 00:43:10
I don't watch sports.
I just freaking work, and I'm happy.
Like, I like doing that because I'm think I, like, I am pursuing my dreams, and this is what I wanna do.
And so that's that's my uninspired take for a Saturday right now.
Yeah.
This is I mean, we're all gonna sound I guess people are gonna hear this and then again sound like these are toxic Americans.
But Muscle bros.
Yeah.
I love getting work done on the weekend because it feels like a bonus.
It feels like a cheat because, like, the expectation was 0.
So if I get an hour work done on the weekend, it feels like 10 times more important than or more relevant than
a week.
How I think about it.
Like, as soon as Saturday morning comes around, it's like, anything I get done today and tomorrow, it's just gravy, and that's I love it.
I love the psychology of there's no pressure.
It's like I'm just getting ahead.
Aaron
00:43:40 – 00:44:07
Yeah.
That's awesome.
And, like, I'm fully aware of the toxic hustle bro thing, and I think I'm trying literally, I'm trying to, like, make my dreams come true.
And, like, it just so happens that I'm not a painter, and I'm not an artist and I'm not I just I happen to be a programmer.
And so when I'm, like, when I am out here working and hustling on the thing that I want my life to be, it looks like the exact same thing that I do 9 to 5 for PlanetScale.
Aaron
00:44:07 – 00:44:17
So it feels like, oh, jeez.
He just works all the time, but it's like, yeah.
I'm trying to change I'm trying to change my life, and I'm I'm not a painter, so I just I just program more.
You know?
Yeah.
No.
When it's your hobby, that's always been my my problem.
It's like, this is what I do for fun.
It makes me feel really guilty in my relationship with my wife because every time I'm in my office, I'm having a great time.
She knows that.
She's not having a great time.
So it does feel very like, I wish you could live your dream.
Okay.
Now we're getting too deep.
I don't wanna go in there.
Never mind.
Aaron
00:44:37 – 00:44:39
Back cuddle.
Back sandwiches.
Back sandwiches.
Yes.
Anything else, please.
My wife doesn't she doesn't sorry.
On Saturdays, we don't just leave her.
She leaves the house.
Mhmm.
So the whole weekend, she was gone, and it's just me and the boys at the house.
Smart.
Well, I have a dog and 2 cats, so that's something.
Aaron
00:44:57 – 00:44:57
You just
Aaron
00:44:58 – 00:45:00
all the time.
That's amazing.
Oh, just soak it up, Dax.
Aaron
00:45:02 – 00:45:02
Yeah.
For real.
If you
have if you plan to have kids and not like I mean, I love my kids.
They're the best thing in the world.
But it's just life is so different before and after kids that if I could go back, I would have viewed that time before we had kids so differently.
We just had all the time in the world to do whatever we wanted.
Mhmm.
realize it.
Literally, everyone in my life is telling me this, so I don't I don't think I'll take it for granted.
You're not gonna miss it?
Yeah.
Okay.
Yeah.
That makes sense.
With everyone who's saying the exact same thing.
So
Aaron
00:45:27 – 00:45:37
Okay.
And I just I just wanna hear.
Just give me just give me 2 minutes on on Laravel.
I know that we're Finland or Sweden or whatever, but, like, tell me how much you loved it.
So I just I can't believe, like, there's not more people in the JavaScript community talking about it or, like, that have had any brush ins with it.
I've seen people on Twitter now say, like, yeah.
I see the same stuff.
I see people happy, and I just have never tried.
Like, why haven't we tried?
It's just, like, I know PHP is a whole another thing I have to learn, but I've done it with so many other languages.
Why would I be hesitant to learn PHP to get in on this Laravel thing?
I don't
know, man.
We've seen you try to learn Elixir.
Okay.
Okay.
Just go go ahead, Jeff.
Have you learned other languages?
Have I?
I've done all kinds of stuff, probably.
Python, Jython.
Okay.
I'm gonna stop.
I saw you post the other
day you got started in Jython?
That was true.
What they in college, that was the first thing they taught us.
It was like, here, we're gonna teach you a a weird if Python and Java had a baby language.
That's your your first exposure to programming.
And you're stuck with it?
No.
No.
I just did it in college.
Like, that was No.
I'm saying, like, you didn't give up on programming right there.
Oh, yeah.
Yeah.
No.
Yeah.
I kept I kept with the programming thing.
Yeah.
So Laravel, the the starter project, though, is just incredible.
The and it just the cohesiveness of, like, going through the Laravel, getting started from Laravel.com, the getting started.
It's just like there's an answer for all the things, and you don't feel like you have to make 50 decisions for every little piece of it.
It's It's like, yeah, you gotta pick a database, and there's a few options.
But it's like, it holds your hand through all of it.
All of that's great.
I know a lot of technologies have that, but there's something different with once I did the Jetpack thing with Laravel and I saw the project, it's very clear it's so different, so different from the JavaScript ecosystem.
One, like, the the project is not, like, optimized for how few files and how little code can there be.
It's like a ton of stuff, but, like, it's got a lot of functionality out of the box.
I don't know.
I've said a lot of the same things in, like, 3 different formats.
So if you're hearing this out of my mouth for the 3rd time, I'm sorry.
I'm just very excited.
I don't know.
I wanna play with it more.
Yeah.
I mean, like, that cohesiveness you felt, I definitely don't take that for granted.
It's really hard to pull that off, like, all the way from, like, every part of it feeling the same, like it's one unit as opposed to a bunch of things glued together.
It it is really hard to do that, and It's really impressive that somebody can do that.
I haven't deployed it yet.
Like, I can't wait to use Vapor, and I can't wait to play with all these other there's just so many different Laravel products.
And knowing that they're all kind of, like, under one roof and they have some that cohesiveness.
The docs are amazing.
I love the the comments, the lore around, like, his his three line comments that are all, like, staggered.
It's true.
They're all over the place.
It's incredible.
The attention to detail, all of it.
I'm just I'm a big fan.
Aaron
00:48:11 – 00:48:33
Yeah.
I will say I was, you know, listening while I was getting my coffee before I came on.
I think the benevolent dictator plays a huge role.
I also think the fact that Laravel is itself a company.
So it's like if DHH didn't have Basecamp and DHH and 37 signals spent all of their time, energy, and money on rails, I feel like it would be closer to Laravel.
Aaron
00:48:34 – 00:49:06
But Laravel is a company that has, like, 5 or 6 employees, and they have SaaS products.
So they are using Laravel to build full on SaaS products, and they're spending all of their time and all of their money to make Laravel the ecosystem, better for Laravel developers.
And so that's that's where you end up with things like Vapor and Forge and Horizon and all that stuff is because they were building a SaaS, and we're like, man, running queues sucks.
What if we built a queue management package?
And they're like, okay.
Aaron
00:49:06 – 00:49:21
We can do that and open source it.
And it makes sense to, like, tightly integrate it because they're Laravel LLC.
Of course, it's gonna be integrated with Laravel.
So I think that is part of the secret sauce is Taylor this is gonna sound mean.
Taylor has nothing else.
Aaron
00:49:21 – 00:49:34
Taylor has Laravel.
Like, he has Laravel.
He's not running base camp.
You know, high rise or whatever.
He's running Laravel, and so he just just focuses on that and driving the Lambo.
Aaron
00:49:34 – 00:49:35
So I'll leave it there.
Yeah.
I I love that model.
Like, we obviously at SST, that's the exact same model we're trying to recreate.
Like, just having it like, we like it's it's proven out there, so we can, like, trust that.
We can it makes sense.
But, yeah, everything about it is awesome.
Like, how small the company can stay and, like, how much impact they can have despite that.
Like, it's it clicks with everything that we want as a team.
Aaron, thank you so much for coming out.
We didn't even say, like, Aaron Francis.
This is Aaron Francis joining us from PlanetScale.
We just said, like, hey, Aaron.
It could be kind of a weird transition in the middle of the podcast.
Well, you just said it.
You just said it.
Aaron
00:50:10 – 00:50:16
Thanks for having me on.
I'm glad, I'm glad I was chatting in the Twitch, and y'all could pull me on.
I really appreciate being here.
Yeah.
It was great to have you.
Alright, Dax.
Anything we wanna say before we wrap this up?
Nope, that's all.
We never have anything at the end.
Goodbye.