Mostly Technical · Jan 11, 2024
Ian & Aaron are back(!) to discuss whatever happened with Ian's DB woes, what it's like to parent two sets of twins, the brand new PlanetScale Studios, & more.
Sponsored by LaraJobs & Screencasting.com.
Sent questions or feedback to mostlytechnicalpodcast@gmail.com.
Ian
Welcome back.
Aaron
We are back. Whoo. Finally. It's been a few it's been a few
Ian
weeks. Exciting. Yeah. Longer than I thought, actually. We're back.
Well, what's going on? We both had a lot going on. But I think you a lot more than me. So
Aaron
Yeah. So many so many directions to take this. So I'm back at work. PTO Oh. PTO is over for now.
Ian
Oh, I didn't realize it.
Aaron
So, yeah, we have, we have 12 weeks of PTO and I'm splitting mine 7 5. So we just have to take it all within 1 year of the baby or in our case, babies
Ian
being born. That's awesome. Yeah.
Aaron
It was. It was really good. So, I got us through, you know, the break where the kids had the big kids had no school and the holidays and all of that. And the big kids went back to school this week, and so I decided, alright. Let's, you know, go back to work this week.
And then later on, I'll take I'll take the next 5, and that'll be that'll be good. So we made it through you know, we made it over the first hump, which is kids are little kids are I think they're sleeping, like, 4 to 5 hours a stretch right now. So no longer up. It's it's better. No longer up every, you know, every 3 hours for an hour, which is just a beating.
Ian
How old are they now? How many weeks here?
Aaron
So November 22nd is when they were born. So Okay. December 22nd. So not yet 2 months. So just maybe, like, 6
Ian
weeks 7 weeks. Yeah.
Aaron
Something like that. Yeah.
Ian
So That's huge, though. From 0 to
Aaron
6 weeks,
Ian
they're total they're totally different at 6 weeks than 0. Like, they're much more real. Like, they're solidifying.
Aaron
Yeah. So we still have we still have the night nurse coming maybe, like, 3 or 4 nights a week, and so we do get that kind of break every now and then. But when, you know, the night nurse isn't here, yeah, god. Just twins are so different than having a singleton, I would imagine. I've never had a single baby.
But but twin twins are so different in that both parents are required every every time the babies need to eat. And so there is no, like, there's no like, I'll feed them at 3 and you feed them at 6 We're both feeding at 12, 3 and 6. So having those hours get stretched out has been super duper helpful. Still brutal, you know, still a kick in the face, but getting a lot better. So that much is good.
Everybody's healthy, which is, you know, that's the number one thing.
Ian
Most important. Yep.
Aaron
Yes. Just a close second after that is is Aaron tired, and it's like, yeah, I'm sleepy. So what's what's the deal there? We've been
Ian
loving these photos, though. You, like, sleeping around in places. Yeah. Yeah. Those have been keeping everyone quite entertained.
Aaron
Yeah. That accidentally became a thing, because I guess I've just fallen asleep a lot. Yeah. My wife I think my wife finds it funny to take pictures of me, you know, asleep at random places. And then the funniest one by far was when I fell asleep at the gym.
And my sister-in-law was there, and she took the picture and texted it to Jennifer and said, I think your husband's having a hard time.
Ian
Yeah. Well, she, like, come and do, like, just check you to see if you're alive. She's like, oh, man.
Aaron
But scared the bejesus out of me because she woke me up. And I was you know, I had kind of, like I took my computer because I was like, I'm gonna, like, freaking do some stuff, like, free time, baby, and then I fell asleep. And so it was kinda accidental, and then I got woken up, and it just I did the jump scare thing where I, like, woke up with a start.
Ian
I don't know if,
Aaron
like, first
Ian
6 weeks of the I don't know if 1st 6 weeks of the new babies is peak. Go go back to the gym time, I think.
Aaron
Oh, no. I only went to the gym because they had childcare. So I wasn't plan I wasn't planning on working out. I was like, oh, maybe I'll work on my computer finally.
Ian
Like, I've got a free moment. There we go. No.
Aaron
Are you kidding me?
Ian
Just activity for the little kids.
Aaron
No. I haven't worked out in years. Why start now?
Ian
Well, we talked about this, I think, like, on one of those last podcasts, so I was wondering about that. But okay. It was it was
Aaron
just a nice quiet. It was purely YMCA offers an hour and a half of of childcare. So I took the big kids to the childcare there.
Ian
Right.
Aaron
Yeah. And then, you know, I fell asleep off eating and fell asleep next to a crib and just all sorts of good, you know, when you don't sleep anywhere is
Ian
a good
Aaron
place to sleep. Yeah. So, yeah, kids are good. Family's good. Life is good.
Holidays were great. Yeah. We're making it.
Ian
Alright. There we go. 4 kids. No biggie.
Aaron
4 kids. A lot of kids. Lot of lot of kids under a lot of kids under 3, turns out.
Ian
I'm excited. Hopefully, the podcast is still going when you get to 6. When you get the next twin twins, it's gonna be very exciting. No way. Car you acquire then, the freak everybody.
It's gonna be awesome.
Aaron
One of the things having having like, being a parent of multiples is people will stop you while you're out and about and be like, oh, I know somebody that and so we've heard a couple of stories, and one of them is, somebody stopped us at a restaurant the other day and was like, are they are they all twins? I'm like, yeah. They're all twins. She said, I have friends that had twins and then got pregnant with, quadruplets. Wow.
So they they had a set of 2 and a set of 4, and somebody stopped Jennifer, I think, at the hair salon or no because she didn't have the kids there. Maybe it was the grocery store and, said that they knew a family that had 2 sets of twins and then a singleton and then 2 more sets of twins. They ended up with 9 kids.
Ian
I don't know. I I get the a lot of kids thing in the old days. It's like, whatever. A couple are gonna die right off the bat. You have them off the farm or whatever.
Yeah. Like, alright. Yeah. Whatever. The older ones are raising the younger ones.
But in modern society, it's like, oh, man. Having, like, 6, 7 kids, all the expectations on you as a parent, all the whole stages of the kid, all the lack of expectations on the kids helping each other. Like, there's just a whole different world that is just not set up for, like, you have 6, 7, 8 kids. I don't know. No.
And and just doing the same thing in the world, obviously, impossible.
Aaron
I'm already nervous about, like, having enough quality time with 4 children. And I imagine there are 9 of them. It's like, I don't know how you get to know them each individually. So
Ian
I don't think yeah. That's why it's a whole different thing. Right? Like, I don't know if you do. I feel like
Aaron
you did.
Ian
Yeah. I don't feel like I get enough time in my 3. I'm like, how I don't even know them. How do
Aaron
I do? Like I haven't I haven't gone to the doctor yet, but we're done at 4. That's for sure.
Ian
Yeah. Lock locking it up.
Aaron
Yeah.
Ian
For sure. Yeah. Yeah. Well, it oh, when you go out with all the kids, now you have a quad, like, stroller, or is it No. 2 double strollers, or what's the play there?
Aaron
I think in technical terms, we would call that sharding. So each each parent each parent gets 2 2 kids, so we have 2 double strollers.
Ian
Okay. Now importantly,
Aaron
importantly, they're all interoperable. We have, like, a set of adapters that take, that, like so we have a jogger and it was just, like, a more normal walking stroller, and we've bought adapters for the jogger that allow the big kids' seats to go on either stroller and the little kids' car seats, you can take directly out of the car and put on either stroller.
Ian
Papa, man.
Aaron
Because you just can't afford you just can't afford to have individual strollers for every set of twins. Everything everything has to be multipurpose.
Ian
You gotta be able to hot swap. Right? Yes. You don't wanna have to move the special stroller
Aaron
around between cars. So the mini like, and in the same way, car seats all have to be uniform. So in the minivan, we've got 2 big kids and 2 little kids. In the au pair's car, we've got the 2 big kids. And in my 4 runner, we've got the 2 little kids.
Right. So no matter who's going who's going where, it's like, alright.
Ian
What car are
Aaron
you taking? Yeah. Like, mom can take either set. Dad can only take the youngest. Jasmine can only take the oldest.
Good lord.
Ian
Man, when you get to switching out the car seats too, like, when they expire and stuff like that. Oh, man. That's a whole scam there. The expiring car seats. Some bullshit.
Aaron
My I think I I got my hand slapped a little bit when my mother-in-law was like, you know, the car seats expire. And I was like, car seats don't expire. She was like, Eren, yes, they do. And I was like, oh, oh, oh, oops. Sure.
Definitely, they do. But wait. What do you freaking mean car seats expire?
Ian
I don't buy them.
Aaron
I'm not buying them. It's not a can of beans. It's gonna it's plastic.
Ian
It's not like it's getting thrown from the car and rolling on the ground. Like, it should still be within the safety cage of the car. Like, I mean
Aaron
I'm fine expiring a car seat once per catastrophic crash.
Ian
Sure. I'm fine with that. Yeah. Crash, you should get rid of it. Yes.
Aaron
Get a new one. I'm fine with that.
Ian
When it crosses over the little stamped on date, I don't know. Yeah.
Aaron
I'm
Ian
so glad we're out of car seats, man. Wait till you're out of car seats. You got a long way to go, but it's nice to
Aaron
be forced to the whole, like, who's allowed to buckle the toddlers in? Not not just, like, based on the toddler's preference alone. Like Right. Which parent is she going to say Yeah. No.
You have to buckle me in. And it's like, well, you know, that person's not here right now. Right. That person's inside feeding other babies, so you get dad. That's all you get.
Ian
Yeah. When they're So anyway They get that opinionated age. It gets
Aaron
Joy, don't they? Yeah. Yeah.
Ian
Alright. Well, that all sounds good. Yeah. Yeah. So that's, I mean, I don't really have any news other than I was, fixed my database issue, which we can talk about.
Aaron
Thank you. About that for sure.
Ian
And then I just had a little round of COVID, so I'm just coming over that, but, just about we're covered. So yeah. So it actually kinda worked out our little hiatus here anyway. Yeah. But, yeah, nothing too exciting.
So let's jump into some stuff. We got I will apologize. I'm gonna apologize right at the top that there was, like, 5 or 6 people who emailed us, which we didn't get back to. And a lot of it's getting into old stuff. So we're clean slate in the email, but I did read them all.
No. I didn't. Appreciate them.
Aaron
Yeah. Thanks for your emails, Ian. It's the reason you didn't get one back. I just I'm just finding out about it. So this is all I need.
Yeah. Thanks for your emails. Yeah.
Ian
Totally my fault. So, but thank you very much. So alright. What should we start with? What do you wanna do?
Aaron
Let's start with, we could either start with the new shed quarters or, model should be strict. I think, I'm I'm primed on both of those.
Ian
Let's go let's go model should be strict, and then we'll be
Aaron
short quarters. Love model should be strict. So hit us with your tweet. Technical. Yeah.
Yeah.
Ian
So model should be strict, for those who don't know, is a Laravel, configuration option that you can put in your app service provider, that basically forces models. A few different things on the models forces them to not ever lazy load. And if you try to lazy load, it'll throw an error and it also prevents you from accessing attributes that don't exist and setting attributes that don't exist, on the models. And it'll throw an error, I believe in those cases. Mhmm.
And yeah. So to me, when starting a new project, I throw that in there, because I am not a lazy loading believer. I am very much anti the a the lazy loading. And so if you just have it in there from the start, I think that's perfect because you can just never do it. You're just gonna get errors,
Aaron
and
Ian
then you
Aaron
can
Ian
fix those errors. Obviously, if you're going to existing application, that's a little different, and you might not be able to just throw that in, on full strictness. But for a new app, I feel like strict is the way to go. And you've I know you said you had some nuanced thoughts here, so I will be excited about these.
Aaron
Have the nuance. Alright. Okay. So you you tweeted a picture of your app service provider, which was interesting. I do I I liked that.
I wanna see more people's service
Ian
providers. Not many people put come on, people. Get out there, find my tweet, and post your app service provider. There's all kinds of fun stuff at the app service provider.
Aaron
There really is. So you posted model should be strict as enabled. Model should be strict, does accept an argument, and you can set that to, like, basically, is the app running locally? And so you can say, when when I'm local, let it be strict or make it strict, and when I'm in production, we'll let it be looser. So model should be strict, wraps up 3 different static flags, I guess, static pieces of configuration.
Model prevent lazy loading, and then prevent silently discarding attributes and prevent accessing missing attributes. And so my nuance is I think some of those should be enabled in production and some of them shouldn't. So I don't
Ian
think You can individually do them too.
Aaron
You can individually do it. Yeah. And so I don't think model should be strict. I don't think it should be used, frankly. So here's here's my, here's here's my opinion.
Ian
Hot take.
Aaron
Hot take. So I think the difference is, preventing lazy loading is primarily an application performance issue. Right? So if, you know, basically prevent lazy loading is, like, protecting you from an n plus one thing. And if you have an n plus one in production, it's like, that's not great, but it's not technically wrong.
You should fix it, but your application still works. Your users don't get errors. Everything is still, like, technically correct. Right?
Ian
Potentially. Yes.
Aaron
No. Definitely. Why potentially?
Ian
Well, because I mean, it can be so slow that it doesn't work, or it takes Oh, okay. Sure. To load or whatever. Like, you know, they're But, yes, in your most Within Yes. General use case, that's
Aaron
Within the bounds of normal distribution, it's still gonna work. It's just gonna be slow. Right?
Ian
Yeah.
Aaron
So that's primarily an application performance concern. However, prevent silently discarding attributes and prevent accessing missing attributes are totally application correctness concerns.
Ian
Right.
Aaron
So Those are both
Ian
Yes. Those are missing issues.
Aaron
Those are behavior will go wrong potentially in a catastrophic way. And so I think the one that's easiest to, the one that's easiest to illustrate is to prevent accessing missing attributes. And this is I I feel like Taylor regrets putting this one in because it's been removed from the docs, and it's kinda hard to find anything about. Mhmm. And it caused a lot of problems with, like, first party packages, because they were doing some accessing of this.
Ian
Assume it's there. Right?
Aaron
Yeah. Exactly. And so what this method does is, like, if you partially hydrate your model so let's say your database table's, like, a 150 columns wide, which can happen. You know, if you've been running an app for 20 years, it can happen. And you're like, actually, I only need these 4 columns from my users table.
And you pull those 4 columns back, and, like, those 4 columns are first name, last name, email, and is admin or whatever. And then in your application, you try to go access, like, a a column that you didn't pull back from the database. Laravel is not gonna tell you, hey. You didn't pull it back. It's just gonna say, oh, that that value is null.
Ian
Right.
Aaron
And so to turn like, to prevent that behavior, you turn this, you know, you turn this method on. And if you accidentally don't pull back the column that it says, like, is blocked or something, and then you go check to see is this user blocked. And it says, well, I don't know. It it, you know, it's null, so they must not be blocked. That's a total application correctness problem, and that's, like, that's a big, big deal.
And I think people are like, ah, you know, I don't wanna throw an error in production if I access a missing attribute. And I'm like, yeah. You absolutely do because that's a catastrophic failure if your if statement is checking for something that you didn't even pull out of the database.
Ian
Right. Right.
Aaron
So I think those 2 prevent silently discarding, and that's where you're like, hey. I'm gonna set is admin, but I'm accidentally gonna typo it, and Laravel's just gonna say, oh, that column doesn't exist. I'll just silently discard that. It's like, no. No.
No. You don't wanna do that either.
Ian
Right. So I
Aaron
think prevent silently discarding and prevent accessing missing attributes are application correctness and can totally hose you. So those need to be on in production, and then prevent lazy loading is, like, a performance thing, and that should be off in production. Because if one sneaks through, it's not a bad thing. And you can also log if you turn it off, you can log missed lazy loads or, like, when a lazy load violation occurs, you can log it. And so you still get the benefit of, like, it showing up in the logs in production in this weird dark corner that you didn't test locally.
So you're not you're not missing the information. You're just not blowing up your application without without need. So Yeah. That's my nuance. What do you think?
Ian
It is a it is a weird grouping probably to some degree. Like, this this flag handling all 3 of those is maybe a little bit weird because
Aaron
Yeah.
Ian
They're not related, really. So, yeah, that is true. I I don't know. I think I I mean, I don't really have a hard disagree with you there. Definitely existing projects, you have to you can't do the strict lazy loading thing.
I think that's too. But that that's for sure. But I just feel like from a new project, I just feel like it's very un I'd rather just have it on in the beginning. How am I gonna miss a corner? It's gonna be very hard for me to miss a corner if I have it on from the beginning.
That is And
Aaron
also, I
Ian
just write some code that's, like, buried in a bunch of ifs and somehow I never get down to it or whatever. Like run
Aaron
it locally.
Ian
Yeah. Somehow I never run it even when I'm building the feature. Like, it somehow gets gets through. But, so I don't know. I feel like you're starting fresh.
Aaron
It's like dynamic loading of relations that could happen.
Ian
Yeah. Yeah. Potentially. And then
Aaron
Yep.
Ian
You know, I guess there is some nuances here of, like, is this a worthwhile thing to be worried about? Right? Mhmm. For most people, probably not necessarily if you're just building like a side project thing and like, oh, or even an internal app where the load and such is not significant. I think in my case where I'm doing this kind of next generation help spot, I know a lot about the load characteristics.
I know a lot about how many customers we have and how much it's gonna have to deal with. And so I'm being quite, persnickety about performance. Yeah. And so I definitely don't want any lazy loading, but, This is out. So here's a thought a little side quest based on what you've brought up, which I think is quite interesting.
What's your thoughts on? Defining the select and what you return versus just letting Eloquent star all always, and I don't know. What what do you think about that?
Aaron
I think in 98% of use cases, you should just run user where get and not muck around with the select at all. Honestly, like and this is this is where I straddle, like actually, this is where I'm an application developer and not a DBA because which is weird because I work at a database company and teach for the database company, but I'm not a DBA. And I think that gives me a superpower that most people in the world aren't DBAs, and I don't, like, I don't get lost in the weeds. All DBAs will say, don't ever use select star. Only select what you need.
Ian
Right.
Aaron
And it's like, yeah. I mean, yeah. Like, don't we have more don't we have more important stuff to worry about? Like, I don't super care about that. I think the difference is in the case where you do end up with a really wide table that does have a lot of blobby columns, so you've got, like, a bio and a, you know, last whatever that's 50,000 characters and all of this stuff or a JSON column that's a megabyte.
Ian
Right. The JSON columns are big. Now that everybody use JSON columns, that's a lot of
Aaron
really bad.
Ian
More data, you know Yes. Than people accept.
Aaron
The problem the problem is not even or rather it's not only pulling the data back over the wire. It's also the database, at least MySQL, puts those really big blobby columns in a different spot logically.
Ian
Right.
Aaron
And so, like, the row can only be so big in my SQL. And so if the column gets too big, that column is, like, reduced to a pointer, and the big blobby stuff is stored elsewhere. And so my my point of view is if you're doing just like a CRUD app with normal stuff, just don't even think about changing the select because you do end up getting host potentially. But if you have a long running app with huge tables and blobby columns, and you're like, man, I only need the first name and the email here. What am I doing?
Definitely definitely change it. And then you must, turn on prevent silent Accessing. Yeah. Accessing missing for
Ian
sure. Yeah.
Aaron
So, yeah, I'm not a purist on select star at all by any means.
Ian
Yeah. I'm sort of, like, on small things where you know it's a minor difference, like, yeah, you're returning the created at timestamp. You're not gonna use it. Whatever. Whatever.
I'm not gonna worry about it too much. But like for the main tables that are getting tons of action, I do return it. And, this is really only for HubSpot. Like in other smaller things I've built, I don't worry about it. And I just, whatever, star all who cares.
But, for something where I know there's just gonna be tremendous performance implications, like it actually does add up when you're running 100 of millions of queries, like
Aaron
Oh, yeah.
Ian
Because you know, the network latency is always the worst part of the database lookup. Yep. And like you said, the discs, and then if you're on cloud infrastructure where the disk isn't your nice, fast, super on the server SSD, but it's, you know, a network's hop of its own away from the server. So now you're going to the disk, and then you gotta go to the special spot to get the blob
Aaron
and the
Ian
whole thing. Like
Aaron
And if your database is data set up. You know, if your database is, you know, 10 milliseconds away from your app server and now Right. So all
Ian
of a sudden you're at 30 milliseconds, 40 milliseconds for the one query, and now you've got more queries and like
Aaron
thrown this huge amount of data across a longer wire because it's not on the same box. It's like, yeah. There's you know, you gotta decide, is it worth it for you?
Ian
Yeah. So there is, I think, some use cases where it's important to think about, and I think people don't ever think of it now. It doesn't ever come up right.
Aaron
No.
Ian
It's like nothing ever talks about that anywhere. Yeah. And, obviously, for, like, 95% of the time, it's yeah. You probably don't need to worry about it. But I think it is important to be aware of and think about at least that key key queries in your application where they're gonna get run a ton where they're already maybe heavier, and things like that.
Like, do you actually need to return those 4 JSON columns every time that you're not even using and things like that?
Aaron
Another factor is numb like, how large is the result set? If you're returning 2 rows every time, it's like, ah, who cares? If you're returning, you know, 35100 rows Right. Because you have
Ian
to do some
Aaron
sort of post, you know, result aggregation on the app side or something. And you're just gonna ditch, you know, 35100. You're just gonna ditch, like, 30 meg of JSON once you get it back. It's like, what are you doing?
Ian
Right. Yeah. So Those things add up. So, yeah, I think we're mostly on the same page there.
Aaron
I think while we're here while we're here talking about your app service provider Yes. You have a morph map set up.
Ian
Yes. Yes.
Aaron
Love a morph map.
Ian
You have to have a morph map. See, this is where I can get more of a map. Without the morph map, it's chaos without the morph map.
Aaron
I will say if we're if we're persnicketing, I would love to see you use enforce morph map.
Ian
Yeah. I I wanted I don't know why I didn't do that. I think I had a reason, but now I don't know what it is. So I should
Aaron
switch it
Ian
to enforced morph map, I think. I do
Aaron
want it So we're
Ian
I want it enforced. I think there was a
Aaron
I wanted we need it. We need it enforced.
Ian
I wanna say I always feel like there was some kind of bug I hit or something weird like that, but maybe I have to go back and look at it. But I do want So Yes. I don't wanna ever want to accidentally shove in a whole class
Aaron
pack. And then have to undo that somehow. So for the edification of the listener, the the the the morph map is when you have, like, a polymorphic relationship, and by default, Laravel will put the fully qualified namespace in the database. So you'll look in your database and be like, what does this image belong to? And it'll say, like, app models comment, app models blog post, and you're like, man, I guess I can't refactor those class names anymore because it's now, you know, it's now hard coded in my database.
And so the morph map will say, hey. Instead of putting the fully qualified class name in there, why don't you just put the word image? Class name in there, why don't you just put the word image or the word comment? And then you're free. You've now broken that association.
You're free to, like, change it. Enforce more map says, hey. If I don't have a map for this model, I'm not gonna just fall back to putting the fully qualified class name in. I'm actually gonna throw an exception, and you're host. And that's what you want for sure.
That is a 100% what you want. Yeah.
Ian
And And then there is another element since we're on our performance kick. If you use the morph map, then you can potentially
Aaron
Oh, yeah.
Ian
Store that in a character, a defined length character column Mhmm. Like maybe 8 characters or something as opposed to just a bar car. And then again, you it'll stay on the on the page in the database. Yeah. So it doesn't have to make a separate call out over to the blobby area where it just shoves random strings.
And so that then will increase your performance on those queries too. And again, if it's, like, in a high performance location Yep. Where you're gonna have a 1,000,000,000 rows or whatever, like having only 8 characters there instead of undefined long characters that always has to go grab actually adds up. So
Aaron
Okay. While we're volleying, while we're just batting back and forth, let's volle away. I enforce morph maps with tiny integers, unsigned tiny ins.
Ian
That I I like your style, sir. I like your style.
Aaron
I map I map, you know, app models comments
Ian
to the number 1. App models blog post
Aaron
to the number 2. Then what that also so everything you said is correct. Also, additionally, you get smaller indexes. Because the whole point is the whole point is Laravel is gonna put an index over the type and the ID, and you want your indexes to be as small as possible so you get more and more and more into memory as possible. And so if you have a tiny integer that ranges from 0 to 255, which means you can have 255 models, which you will never have, You can fit all of that in a in an even more compact index.
So enforced morph map with an integer instead, and you may see potentially microseconds of improvement, and you're gonna Well,
Ian
but I so think about this, though. People don't realize that, a tiny integer is a single byte. Yeah, okay, and even a 8 character long Car column is 8 times 4. It's a 32 bites and then usually an extra for this, for something overhead or something. So like 34, 35 bytes verse 1.
Aaron
Versus 1. Yes.
Ian
35 times bigger to have that
Aaron
strength. Yes.
Ian
And that's 35 times more data in your indexes and everywhere else.
Aaron
So should be in memory where where
Ian
With which you want them in buffer pool, if you're in my Excel lane.
Aaron
Does matter. Yes. So I'm not talking about saving disk. Yeah. I'm talking about memory.
Ian
Very, very important type of everything. All the indexes at least fit in the buffer pool. Yes. Yeah. And then so this is a I've go back and forth on this.
Let's I'm gonna I'm gonna throw one back over the Yeah. That's
Aaron
Volleyed. Ping pong. Let's go.
Ian
So right along these lines. So I'm a huge fan of the Nooms. I love the new Pete Nooms stuff. Like, it's so good. I have Nooms everywhere.
And it's like, do I want though they're all back because they all have to go to the base.
Aaron
Gotta be backed. Yep.
Ian
But are they back to a number or are they back to a string? The numbers say, I mean, just tons of bytes saved, especially in like our main, the main table has like a whole bunch of things that are in nooms.
Aaron
Yep.
Ian
And, it could be a tiny in and it would be one little bite.
Aaron
Yep.
Ian
Or it's gonna be, you know, but obviously it hurts the readability in some places, sometimes to have it that way. I don't know. What do you think of that? Right now, I have them as string backed, but I'm I'm teetering. I'm probably gonna move it to into JERBAQ because it's so much more efficient.
But
Aaron
I think my my first my first thought is I've never in my life heard it called an Inoom. Oh, really? I don't know that I've I've ever said that
Ian
out loud. I don't know if I've ever said that.
Aaron
In my head, I'm just now realizing
Ian
What's in your head?
Aaron
Know that I've Enum.
Ian
An enum?
Aaron
Enum.
Ian
Is it a enum?
Aaron
So I
Ian
put it on
Aaron
the e, and you put it on the num. Mhmm. So I'm enum, and you're enum.
Ian
Alright. People will have to tell us. Comment down below. Subscribe and comment.
Aaron
And when you
Ian
do, let us know.
Aaron
Boost boost that engagement. Tell me what it is. Okay. So I just I
Ian
know you're distracted now. You have no idea what I even said. Yeah.
Aaron
I don't know. It's great. Enums are awesome. Next topic. Okay.
So, I think, yeah, it's a trade off. So for the, for the user who is listening, we're only talking about PHP enums. I don't use database enums because I find them annoying.
Ian
Not a believer.
Aaron
Not a believer. They actually the database enums solve this problem in that you get the readability of the string, but the underlying storage is actually an integer, but the huge drawback is you have to alter the table, to add
Ian
a new option, which
Aaron
is, like, one free waste. Yeah. So I I think I personally prefer, shoving it all in there as an integer and dealing with the readability thing. But that's just so personal because I'm not like, if I'm, you know, I don't code at PlanetScale, so I don't have to I I'm not on a team. Anytime I'm doing stuff like this, I'm just doing it myself.
And I don't have a huge habit of, like, doing, a lot of reporting or an anal analytics analysis. That's the word. Analysis, just like from table plus. Right? And so if I were, you know, if I were doing a ton of raw SQL analysis, and I'm always like, well, f.
Like, what does one mean here, and what does 2 mean there? I would get probably frustrated, but most of the time, it's the application that's talking to it, and so I don't super care.
Ian
Yeah. I mean, we're not in the database that much. You know? Sometimes you're in there to help a customer with something or whatever. But most of the time and even that, oftentimes, there's, like, some admin panel or whatever you're interacting with.
Right. So it doesn't, it still doesn't
Aaron
matter.
Ian
And it's just so huge. Because it's like, if you have 5 of those columns, and each one's taking 40 bites when they could take 5 bites or 200 bites instead of 5, that's a lot of memory and must be expensive. That's what you're paying for. That's the big dollars just to get the memory.
Aaron
Yep. I mean, there are I don't know. I I don't know if at this point it's worth it, but you could do a strict 4 character column with 8 care set or char set or car set that is Right. That is, less expensive than u t f 8 multibyte because those are 4 bytes per character. But there are some that are 3.
Ian
think I think with single store, it's all UTF 8. Uh-huh. Maybe in my sequel, it's not. I don't recall. Correct.
Yeah. I guess I guess you change the car set, but can you change the car set on just a column? I guess you can.
Aaron
You can. Mhmm. Okay. Because you can have a binary you can have a binary car set on a column, and that's just raw raw bias.
Ian
You could also get into, like, yeah, flip flipping flags on bit
Aaron
Hell yeah.
Ian
Columns or whatever. I don't know how that stuff works. I don't know stuff that's all. It's just I got a
Aaron
bit I got a video on that. So to a plain scale channel, I got a video on storing storing flags in a single integer column using bit masks. Totally unhinged, completely unreadable. You wanna talk about unreadable?
Ian
Yeah. I mean, that's what I mean.
Aaron
Column and you look at it and it says 17, and the row below it says 16, and the row below that says, like, what's another one? 9. And you're like, what do any of these numbers mean?
Ian
Please double.
Aaron
That's really interesting. So, yeah, the plan and skill channel has a a video on that that I find very interesting and probably a a bad idea was
Ian
my decision on it. I might be a step too far in the maximum efficiency I think it is. Direction.
Aaron
If you're doing that, you better have a good reason.
Ian
Right.
Aaron
And at that point, I'm just trusting that, like, you know exactly what you're doing because you're reaching for a really esoteric solution. Yeah.
Ian
You're at some very crazy scale where you you're you're trying to eat out every little minutia ounce of performance. So I'm not all the way to that. Alright. Shedquarters. If we don't have another database column back and forth here.
Shedquarters. Alright. Shedquarters. Let's do it.
Aaron
Ian. Mhmm. Four kids.
Ian
Yes. It's a lot
Aaron
of kids.
Ian
Yes.
Aaron
Too many. It's a
Ian
lot of kids.
Aaron
Too many. It's just enough. It's just enough, but it's too many.
Ian
It's good enough. Yeah.
Aaron
So, you know, when we found out we were having another set of twins, we moved out of the house, sold the house, to which the shed quarters had become fundamentally attached. Right? There's a world in which I move it, but I think we got more value from selling it than we did. Right. I would ever get from moving it.
So we moved into the rental where we currently live right now, and, I am in a 9 by 9 room that directly through these glass doors
Ian
is I made that mistake too. Glass doors. Terrible idea.
Aaron
So it's, like, our our single we don't have, like, a formal dining and a normal dining. It's what what are we not the the Vanderpiel. Modern. Dining. Right.
So the kids sit right there, you know, when they're eating and they're, you know, screaming at the toys and stuff like that.
Ian
Not It's
Aaron
like
Ian
Not optimal.
Aaron
Not optimal. And now there's 2 more of them that, you know, she's out here in the living room feeding, and I don't wanna be like, hey. You gotta go in the backwards, you know, darks because I'm I'm working out here. It's like, no. That's fucking horrible life.
Ian
Let me interject here for one second. So when we Okay. Started HelpSpa and the company, we had a condo. And we had no kids. And it was 2 level, nice little condo.
And my office was, like, in what the dining room. So it was like a desk in the dining room and then the little four like dining room table thing. And we had our first kid and Jamie be in the living room, which is right next to all this, like playing with the kid, doing whatever. And then if I had a phone call, because I was just doing support too, and I was answering the phone and we'd have this thing where we I don't know how we got calling it this, but we started calling it illegitimate family. And so I'd be like, illegitimate family.
And she'd be like, okay. She'd scoop up the kid and, like, run upstairs to, like, the farthest away bedroom so that, like, he's crying and yelling or whatever. And I'm like, I'm on the phone. And this is all, like, a 1000000 years before COVID and everybody works from home, and you just expect people having people in the background. Like, you know, it's like a business.
I'm being formal and business y. Right? And it's like, no. We gotta, like, run away with the child because there's, like, not enough room in this place to have separate Yeah.
Aaron
Illegitimate family history.
Ian
Family. Yeah. It was
Aaron
very funny.
Ian
Anyway, continue on. So you got, glass doors?
Aaron
Yeah. Glass doors. I've done the best I can with the treatment, people yelling, people screaming. Also, like, it's very, very nice to be able to walk out and, like, say hi to the kids and play and laugh. But they're also getting the big ones are getting to the age where it's like, oh, dad's out.
Come jump on the bed with us. And I'm like, I really I can't do that right now.
Ian
Yeah. And that's its own issue. Yeah.
Aaron
Yeah. And that, like yeah. So, we Jennifer and I started talking, and I was like, I don't think I can work in the in the house anymore. And she was like, I think it would probably be better for you to not because part of the problem is if I'm gonna record videos, my windows are so small, like, while they're napping, if they nap and then at night. And a lot of it, frankly, has become record at night.
And that's just I don't have the same energy to do that now that I have these other 2 that I'm feeding at night. Right? So I gotta get my work done during the day, like a normal person. And so I started thinking, like, why what what could I do here? Like, what what are the what are what are the common solutions?
Like, what is common to man? I would go get an office. Right? That is very normal. I I would be so boring if I did that.
Right? So I went and looked at, a few offices and emailed some people. Office space is expensive. Yeah. It's very We
Ian
have, like, coworking nearby or, like, some office space? Coworking.
Aaron
Yeah. There's coworking, and there are offices and coworking. The problem is, the problem is I need a lot of space. Right? Because I've got I've gotta set up cameras, and I've gotta set up lights, and I've got, a bunch of very expensive equipment that I need to keep in this place, and so that's an issue on its own.
And so I'm, you know, I'm emailing, like, like, Regis is the big, like, rent your own office kinda conglomerate, And they're like, you need an office for 1 person? Great. We have a, you know, an 8 by 10 office. I'm like, no. That's what what I'm in now, and I'm barely, like, I'm barely making it.
Tell me, like, tell me what a 10 by 20 is. And they're like, oh, so you want 6 desks in there. I'm like, what? No. And, of course, you know, they price it out for a company that's trying to house 6 people.
It's like, this is stupid. I don't need to do this. I'm a I'm a very I'm a very creative person. So I started looking at apartments.
Ian
Oh, wow. I would have thought that. Look at that.
Aaron
At apartments near Okay. Nearby our house. So the closest office was, like, 15 to 20, 25 minutes away. Very expensive. The closest apartments, Ian, are 3 minutes from our house.
Literally. 3 minutes. Dallas is blessed or cursed with an abundance of apartments. We got apartments everywhere.
Ian
It's Like a little
Aaron
what do they call this?
Ian
It's like Pierre de Tet or whatever. It's like when you have your house in the city and your house I
Aaron
don't know what that means, but I think that is actually exactly what it's called. And so I started I went and toured a bunch of apartments, and I was like, hey, apartment guy. Here's the deal. I want a studio apartment because I'm not gonna I'm not gonna live here, man. And he was like, what do you mean you're not gonna live here?
I'm like, I
Ian
I make a lot of neighbor ever.
Aaron
Yeah. Exactly. I'm gonna be here from 9 to 5 when everyone is gone, and then when everyone's home, I'm gone. Gone. So I told him, like, hey.
I make a lot of I'll make a lot of YouTube videos. I have, you know, a full time job. It's not like I'm gonna be bringing you know, I'm not gonna be holding meetings here. It's literally just me, but I need a big space, a safe space. I need, like, a place where I can set everything up and leave it.
And so I toured I toured maybe 6 different apartment complexes
Ian
Interesting.
Aaron
And I signed a lease for an apartment. I've got an apartment now.
Ian
You know, I love that you the a huge upside, though, is, like, you've got your own kitchen. You got your own bathroom. Like Dude. It's very nice.
Aaron
Yes. Yes. Versus the coworker. Apartment, and I, I'm I'm gonna tweet this today. And so by the time people are hearing this, hopefully, they've seen it on Twitter.
The apartment is going to be called the PlanetScale Studios. So
Ian
Oh, there we go.
Aaron
It's gonna be a it's gonna be a permanent video setup in so it's this is actually a 1 bedroom, because at this complex, it was cheaper to do a 1 bedroom than the studio at the other complex, and I was like, what do I care? I just want the cheaper one. Yeah. So it is a one bedroom, and so I'm gonna set up every all the lights, and I got a new camera. I got some different lights.
Oh, what camera? Upping upping the production quality. I got I got a, I got a Canon r 6.
Ian
No. Sony? You didn't go Sony.
Aaron
I'm staying Canon family. So new camera, bigger lights, better lights, better lights, better desk, better backdrop. So I'm upping
Ian
up the whole bed? You gotta set up the bed.
Aaron
There's no bed. I'm not gonna have a bed.
Ian
You gotta have a bed.
Aaron
No. There's no bed.
Ian
You've got a bedroom. The bedroom is for the bed.
Aaron
No. You guys are
Ian
gonna need it. Studio. This way, either one of you could go bail and crash at at
Aaron
this place and get
Ian
a little rest time.
Aaron
That's actually one of the rules is, she was like, I think this is a great idea. You can't leave me alone and go nap. And I was like, yeah.
Ian
That's She can know. She can be the one who who goes with bees alone.
Aaron
Okay. We'll we'll talk about yeah. We'll talk about potentially a bed couch. There's there's a roofer bed. The whole What's in the
Ian
living room?
Aaron
I don't know. 2nd set or something. I don't know. We'll see. We'll see.
Ian
We'll Set? Oh, man. Alright.
Aaron
Yeah. Yeah. Yeah. We're we're doing the whole thing. So Alright.
At the PlanetScale Studios, I'm gonna Is
Ian
this corporate sponsored here? Is this is this, like, official, or is this semi
Aaron
official? This is this is official. This is the official PlanetScale
Ian
Studios. I like it. Yeah. I like it.
Aaron
And so I'm building out a new set, and I'm gonna set, you know, set I'm going to, like, try to hang the lights from the ceiling. It's going to be kind of fun because, like, you can't really do a lot in an apartment. Like, you're not allowed to, like, totally screw stuff to the wall. Right. So it's gonna be a fun a fun project.
But so benefits are it's gonna be so quiet. It's gonna be so quiet. You know, everybody everybody's at work during the day. I'm gonna be at the apartment during the day. The good news is I was completely forthright with the leasing agent, and he was like, yeah.
I don't that's fine. I don't care. Like, you're gonna be you're gonna be a good tenant. That's fine. In the lease, it says you can, like, perform business out of there provided it is like a work from home business, and you're not having people come.
And I imagine they added that once, you know, COVID hit that was like Right. Yeah. You all work from home. Right. So I'm I'm well within my lease rights.
It's gonna be very quiet. And then, yeah, I've got my own bathroom. I've got my own kitchen. And so this is gonna unlock this is gonna unlock, a new, like, a new vector for healthy living for me because, you know, I've tweeted about it, but I've been in a lot of physical pain recently, which we can talk about later. But this is gonna be like, okay.
Instead of leaving the house every day because you want to get out of the freaking house and going to pick up, you know, Chipotle, Chick Fil A, McDonald's just because you need an excuse to get out. Alright. You can, like, you can, like, make lunches in in the quiet kitchen where you're not feeling like I've got to get out of this house. Yeah. And so, for for a future show, I'm I'm gonna be a smoothie guy.
I'm becoming a smoothie guy.
Ian
I've done some rounds on the smoothie.
Aaron
Yeah. I I I eat kinda like, you know, if you have a 12 year old nephew, that's basically how I eat. Like, I I kinda just wanna hamburger some chicken. Yes. Chicken nuggets, like, maybe some pizza.
That's basically what I wanna eat all the time.
Ian
Probably not all the time.
Aaron
Like, you you give me an avocado, and I'm like, I'm not touching that. Can you send it back? I think I got some avocado on my on my quesadilla. Can you send it back? And so, you know, I've started doing these smoothies over the break as a way to, like, hopefully change my diet a little bit to decrease Mhmm.
Maybe pain and inflammation a little bit. Yeah. And you can put anything in the stomach.
Ian
In there. Yeah.
Aaron
You can put anything in there.
Ian
Spinach. Always put spinach is just baseline.
Aaron
Spinach. Spinach. Avocado.
Ian
All kinds of stuff.
Aaron
All kinds of random crap. You can just, like, put it in there, and you put a glob of peanut butter, and you're like, peanut butter smoothie. You can. I will say it goes
Ian
away. You do have to be a little bit careful if if you have a weight loss goal. I don't know if you have weight loss goal, but if you have weight loss goal, you can make a smoothie that's, like, 15 or
Aaron
count count and you're
Ian
still hungry at the end. You're like, oh, I'm gonna have the smoothie. Because, yeah, like, once you put a bunch of peanut butter and avocado and this and that, like
Aaron
Yeah. Totally. It's, like,
Ian
super calorie filled. But yeah, yeah, I love smoothies. They're awesome. Get some good protein powder. I like the naked protein powder.
Naked.
Aaron
Yeah, I think we actually got that. Yeah, I got some flavor protein powder for it. Yeah. Yeah. My wife has been running the show on that.
She's the boss, and she just, like, hands me a smoothie, and I'm like, what's in here? And just drink it. And it's great. I love it.
Ian
Yeah. I love smoothies a lot.
Aaron
That's gonna that's gonna open up because I'm gonna have a refrigerator there. What what am I gonna what am I gonna put in? I'm just gonna put, you know, bags of frozen fruits and veggies in the in the freezer.
Ian
That's perfect. So it can just sit there. It doesn't go bad and all that stuff. You just need, like, some milk or almond milk or whatever you're gonna put as a liquid, and that's it. Or water even.
So And
Aaron
then this is this is just I I'm I'm blowing my own mind here. Apartments have gyms.
Ian
Oh, free gym membership. Apartments have gyms. Genius.
Aaron
I'm gonna I'm just gonna be able to walk downstairs, So I'm gonna take, you know, 10 minutes to make a smoothie at lunch. What if I take another 20 to walk downstairs, do a little bit of workout, come back, crush some videos?
Ian
I think you should. That sound? You should you should absolutely try to take lunch. I think taking lunch is underrated. Take lunch because you're gonna work, you know, I know at least that you have been doing this and I assume you're gonna continued somewhat like you're working at night.
Aaron
Yeah.
Ian
Working after the kids go to bed. Right. So like when you work straight through and you don't even take lunch and then like, yeah, you get your couple hours at home and the kids, and then you go back to work after they're really sleeping. Yeah. Like that lunch break is kind of huge.
So like, yeah, if you've
Aaron
been pretty bad about
Ian
it. Yeah. Like even just a walk, like the, the apartment complex will still be it'd be a good place just to even walk. Like, just literally take your smoothie and, like, go walk around the complex, like Yeah. For 30 minutes, listen to an audiobook or whatever podcast.
Aaron
Point.
Ian
Yeah. Yeah. So I would try to put some of that stuff in. But, Yeah. That's I mean, it sounds I love this plan.
Aaron
And it's cheaper than the office quotes that I got. It's cheaper. The all of these amenities, and it's cheaper than getting an office in some boring soul sucking building.
Ian
Yeah. Yeah. I don't think you'd wanna be on office on your own. I like my setup here is nice because I have my cousin and my brother, so it's like some human interaction, but just to, like, be just to get an office office where you're just straight by yourself, I think is pointless. The, you know, in a co working space is at least adds a little human interaction, which is probably good.
But at the same time, you're at a point where like your time for human interaction right now is limited, in terms of like making new friends and stuff like that.
Aaron
So I've I've no It's been years
Ian
since I've made a new friend.
Aaron
What do I need a new friend for?
Ian
So Yeah. It's probably not a huge concern right now. So no. What's your plan gonna be? Are you trying to go there all day?
Are you gonna do half days?
Aaron
No. Just all day.
Ian
Okay. All day.
Aaron
Yeah. This is, like, I I leave the house to go to work like it's the 19 fifties. Yeah.
Ian
What, I guess you still have the au pair at home, right, during the day?
Aaron
We do. Correct.
Ian
Okay. So that's good. Yeah. So you have there's there's some help there, and you're only 3 minutes away if you needed to.
Aaron
I'm only 3 minutes away, provided everything else down. Yes.
Ian
So or whatever. Yeah. Come back for lunch.
Aaron
And you'll be able to do that for lunch. Yeah.
Ian
Right. Yeah. That's a good trick too. Like, eating at home is always better. But so tell I'm a big eat out guy too, but, you're always better when you're eating at home.
Yes. Always just Better in every way. Yeah. Well, I like this plan. I think people are gonna be surprised.
So I
Aaron
think so. I'm so excited. It's it is just like it just is it's just got my name all over it. It's just, like, weird enough that people are like, what are you? You're doing what, man?
But it's just, like, it's it's gigabrain. It's like, oh, dude. And we didn't even cover the last amenity. Apartments have pools.
Ian
Oh, yes. That's true. You could bring your crew there and boom.
Aaron
I could bring your crew there in the summer.
Ian
I love this idea.
Aaron
Basically, I basically just got a country club member.
Ian
I'm just gonna say it's a country club. Yeah. I like this stuff.
Aaron
If I were if I were a wealthy man, I would have an office and be a member of a country club. Instead, I have an apartment.
Ian
But it's just as good. It's better.
Aaron
It's just as good.
Ian
At a country club, you don't have a private area all to yourself anywhere.
Aaron
I know.
Ian
You know, in the locker room or whatever. Like,
Aaron
this is
Ian
like, you got your own space here. So, I'm very excited to deal
Aaron
with this. I kinda freaked out and was like, I gotta get out of here. I'm gonna go look at offices. Was disappointed by the price and the the benefits and then was driving actually, was driving home and thought, oh, there's 6 apartment complexes right there. I wonder what I can pull off there.
And it was cheaper. So
Ian
So do you have it? Are you in, or are you not
Aaron
in yet? Lisa started. After we get off this call, I'm going to get the keys.
Ian
Oh, man. Wow.
Aaron
Today is literally the day. Yeah.
Ian
We're gonna have update images inbound. Updates.
Aaron
There's gonna be so many pictures. It's gonna be great.
Ian
I wasn't It's gonna
Aaron
be so awesome.
Ian
Aaron Francis Band Club for the original shed quarters build out. So excited, for it to to get to experience this now.
Aaron
Baby, it's so good content.
Ian
I really love the Home Office. People love the Home Office story.
Aaron
Yes. And it's gonna be great. It's gonna be great for planet scale because it's literally gonna be, you know, when I announce it on Twitter, this is the new planet scale studios.
Ian
It's like, how
Aaron
cool is that?
Ian
Like, you know what you need to get if since you have corporate sponsorship, you need to get one of those custom, like, led neon light things, like the studio or something. Okay. Yeah. Yeah. You gotta have that.
Yeah. I love it. It's gonna
Aaron
be awesome. Doing it, and that's gonna be a ever present fixture in the backdrop is the custom a custom planet scale LED. It's so cool.
Ian
It's gonna be sweet.
Aaron
I'm so freaking pumped.
Ian
I like this.
Aaron
This is
Ian
this is great news.
Aaron
Isn't this wild? What did you expect? Did you expect apartment?
Ian
No. I I figured I I wasn't sure. It seemed you seemed tricky about the talking about it. Right? So I was like, well, it can't just be like, I know you're renting, so you're not gonna build something.
Like, maybe it's like a RV that you're gonna park back there or something. That's not really great stare the cool. Video unless you really got Yeah. I mean, some probably would work,
Aaron
but I don't know. Expensive, but that would be hysterical.
Ian
Some kinda, like, trailer that you can, like, move
Aaron
more Oh, yeah. Totally.
Ian
With the idea that you're gonna move it or, but, yeah, apartment. I like this. This is way better. I think this is I think you nailed it. This seems
Aaron
Yep.
Ian
Optimal. Hopefully, you have a good neighbor and not some some crazy neighbor. I know. Hopefully, I
Aaron
don't have a neighbor that's also home from 9 to 5.
Ian
Yeah. Because they're loud or something. They're doing that. Yeah. Something or they have they have 6 kids and the walls are thin.
Exactly. There are a few risks here.
Aaron
There are there are definitely a few risks.
Ian
But I think it should be fine.
Aaron
When I when I told my, few of my friends I was doing this, they were like, dude, have you ever been to an apartment? It's so loud. And I was like, okay. So hang on. First of all, this is a good like, it's a good apartment complex.
Like, it's not Yeah. It's not the cheapest one in Dallas for sure. Right. Also, I think I think I'm I'm basically working the reverse schedule as everyone else. So my my understanding or my my guess is that the frustration with apartments being loud is at night when people are watching TV and screaming at the TV or on the weekends when they're at the pool dorking around and listening to muse music of the youths.
Right? And so I'm I just don't think I'll be there during those times. So that's my hope. Yeah. I could be proven hysterically wrong, and that would make
Ian
it a good attempt. Be a huge one too, but you're definitely most of the year, we'll have kids will should hopefully be in school and so that shouldn't be too much of an issue other than maybe summertime or whatever. So Yes. Totally. Yeah.
I think the risks are are low. Yeah. So Alright. I like it.
Aaron
So exciting. So, yeah, look forward, you, Ian, look forward to a tweet. Everyone else, hopefully, you saw my tweet, by the time you hear this.
Ian
Alright. So then during our hiatus here, you also said you're doing a static site package. Like, what the hell is going on? Are you doing more static?
Aaron
Bring me don't bring those curse words at me. I mean, you're so frustrated. What the hell? So here's the deal. I was on,
Ian
how much stuff did you do?
Aaron
No. Not it's not too much. Not not enough. I was on, what's it called? Overengineered with boss man Chris.
Ian
I didn't listen to that. I should listen to it.
Aaron
How did you know that I was doing this then?
Ian
Well, I think I saw it on Twitter. Yep.
Aaron
Oh, man. That's crazy. Yeah. It's not it's it's really not, One is it hasn't even been started besides, like, coming up with a dope name for it that I can't share now.
Ian
Oh, boy.
Aaron
So a dope name and some branding. And the the idea here is that, like, I think I can offer a way to build static sites with vanilla native full on Laravel and then have, like, really strong first party integrations to the static site hosts such that, you're like, alright. I built my site. Now I wanna run it on Netlify, and you can just say deploy Netlify, and it'll handle, like, setting up, you know, redirects based on how the Netlify platform works. Maybe that's middleware.
Maybe that's a configuration file. Maybe that's edge middleware. Setting up, like, OG images and syntax highlighting and getting it all deployed, that kind of stuff, and, like, having it as a GitHub action as well. And so it's really not it's not something like next or next where it's this huge framework on its own. It's kind of this package that's like, hey.
Build out everything you want with, you know, route model binding, and then we will figure out all of the final URLs, and we'll construct a package, that is conforming to any of these, you know, 10 different first party, static site hosts from get pages to Cloudflare pages to Netlify to Vercel, and then we'll just push it out there, and here's a GitHub action to do it. So it's not huge. I think it is pretty cool, and we'll see when it gets done.
Ian
Could be something that goes back burner. I could foresee.
Aaron
Oh, yeah. For sure. Yeah. And could be could be something that's, like, basically, I build it and use it myself, and then that's how anything ever gets pushed on it. It's like, oh, I need this now, and I'll I'll build that out myself too.
I know you have you have so many problems with my static site that you're like, I don't I don't think this is a good idea, but I think it's a great idea.
Ian
No. I I don't think that I think I don't know if it's a good idea from your time perspective. Like, I don't know if this, like, pushes screen casting forward. Does it push
Aaron
the YouTube
Ian
channel forward? Like, whatever
Aaron
those things are going on. That's one of the things I'm discovering about, making YouTube videos is I need to personally, I feel like I need to have real projects from which to pull interesting tidbits.
Ian
Gives you something to do.
Aaron
Yeah. And so this is like a this is like a content muse, kind of. So we'll see. But Like I said, I think you need to pick up
Ian
a database project then. You need some kind of heavy database thing.
Aaron
Well, yeah, for for the plain and scale side, yes. But for the personal side, I need some Laravel stuff.
Ian
As much. Yeah.
Aaron
So yeah. So like I said, I haven't actually started on it, but it's cool, and I've got a great name for it. It's kicking around.
Ian
Great name is important. You got the good domain.
Aaron
You got
Ian
the good name.
Aaron
Yep. Yep.
Ian
You're halfway there.
Aaron
I'm halfway there, so look for it in 2025.
Ian
Alright. So the other item we had on the list was my database woes of MySQL and out of control memory and all that stuff. Yeah. It sounds like
Aaron
it cracked it.
Ian
8 weeks of that or 7 weeks of that or whatever, freaking sandy. This is the the sad part of SaaS where you think it's all happy and fun. It's not happy to babysit a database server for
Aaron
2 Yeah.
Ian
But we are over it. We figured it out. Yeah. I was basically we're gonna get super esoteric, but there's this thing called table table open cash.
Aaron
I've never heard of this in my life.
Ian
So there's table open cache, which is how many tables you could put in the cache when like the table definitions, the, the database system stores.
Aaron
Okay.
Ian
And then there's, you could have a set number of instances of that cash And the recommended amount in the documentation is 1 per CPU, which is what we had. So we had 10,000 tables set as the cache. We had 16 for the number of instances of that cache. We had tried making the the open table cache lower and higher down to, like, 500 up to 20,000. Like, everything in between didn't impact anything.
Aaron
K.
Ian
But the number of instances apparently did because when we dropped it from 16 to 4, everything was perfect. Then it all worked magically and everything's fine. Really? To change that is not dynamic. Open table cache is dynamic.
Open table cache instances or table open cache instances is not dynamic. So you have to restart the server. We can actually do without downtime now because amazon launched this new thing, which is actually pretty cool called, blue green migration. So you can basically build a clone of your environment and then it'll just DNS switch over when you want and the clone's have different parameters set. So we were able to do it.
It just costs money, but it doesn't cost downtime. So we're able to do it no downtime. But it was annoying And something I didn't change initially because it was annoying, and the doc said you shouldn't really have to. We were set up appropriately. But my QA docs, whatever, nobody cares.
So change this and it memory's a flat line. Server's super stable. Everybody's happy. Everything's fast. Everything's wonderful.
Aaron
So how in the world did you did you find this? Was this Percona? Had they seen this before? Or was this just like
Ian
No. They hadn't seen it before. So the good the good news is
Aaron
Wow. Good for them.
Ian
Was Percona. Kona after paying them lots of money. They did fund it, which is good. And yeah, he just taught us change after like several, I mean, we have been working with them for several weeks because the way they do it is like 4 hour chunks over different days spread out. It's not like the guy just sits there with you for
Aaron
2
Ian
weeks straight. Like, it's all spread out, which I guess makes sense because sometimes you're changing something and then you're gonna wait and see 2 days. What happens? Right? So, like, they spread out when the
Aaron
action works on your project. Method.
Ian
Right. Yeah. So, so anyway, yeah, just do this. And, we did it over, It was a pretty good time for downtime if we were gonna have any, which we didn't, but it was over Christmas or something like that or
Aaron
yeah, whatever.
Ian
Anyway, we, we switched it over and it worked. So, yeah, the guy it wasn't the guy's recommendation. I had seen this. It is the only setting in the entire MySQL configuration documentation that even talks about memory usage and that this setting can impact memory usage. Yeah.
Aaron
It's a
Ian
good tool. There.
Aaron
Yeah.
Ian
But so, anyway, so it fixed it. Brutal. And we're back back online.
Aaron
So you're back online and you're migrating to single store? Is this what I'm hearing?
Ian
No. We're not migrating to single store. So I haven't talked about this on here much yet, but, yeah, next generation help spot, which is gonna be a clean slate, We'll use single store.
Aaron
Ground up rewrite?
Ian
Yeah. Ground up rewrites. Oh, gotta cover
Aaron
that one day.
Ian
Yeah. We'll be talking more about that. I'm sure over a time. It's gonna take, like, a year. So it's, we got we can it'll be sprinkled in as I hit stuff, and we'll a little bit more.
But, we are gonna pull we're gonna pull a page out of the d h h playbook, which is Ian. I know it's crazy talk. Existing customers, which are on help slot 5. Uh-huh. They can stay on there forever if they want to.
So like, we'll keep that stack up. That's that has this existing my SQL issue, like whatever that stack can just stay up. They can stay on there. I think a lot of them will eventually want to move to the new version. And so we'll have a way to do that, of course.
But, but this way, it also frees us up to do some different things. Because it's just like a lot we've learned in 24 years and
Aaron
Different product at that
Ian
point. Yeah. I want stuff to work differently than it did in the current help slot. And so this way there's a little bit less pressure there. It's like, I think it's better this way, but if you don't like it or you don't wanna relearn it and you're very happy with current help spot, then you can just stay on current help spot and you don't have to change at all.
And that's fine. But if you wanna change, then if you like these new ideas, then, you know, we have the new platform that Yeah. And so it was so, yeah. Man, that's crazy that
Aaron
you love d h e DHH so much now. That's wild.
Ian
He has some good ideas.
Aaron
It's not
Ian
always too
Aaron
bad. That's how interesting.
Ian
So we'll see how that goes. That'll be a whole interesting thing.
Aaron
Big that's a big move.
Ian
Not
Aaron
only a ground up rewrite, but a different database technology.
Ian
Yeah. A whole different database structure, too, because current I think we talked about before, but we have a database per tenant now. Right. Yeah. And it'll be, more traditional
Aaron
Centralized.
Ian
IDs. Yeah. Single tables.
Aaron
Great.
Ian
So that'll be a whole thing. I mean, a single store does like shard it and all that stuff for you. So it's a little bit kind of like the current setup in some ways, but it's managed by the database platform instead of by us.
Aaron
And if you, if you use that single store Laravel driver, you'll be using my handiwork, I wrote that.
Ian
I do use it. So you have to use it. It's spectacular. It's excellent work on your part. It's got everything you need in there.
It's so good. I hopefully they, I don't think I think somebody's still maintaining. I don't think it's you, though.
Aaron
Sure. Hey. It's not me. Let's just make sure that's make sure that's on
Ian
the record. You, man.
Aaron
In case Holly is listening, I haven't touched that since I got hired by playing as good.
Ian
That is for sure. Yeah. That's true. I guess we're in a little bit of a conflict of interest zone potentially. I think
Aaron
so. Yeah.
Ian
I don't know. It's not really true, though. It's sort of true. It's alright. I I had this on the on the list of things to talk about.
I took it off, but I put it back on.
Aaron
If we
Ian
cannot talk about it if it's not your right.
Aaron
I don't know what's happening.
Ian
You just have to reserve the right.
Aaron
But Okay.
Ian
The PlanetScale pricing page.
Aaron
K.
Ian
To me Uh-oh.
Aaron
Is
Ian
not is very, very bad. It's a bad price.
Aaron
Okay. Great. Hey, Matt. Tell me, what do you what do you see? Planetscale.com/ because
Ian
when I go because it's like what we're talking about now. Like, oh, you're using a single store. And, like, to me, the plantscale pricing page, it's telling you that it's not for big use cases. Like if you have a 1,000,000,000 road, don't come here. Because like the, the top tier is $39 Right?
And like, you can make it go up to 9.99. And even then, you're only getting 8 CPUs, 30 gigs of RAM. It just feels very focused on the, like, side projects, small projects,
Aaron
really, it's
Ian
interesting. It doesn't speak to me that, like, this is where you want your big heavy enterprise use cases.
Aaron
Because of the pricing.
Ian
I mean, the maximum you can even define is 9.99. It's like, I mean, nobody spends 999 on a database, like an enterprise scale. Right? Like, that's, like, very small amount of money. So And
Aaron
our enterprise customers don't spend that, by the way.
Ian
We have It's like, I know this is the custom pricing. Right?
Aaron
And you can
Ian
go talk to enterprise. And I'm a little bit more in the middle because it's like we have a an enterprise use case in terms of quantity of data to some degree, but we don't we're we're a very tiny company, so it's a little bit on the founder. So I'm looking at it, like, what can I see on this pricing page versus, like, a middle manager or some other company that's like, oh, yeah? Contact them for enterprise support, and I'm sure they'll
Aaron
go into it.
Ian
And I know Plano skill does all this stuff. So I'm not even saying for me, because I know that it's technically capable of a large project.
Aaron
Yeah. Yeah. Totally.
Ian
I feel like this doesn't convey that. Like if you go to the single store pricing page, yeah.
Aaron
Let's see that.
Ian
It's like, I mean, it's not as nice a pricing page as this. So this pricing page
Aaron
is the nicer
Ian
pricing page. Right? But it's like, hey. You want terabytes of memory? Sure.
We can do terabytes of memory, like, whatever you want.
Aaron
Alright. So I'm looking at cloud. You're not doing self managed. You're doing cloud.
Ian
Yeah. We're doing cloud. I mean, this kind I do have a potentially self managed use case, but I'm presuming I'm gonna go cloud. But the top price model here has
Aaron
Well, they've got
Ian
terabytes of RAM. Okay.
Aaron
I see. They have a, see more want more detailed pricing and sizing.
Ian
To go to the detailed pricing to break it all up. Yeah. Yeah. Yeah. Yeah.
Yeah. I'm pretty sure that this is negotiable, so I don't think those should Yes. You know, when you're getting 24 terabytes of RAM Yes. Probably have to be a
Aaron
part. Yeah.
Ian
But it does convey a certain amount of, like, hey. Somebody's using this thing with 24 terabytes of memory. Like that's a pretty huge database. Right? So for sure.
Yeah. And, and basically infinite storage and 3,000 CPUs. Right. So that is conveying that, like, you wanna sharded, you know, you need a sharded large scale database. Yes.
This is what we do here.
Aaron
Good lord. They $1200 per hour. It's a
Ian
little pricey at the top.
Aaron
S 384. Well, I have no idea. Like, for this this resources, we may charge something similar. But just seeing $1200 per hour is like good god.
Ian
So it's a little it's a little pricey. I'm hoping that's why I'm gonna watch the size of my columns here. I can't be like
Aaron
Yes. Exactly right. You can't keep your innuums. You gotta keep your in news small.
Ian
Keep my in line. But anyway
Aaron
That's interesting. So what you're saying, if I can repeat it back to you, is that, the way that our pricing page is signaling is that, well, to rephrase, our pricing page signals that we don't have many really, really large workloads because we max out at 8 vCPUs and 32 gigs of RAM in the in the, like, self serve slider scale your own thing.
Ian
Right. Yeah. I don't know. It just feels small. You know?
It just feels like this is for smaller things. Like, I could have a smaller thing that fits in here, and that makes sense. Right? But, like
Aaron
Yep.
Ian
Is it actually for if I need a terabyte of memory? Like, it doesn't it doesn't feel that way. Like, even though I'm sure it can do it because I know you and I know the company more than the average person, but I'm just saying sure. That's what strikes me when you see like 0 29, 39, like that's what you see on the pricing page.
Aaron
Right.
Ian
Right. Right. Again, for some customers, that's what they wanna see. It's like, oh, great. This is like less expensive than Amazon or equivalent.
I don't know. You know, it's a little hard to compare apple apples, but it's like reasonable. And but if I have a bigger project, I don't know.
Aaron
Yeah.
Ian
Kind of feels like maybe it's not set up for that. So that's No.
Aaron
It's great. Yeah. It's great. That's really helpful.
Ian
We're not getting
Aaron
Fortunately, fortunately no. That's fine. Fortunately, pricing is not my, bailiwick, and it's not my area of expertise. And so it's like, great. I love that feedback.
I get to hand it on to somebody who will know what to do with it. That's perfect. Yeah.
Ian
Maybe they test it all. It's like, no. We get twice as far as this one. Right? Who knows?
Like Yeah. Just my off the cuff thing when it came up the other day and I was looking at it. But, yeah, the single story is kind of interesting because, and we'll, we can talk about this more and it'll be cool to get some comparison with what planet skill does. But there is some interesting things that the, single store provides that's a little different than my SQL because it's not my SQL.
Aaron
Because it's not. Yeah. That's what I will be most curious to hear about as you go on is because it is I think it's memSQL is the old name of it because it is. Yeah. Not actually my sequel.
I'll be curious if you run into any, like, any showstoppers or problems or something. Yeah. Because it it not in a, like, a not in a derogatory way. It pretends to be MySQL. And so you like, you're kind of lulled into thinking this is MySQL.
Right? Because it's, like, wire compatible. It's very compatible with MySQL, but it's not actually MySQL. Right. So that'll be Which
Ian
is my which is my hope. Yeah. But I, that'll be some interesting edge things because, like, so my SQL's full text index. Yep. Is not great.
Yeah. Okay. I mean, it's fine, right? For small, but again, when you throw in Yeah. Hundreds of gigabytes, it doesn't really like that too much.
Aaron
No.
Ian
Whereas like the single store full text, which is my sequel compatible in terms of syntax is built on Lucene. So yeah, presumably it will be more performant. I'm sure it will have its own little things, but I'm hoping it's more performance. So this is actually based on Lucene, which is what even the last search is based. Everything's based on the top of Lucene.
So will it be better? I don't know. So far it's fine, but I haven't put 200,000,000 rows in there either. So we will see. So I'm gonna like, that was that's actually in my app service provider.
Nobody even brought up. I had to build a little
Aaron
I saw it.
Ian
Single store search engine.
Aaron
Oh, I definitely saw it. Yeah. Yeah. Yeah. I you know I saw that.
Ian
Yeah. So, like, will we be able to push that really far, which is my hope, or will it be like, no. We have to, like, offload this to a dedicated search service
Aaron
Right. At
Ian
some point or whatever, which Mele Mele, Miley, Miley
Aaron
search, whatever whatever it is.
Ian
No. No. That thing definitely can't handle it. That thing is like
Aaron
I guess that's true. It's a little hobby for
Ian
your scale. It's not built for any real data amounts. Like, as soon as you get to, like, even, like, 10 or 20 gigs of data, like the index is like a hun 200 gigs or something. And like, holy. Yeah.
It's not built for substantial workloads. It's for like,
Aaron
oh, let's see.
Ian
Ecommerce sites and things like that. But, yeah, it's not really built for heavy lifting of terabytes.
Aaron
And Algolia is just prohibitively expensive at that. I like I
Ian
like I like I like I would love to use a great products. Yeah. It's insane. It's like, yeah, a $1,000,000,000 for Yes. Yeah.
I I don't know how anybody uses it. Again, it's like I don't If I have a ecommerce platform, fine. It's like, here's my 1,000 products, and I get that could maybe work. But
Aaron
we used it at Resolute at the property tax firm. I implemented it. And we, you know, we paid handsomely. But at that stage, handsomely is, like, what, $200 a month? Yeah.
I mean, that's for a lot of money. Is like, that's a lot of money, but it's world class, and, like, we don't have that much data. And so I wonder god. Just I don't know. Yeah.
They're they're prohibitively expensive once you once you get
Ian
too far. It's great. I mean, you're $222,000 a month. I'd be like, yeah. Great.
Let's do it. But, like, it's not gonna be anywhere near that. At least last time I looked, which was only a few months back, but You
Aaron
should call them. They do, like, you know
Ian
I guess I could
Aaron
This enterprise pricing is it's just like true. It's totally made up.
Ian
It could be it does actually seem like a little bit it's sort of interesting. They do have a little bit even this pricing looks a little different than last I looked. It's 50¢ per 100,000
Aaron
Goofy looking page.
Ian
That's a little tricky to follow. I should give them another look just in case, but I think it does get to be pretty. Yeah. It's like 40¢ per oh, yeah. There you go.
See, it's like the baseline's fine, but then it's 40¢ per a 1000 records. I mean, we have customers who add a 1000 records a day or more. Like,
Aaron
so but Yeah. And at that point, we're really have to be careful what you're what you're running through Scout, like, what your index Laravel Scout, what you're indexing because you're just gonna end up getting totally hosed on pricing
Ian
if you
Aaron
do that. Yeah. That all With
Ian
that, I'm trying to be careful anyway, not I'm trying to really index just what has to be indexed. It's sort of weird. We get in this weird. There's a whole other thing we can talk about at some point, but like when you have a help desk ticket, like, I'm sort of tempted to just index the initial request and the solving request and not the like 30 emails in that, which are just kind of old with a bunch of BS. And current helps thought it's all indexed.
But how often are people really searching for the 10th email in a thread from 4 years ago? Like, not that often From
Aaron
4 years ago, not that often. But from 6 months ago, maybe.
Ian
Maybe. I know. Then you could get into the game of, like, well, do we have, like, a hot table with, like Yeah. More recent data, but then we drop it off over time. Like so it does it gets complicated.
But, my so default, I would like to just shove everything in there because that's simpler. But yeah, we'll see. It might not be optimal scale wise. Lots to talk about there. Well, a lot of That's a lot.
Yeah.
Aaron
That's good content. I'm excited for that.
Ian
Yeah. Anything else going on we need to cover?
Aaron
I don't think so. Gonna go get the keys and go take a picture and start this whole, you know, playing skill studios era.
Ian
I'm excited. Alright, man. We'll have fun with that. Thanks everybody for listening. Good to be back on the mic.
Check us out at mostlytechnical.com. Mostly tech pod on Twitter. We'll be posting up, I'm sure, video snippets and all that. And then mostly technical podcast at Gmail. You can email us, and we're we're starting fresh.
We're checking new year.
Aaron
This year, this year, we'll read them.
Ian
Well, we've always read them, but we've we've addressed them before, but this last one was too big a gap. Like, everything's from, like I can't get into, like, d h h and once again. We covered that enough. Like, we can't Yeah. That stuff.
So alright. Thanks, man. Have a good one.
Aaron
Alright. See you. Bye.