Benchmarking, Type Systems, and Good Hustle

May 11, 2023

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.

Transcript

Dax
00:00:00 – 00:00:04
You wanna know something funny? I, this is embarrassing. I wanna say it anyway.
Adam
00:00:04 – 00:00:32
Say it. Hey. Can you tell me about the benchmarking stuff? I just can't wait any longer. It's driving crazy.
Adam
00:00:32 – 00:00:34
I just need to know, like, how slow is Vercel?
Dax
00:00:34 – 00:00:49
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.
Dax
00:00:49 – 00:01:12
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
Adam
00:01:12 – 00:01:13
a lot of the time. Yeah.
Dax
00:01:14 – 00:01:34
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.
Dax
00:01:34 – 00:01:57
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.
Dax
00:01:58 – 00:02:11
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.
Adam
00:02:11 – 00:02:12
Mhmm.
Dax
00:02:12 – 00:02:35
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.
Dax
00:02:35 – 00:03:08
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.
Dax
00:03:09 – 00:03:31
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.
Dax
00:03:31 – 00:03:41
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.
Adam
00:03:41 – 00:03:48
So it it we're just to clarify, were these API requests, or these were like SSR rendering pages?
Dax
00:03:48 – 00:04:04
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.
Dax
00:04:04 – 00:04:20
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.
Dax
00:04:20 – 00:04:37
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.
Dax
00:04:37 – 00:04:48
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.
Dax
00:04:48 – 00:04:53
And I feel like they focus on a bunch of other places while the core is is kinda slow.
Adam
00:04:53 – 00:05:09
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,
Dax
00:05:09 – 00:05:10
so that's probably a lot
Adam
00:05:10 – 00:05:25
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.
Adam
00:05:25 – 00:05:34
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
Dax
00:05:34 – 00:05:34
work Yeah.
Adam
00:05:34 – 00:05:39
And figured out that we're so slow. Turns out, no. You just did it yesterday, and that's very surprising.
Dax
00:05:39 – 00:05:46
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.
Dax
00:05:46 – 00:05:55
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.
Dax
00:05:55 – 00:06:13
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.
Adam
00:06:13 – 00:06:34
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.
Adam
00:06:34 – 00:06:42
But, like, they tout all these DX features, like, it's so easy to use at the cost of runtime performance, it sounds like.
Dax
00:06:42 – 00:06:51
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.
Adam
00:06:51 – 00:06:54
Make it work, make it good, make it fast, or something like that?
Dax
00:06:54 – 00:07:15
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.
Dax
00:07:16 – 00:07:30
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.
Dax
00:07:30 – 00:07:48
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.
Dax
00:07:48 – 00:08:04
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.
Adam
00:08:05 – 00:08:13
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.
Adam
00:08:13 – 00:08:17
When could SST deploy Laravel apps? When will that be a thing?
Aaron
00:08:18 – 00:08:19
Does that make sense?
Adam
00:08:19 – 00:08:28
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.
Adam
00:08:28 – 00:08:31
We probably I'll talk to Frank. I'll get I'll get I'll get on it.
Dax
00:08:31 – 00:08:34
Is that an implication that Frank does all the work? Yeah.
Adam
00:08:34 – 00:08:37
Yeah. Yeah. No. I'm just, like, he does these new frameworks. Right?
Adam
00:08:37 – 00:08:37
He just itself.
Dax
00:08:38 – 00:09:01
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.
Dax
00:09:01 – 00:09:15
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.
Adam
00:09:15 – 00:09:24
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.
Dax
00:09:24 – 00:09:33
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
Adam
00:09:33 – 00:09:35
the most annoying by far. Right?
Dax
00:09:35 – 00:09:37
Yes. Yeah. Yeah. I mean, yes. Everyone everyone knows this.
Dax
00:09:37 – 00:09:38
I really
Adam
00:09:38 – 00:09:42
gotta try Svelte. I kinda tried the Svelte experience. People would get really passionate about Svelte.
Dax
00:09:42 – 00:09:55
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.
Dax
00:09:56 – 00:10:17
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.
Dax
00:10:17 – 00:10:32
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.
Dax
00:10:32 – 00:10:45
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.
Adam
00:10:45 – 00:10:55
Wild. Sliding doors of tech. Now, DAX is, like, one of the big solid per people. You're one of the big solid advocates.
Dax
00:10:55 – 00:10:56
Yeah. And
Adam
00:10:56 – 00:10:59
just Could've been doing the same for Svelte. Who knows what that world would have been like?
Dax
00:10:59 – 00:11:01
And that means I would have been pro Vercel probably.
Adam
00:11:02 – 00:11:03
Oh, yeah.
Dax
00:11:03 – 00:11:04
Alternate universe.
Adam
00:11:04 – 00:11:06
You might be working at Vercel right now.
Dax
00:11:06 – 00:11:07
Oh my god.
Adam
00:11:08 – 00:11:08
I feel like I'm
Dax
00:11:08 – 00:11:10
working at Vercel without much benchmarking
Adam
00:11:10 – 00:11:12
it. Yeah. Right. You're doing
Dax
00:11:12 – 00:11:17
that work for them. So tell me about this Laravel curiosity you do. I wanted
Adam
00:11:17 – 00:11:21
to make a video. So I'm like a free agent right now. Like, I've left React.
Dax
00:11:21 – 00:11:22
I don't like that, by the way.
Adam
00:11:22 – 00:11:25
You don't like what? Me being a free agent? I can be what I
Dax
00:11:25 – 00:11:29
wanna be. A free agent. I I need to know where you are. I need to pin I need to pin it down.
Adam
00:11:29 – 00:11:30
I don't like the uncertainty.
Dax
00:11:30 – 00:11:34
If you didn't end up anywhere, you could end up somewhere I don't want you to end up.
Adam
00:11:34 – 00:11:38
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
Dax
00:11:38 – 00:11:39
just won't talk to you anymore.
Adam
00:11:40 – 00:11:49
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
Dax
00:11:49 – 00:11:51
not worried about you becoming cool.
Adam
00:11:53 – 00:12:08
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.
Dax
00:12:08 – 00:12:09
Our nice neighbor.
Adam
00:12:09 – 00:12:17
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?
Adam
00:12:17 – 00:12:33
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.
Adam
00:12:33 – 00:12:50
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.
Adam
00:12:50 – 00:13:04
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?
Adam
00:13:05 – 00:13:15
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?
Dax
00:13:15 – 00:13:18
Yeah. I I I can give you my grand theory. Are you ready for it?
Adam
00:13:18 – 00:13:19
Yes.
Dax
00:13:19 – 00:13:35
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?
Dax
00:13:35 – 00:13:52
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.
Adam
00:13:52 – 00:13:54
But Lerville is Finland. That's So you're telling me?
Dax
00:13:54 – 00:14:09
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.
Dax
00:14:09 – 00:14:14
I'm sure there's, like, disagreement. And, of course, it's whenever those engineers evolve, there's gonna be disagreement.
Adam
00:14:14 – 00:14:15
Yeah.
Dax
00:14:15 – 00:14:28
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.
Adam
00:14:28 – 00:14:34
Why why though? So what are the forces that led to JavaScript being so much bigger than PHP?
Dax
00:14:34 – 00:14:38
It's a it's a minority rule thing. Right? The intolerant minorities always
Adam
00:14:38 – 00:14:39
Say that again with different words.
Dax
00:14:40 – 00:15:04
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?
Adam
00:15:04 – 00:15:05
Yeah. Yeah.
Dax
00:15:05 – 00:15:13
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.
Adam
00:15:13 – 00:15:14
Okay.
Dax
00:15:14 – 00:15:32
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.
Dax
00:15:33 – 00:15:52
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?
Dax
00:15:52 – 00:15:55
Benevolent dictator for life, whatever, kinda like Linus.
Adam
00:15:55 – 00:15:57
Oh, okay. Yeah.
Dax
00:15:57 – 00:16:16
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.
Dax
00:16:16 – 00:16:19
Like, we have more chaos, but we also have way more resilience.
Adam
00:16:20 – 00:16:31
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.
Adam
00:16:32 – 00:16:41
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.
Dax
00:16:41 – 00:17:01
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.
Dax
00:17:01 – 00:17:08
But I also completely get where you also can just not want to deal with that. And that's that also makes complete sense.
Adam
00:17:09 – 00:17:18
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.
Dax
00:17:19 – 00:17:20
And now I like to think about
Adam
00:17:20 – 00:17:30
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.
Adam
00:17:30 – 00:17:54
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.
Adam
00:17:54 – 00:18:07
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.
Dax
00:18:07 – 00:18:09
Don't worry. I I I never get veggie sushi. So
Adam
00:18:10 – 00:18:10
Thank you.
Dax
00:18:10 – 00:18:12
I'm not contributing to your problem.
Adam
00:18:12 – 00:18:23
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.
Dax
00:18:23 – 00:18:35
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.
Dax
00:18:36 – 00:18:51
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.
Dax
00:18:51 – 00:19:08
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.
Dax
00:19:08 – 00:19:24
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.
Adam
00:19:24 – 00:19:25
Yeah.
Dax
00:19:25 – 00:19:34
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.
Adam
00:19:34 – 00:19:44
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?
Dax
00:19:44 – 00:20:13
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
Adam
00:20:13 – 00:20:13
like I have
Dax
00:20:13 – 00:20:16
the ability to make that strong of a decision in the JavaScript world.
Adam
00:20:16 – 00:20:17
Yeah.
Dax
00:20:17 – 00:20:39
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.
Adam
00:20:39 – 00:20:48
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.
Dax
00:20:48 – 00:21:10
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.
Adam
00:21:10 – 00:21:13
So they they do the inertia thing. Have you seen that?
Dax
00:21:13 – 00:21:18
Yeah. Exactly. I've seen that. I'm not saying you can't use front end frameworks there, but yeah. Inertia looks cool.
Adam
00:21:18 – 00:21:25
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.
Adam
00:21:25 – 00:21:30
And then it's like, inertia plus Next. Js. Like, no. Don't take me back. Oh, inertia.
Dax
00:21:30 – 00:21:34
Use Next. Js. Like, I thought it was for, like, using the frameworks directly, like React or
Adam
00:21:34 – 00:21:42
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.
Dax
00:21:42 – 00:21:43
Yeah. I
Adam
00:21:43 – 00:21:48
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.
Dax
00:21:48 – 00:21:58
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.
Adam
00:21:58 – 00:22:01
Are there any types in PHP? Is it does it have a type system?
Dax
00:22:01 – 00:22:07
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.
Adam
00:22:07 – 00:22:11
Why has Aaron not used types? Why is Aaron wrong?
Dax
00:22:13 – 00:22:21
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.
Adam
00:22:21 – 00:22:23
We have compelling reasons to use type systems. Right?
Dax
00:22:23 – 00:22:26
Not really. I feel like Someone give him a compelling reason?
Adam
00:22:26 – 00:22:28
No? I feel like I've struggled with
Dax
00:22:28 – 00:22:31
this problem for, like, a decade now. Because one of the problems why?
Adam
00:22:31 – 00:22:32
I thought we liked types.
Dax
00:22:32 – 00:22:42
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.
Adam
00:22:42 – 00:22:46
What do you mean? We're on a podcast, Max. What are you talking about? Who's here? Aaron's not here.
Adam
00:22:46 – 00:22:48
Do you wanna bring Aaron on?
Dax
00:22:48 – 00:22:50
I mean, we can. Yeah. We can bring Aaron on.
Adam
00:22:50 – 00:22:54
We're talking about Laravel and how Aaron has types type takes.
Dax
00:22:54 – 00:23:06
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.
Adam
00:23:06 – 00:23:07
Okay.
Dax
00:23:07 – 00:23:08
It's hard to explain, I think.
Adam
00:23:08 – 00:23:14
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.
Dax
00:23:20 – 00:23:22
I've seen that PHP has its types.
Adam
00:23:22 – 00:23:23
Mhmm.
Dax
00:23:23 – 00:23:25
I'm curious what that means, and I'm curious
Adam
00:23:33 – 00:23:34
Fair.
Aaron
00:23:34 – 00:23:35
We we have types, and
Dax
00:23:36 – 00:23:36
I think a
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?
Adam
00:25:57 – 00:25:59
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.
Dax
00:26:24 – 00:26:48
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.
Dax
00:26:48 – 00:27:04
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.
Dax
00:27:04 – 00:27:32
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.
Adam
00:27:32 – 00:27:32
If you
Dax
00:27:32 – 00:28:01
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.
Dax
00:28:01 – 00:28:24
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.
Dax
00:28:24 – 00:28:48
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.
Dax
00:28:48 – 00:29:00
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.
Dax
00:30:54 – 00:31:13
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.
Dax
00:31:13 – 00:31:43
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.
Dax
00:31:43 – 00:32:03
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.
Adam
00:32:03 – 00:32:13
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.
Adam
00:32:18 – 00:32:27
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.
Adam
00:32:27 – 00:32:32
That's my brother. Unicorn. Yeah. There's that. There's I wanna know what a perfect Saturday is for
Dax
00:32:32 – 00:32:34
Aaron because someone asked that in Twitch.
Adam
00:32:35 – 00:32:37
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.
Adam
00:32:42 – 00:32:43
Dax, what do we wanna talk about?
Dax
00:32:43 – 00:32:52
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.
Dax
00:33:35 – 00:33:49
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.
Dax
00:35:30 – 00:35:31
And so
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.
Dax
00:36:29 – 00:36:52
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.
Dax
00:36:52 – 00:37:12
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.
Dax
00:37:12 – 00:37:52
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.
Dax
00:37:52 – 00:37:58
And I I think I actually found that's most of it. I would say, like, 90% of companies fall into this category.
Adam
00:37:58 – 00:38:18
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.
Adam
00:38:18 – 00:38:25
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?
Dax
00:38:25 – 00:38:46
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.
Dax
00:38:47 – 00:39:11
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.
Dax
00:39:11 – 00:39:20
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.
Adam
00:39:20 – 00:39:30
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.
Adam
00:39:30 – 00:39:37
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
Dax
00:39:37 – 00:39:39
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.
Adam
00:41:00 – 00:41:12
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.
Adam
00:41:13 – 00:41:21
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.
Dax
00:41:23 – 00:41:24
Let's do
Aaron
00:41:24 – 00:41:27
that. Listen. I listened to I listened to yesterday's episode.
Adam
00:41:27 – 00:41:32
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.
Adam
00:41:40 – 00:41:43
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.
Dax
00:43:10 – 00:43:20
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.
Dax
00:43:20 – 00:43:29
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
Adam
00:43:29 – 00:43:39
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?
Adam
00:44:17 – 00:44:27
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.
Adam
00:44:27 – 00:44:35
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.
Adam
00:44:35 – 00:44:37
I don't wanna go in there. Never mind.
Aaron
00:44:37 – 00:44:39
Back cuddle. Back sandwiches. Back sandwiches.
Adam
00:44:39 – 00:44:47
Yes. Anything else, please. My wife doesn't she doesn't sorry. On Saturdays, we don't just leave her. She leaves the house.
Adam
00:44:47 – 00:44:51
Mhmm. So the whole weekend, she was gone, and it's just me and the boys at the house. Smart.
Dax
00:44:51 – 00:44:56
Well, I have a dog and 2 cats, so that's something.
Aaron
00:44:57 – 00:44:57
You just
Dax
00:44:57 – 00:44:58
do whatever you want
Aaron
00:44:58 – 00:45:00
all the time. That's amazing.
Adam
00:45:00 – 00:45:02
Oh, just soak it up, Dax.
Aaron
00:45:02 – 00:45:02
Yeah. For real. If you
Adam
00:45:02 – 00:45:16
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.
Adam
00:45:16 – 00:45:17
And you don't
Dax
00:45:17 – 00:45:22
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.
Adam
00:45:22 – 00:45:23
You're not gonna miss it? Yeah.
Dax
00:45:23 – 00:45:26
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.
Adam
00:45:37 – 00:45:52
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?
Adam
00:45:52 – 00:46:02
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
Dax
00:46:02 – 00:46:06
know, man. We've seen you try to learn Elixir. Okay. Okay. Just go go ahead, Jeff.
Adam
00:46:06 – 00:46:07
Get it all out.
Dax
00:46:09 – 00:46:10
Have you learned other languages?
Adam
00:46:10 – 00:46:14
Have I? I've done all kinds of stuff, probably.
Dax
00:46:14 – 00:46:15
I can say so.
Adam
00:46:15 – 00:46:19
Python, Jython. Okay. I'm gonna stop. I saw you post the other
Dax
00:46:19 – 00:46:21
day you got started in Jython?
Adam
00:46:21 – 00:46:31
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.
Dax
00:46:31 – 00:46:32
And you're stuck with it?
Adam
00:46:32 – 00:46:34
No. No. I just did it in college. Like, that was No.
Dax
00:46:34 – 00:46:36
I'm saying, like, you didn't give up on programming right there.
Adam
00:46:36 – 00:46:39
Oh, yeah. Yeah. No. Yeah. I kept I kept with the programming thing.
Adam
00:46:39 – 00:46:57
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.
Adam
00:46:57 – 00:47:22
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.
Adam
00:47:22 – 00:47:30
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.
Adam
00:47:30 – 00:47:31
I wanna play with it more.
Dax
00:47:31 – 00:47:47
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.
Adam
00:47:47 – 00:48:06
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.
Adam
00:48:06 – 00:48:11
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.
Dax
00:49:35 – 00:49:47
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.
Dax
00:49:48 – 00:49:56
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.
Adam
00:49:57 – 00:50:04
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.
Dax
00:50:04 – 00:50:05
Yeah. That's okay.
Adam
00:50:05 – 00:50:07
It could be kind of a weird transition in the middle of the podcast.
Dax
00:50:08 – 00:50:09
Well, you just said it. You just said it.
Adam
00:50:09 – 00:50:10
I just said it. Yeah.
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.
Dax
00:50:16 – 00:50:17
Yeah. It was great to have you.
Adam
00:50:18 – 00:50:20
Alright, Dax. Anything we wanna say before we wrap this up?
Dax
00:50:20 – 00:50:21
Nope, that's all.
Adam
00:50:21 – 00:50:23
Nope, that's all. We never have anything at the end. Goodbye.
Me

Thanks for reading! My name is Aaron and I write, make videos , and generally try really hard .

If you ever have any questions or want to chat, I'm always on Twitter.

You can find me on YouTube on my personal channel or the Try Hard Studios channel.

If you love podcasts, I got you covered. You can listen to me on Mostly Technical .