Latest / North Meets South Web Podcast / Fast Laravel with Jason McCreary
Transcript
- 0:00-Hey, I'm Michael Dyrynda. -And I'm Jake Bennett.
- 0:02-And I'm JMac. -And welcome to episode 194 of the North
- 0:07Meet South Web Podcast. [upbeat music] Ah, this is what happens when we don't plan.
- 0:12Yep, 194 is the episode number. We've got our good friend, Mr. Jason McCreary, JMac,
- 0:19with us on the air. JMac, tell the people hi.
- 0:21-Hello. -Welcome. Nice to have you here.
- 0:23Yay, there we go. Yeah, so we've been trying to get Jason, Jason on the show for
- 0:27a couple weeks. Um, we talk about Jason, I feel like, on a pretty regular basis.
- 0:33-I- -Michael, would you agree? I feel like
- 0:35JMac's name is said at least every other podcast.
- 0:37-Yeah. Well- -So...
- 0:38Every other podcast, every other, like, we, between this podcast and the, and the
- 0:42Laravel News one, he gets a, he gets
- 0:44a lot of airtime, I think.
- 0:47I appreciate it. Well, I'm, I'm glad to actually be on air. Sorry, I'm old now.
- 0:52-[laughs] -I, I can't stay up much past 10:00
- 0:54-anymore. -I know. You messaged me last week, and
- 0:55-you're like, "So can we- -No worries
- 0:56... can we record?" I said, "We've been trying to organize this for about six
- 1:00weeks now, and you've always been the one to bail." But you've had good reason for
- 1:03-it, between, you know- -Yeah
- 1:04-... young kids that don't sleep- -You know, I-
- 1:06-... and sickness and- -I apologize
- 1:07-Yeah, sickness -... that's all right.
- 1:10Yeah, I think I was, I think the first night the lines got crossed, and then I
- 1:13think the second time, yeah, it was just, like, we were getting some of the daycare
- 1:17-crud. -Mm-hmm.
- 1:18Yeah.
- 1:19That's how it is, you know. You get the kids, and then everybody bring, they bring
- 1:21home all their fun sicknesses, and we get to enjoy the, uh, benefits of stronger
- 1:26-immune systems, I suppose. I don't know. -The climb.
- 1:28-That's the- -That's the climb
- 1:28... that's the only way to spin that one that I can f- yep, exactly.
- 1:32-Yeah. -Silver lining, if you will.
- 1:33-Excellent. -Uh, well, the astute observer will notice
- 1:37that I am actually not in my typical location. Uh, as Andy Hinkle would say,
- 1:41the f- the, uh, infamous, uh, what is it? What do they call that? Like, the white
- 1:46-slat- -Shiplap?
- 1:46... walls. What's that called? I'm losing my mind.
- 1:49Shiplap. He's like, "The infamous shiplap wall." He came to my house-
- 1:53-[laughs] -... you know, not too long ago, and was
- 1:54like, "Oh, the shiplap wall." I'm not in front of the shiplap wall today. I am on
- 1:58the road. I am traveling in Wisconsin. Um, Jason says I am becoming a tall Eric
- 2:04-Barnes- -[laughs]
- 2:05-... because I'm on the road- -Super tall
- 2:06... for a golf trip for the, for the company. Yeah, so, um, anyway, that's
- 2:10where I'm at, and so I brought my equipment. I, I'm the rare, you know, I
- 2:14-hardly ever remember my equipment- -Mm
- 2:16... when I'm at home, and I somehow remembered to bring it on the road with
- 2:18me. So Michael, just before we pressed the record button, you said you were gonna
- 2:21-ask me something. What was the question? -I was gonna ask you something, 'cause you
- 2:23said you're here, you're not working. Like, is this time off work, or is this
- 2:27work time?
- 2:28-This is work time. So this is like- -Right
- 2:30... we are here for visiting a client. So I'm sort of doing some work in the
- 2:34evenings and things like that, but during the day, like tomorrow, we have, like, a
- 2:37-tee time at 9:45. -Okay.
- 2:39We'll be golfing for half the day. We've got a little, like, um, event tomorrow
- 2:42night for the, for the golf outing that we're here for. So yeah.
- 2:45-Mm-hmm. -It's time, I'm on the clock, but I'm
- 2:47getting to have fun while I'm on the clock, so it's great.
- 2:49Okay. Well, that's all, that's all good then. I, I just,
- 2:53'cause you were, you know, you had Memorial Day weekend last week, so you
- 2:55were away for that, and then a few weeks before that-
- 2:57-That's right -... you were away somewhere else. Like, I
- 2:58feel like you take a lot of vacation time, and I'm just trying to figure out-
- 3:03-Oh, no -... how much vacation time you have, and
- 3:05how much of this is just loosey-goosey Jake's been at the same company for 15
- 3:09-years, so he just- -[laughs]
- 3:11-... ticks off whenever he feels like. -Oh. Well, okay, so let me put, let me put
- 3:14this in perspective though, right? So I was up until 2:00 AM doing a deployment
- 3:17-last night, because it's- -Mm
- 3:19... you know. So, I, I mean, it all sort of evens out, doesn't it? I mean, like,
- 3:23-the- -Yeah
- 3:23... the application that I was working on couldn't be down during regular hours, so
- 3:27you're up late doing stuff. So it's like,
- 3:29I, I get what you're saying. Um, it was Memorial Day, so that was not PTO. That
- 3:33was just a normal sort of, like, you know, we have the day off sort of thing. But
- 3:37the summers are a bit different. I feel like I don't take much time off at all
- 3:40-during the regular year. -Mm-hmm.
- 3:41But the summertime, like, is when I get all my vacation in. So JMac-
- 3:46-Yeah -... doesn't necessarily have this problem,
- 3:48because JMac is a business owner, and is, uh, what I would rank as unemployable.
- 3:54He's not unemployable. I think you told me that one time, Jason. You were like,
- 3:57"Yeah, I could never go back to a normal job again."
- 4:00I think, I think to Dyrynda's point, I couldn't go to a job that I was like, "Can
- 4:05-I take next Friday off, please?" -[laughs]
- 4:08I just don't think I could do that.
- 4:10Um.
- 4:11You know, the, the lucky thing for you is that you would get, like, a, a millennial
- 4:15as a boss these days. So someone that is younger than you would be-
- 4:18-Yeah -... your boss, and most of them don't
- 4:19-care. -Which I don't know if I could take that
- 4:20-either, in fairness. -They're like, "Sure, take whatever time
- 4:21-you need." No. -Yeah.
- 4:23-No. Well, I- -Yeah
- 4:24... my current head of engineering,
- 4:26when he was,
- 4:27he was working somewhere else, and I'd worked with him years ago, and we were
- 4:31both engineers on the same team. And so we went our separate ways and did our own
- 4:35things for a few years, and he said, "Have you got any jobs where you are at the, at
- 4:38the moment?" And I was like, "Well,
- 4:39I don't think we're looking specifically at the moment, but I'll put you in contact
- 4:42with, with the right people, and you can have a chat, and if something comes to
- 4:45that, you know, something can come of that." And
- 4:48he, um, he's a, he's a few years younger than me, and he came to my daughter's
- 4:53second birthday, and we were just talking, you know, how did it go. He's like, "Oh,
- 4:55I've had some conversations, but they're not really sure," you know. And then the
- 4:59following Monday,
- 5:01the people that he had conversations with, they're like,
- 5:03"So Sam's starting, and, uh, he's gonna come on board as head of engineering." I
- 5:06was like, "Whoa, whoa, whoa, pump the brakes. Did I just get my mate a job as my
- 5:10-own boss? What is happening?" -[laughs] So is that what happened? You got
- 5:15-him a job as your boss? -Yeah, yeah. So yeah, he's-
- 5:17-Okay. Wow -... yeah, so he's, he's head of
- 5:18engineering. He's been at, at the company with me for probably three-ish years now.
- 5:23-Oh, wow. -Maybe coming up four.
- 5:25-And you, and you- -Yeah
- 5:25... and you told him, "You're gonna sign my referral check, buddy."
- 5:28-[laughs] -Yeah, right. [laughs]
- 5:29For your position.
- 5:30-There are, there are two points, though- -Yeah, we-
- 5:32... on, on that. The,
- 5:34to, to
- 5:35the point of more vacation time in the summer-
- 5:39-Mm-hmm -... uh, I actually, I do see that in
- 5:41Shift. It is funny. May and December are my, my lowest usage months by far.
- 5:48-Mm. -Uh, and I think-
- 5:49-Mm -... as probably being 60% US market,
- 5:52like-You know,
- 5:54as Jake's saying, everyone's off in May. You're off school. You're taking your
- 5:58-first- -Yeah. Mm-hmm, mm-hmm
- 5:58... of your summer vacations. You know, Christmas, same thing. You're two weeks
- 6:01-off probably- -That's right
- 6:02... around Christmas time in the US typically,
- 6:05uh, your kids or something. So I, I definitely see seasonality, low
- 6:09seasonality for Shift. So I'm kind of on the, while I can take a vacation, I
- 6:13suppose, whenever I want,
- 6:15uh, you know, the business is affected actually by other people taking vacation,
- 6:20-right? -Yeah.
- 6:20-They're not in the office- -Mm-hmm
- 6:21-... running shifts- -That's a good point
- 6:22... upgrading their apps.
- 6:24Yeah, which sort of... I'm gonna loop back to this because
- 6:28I, I tend to assume that people know who you are because you've been in the
- 6:31community for such a long time. Uh, take this opportunity to say thank you for all
- 6:34you've done for the Laravel community, but for those people who have not yet met you
- 6:39or have not been to a Laracon where they've, they've been able to hear you
- 6:41speak or whatever, can you just tell us kind of what you do, uh, you know, what
- 6:46you've created, a couple different things that, that, you know, maybe something
- 6:48we're gonna talk about today as well. But just give us your intro. Who are you? What
- 6:51do you do?
- 6:52Yeah. So Jason McCreary is the full name. Uh, I've gone by JMac for a long time, so
- 6:57I think most people in the Laravel community know me as JMac. That nickname
- 7:00predates Laravel community actually, 'cause I, I just... No matter where I
- 7:04worked, there were, there was always another Jason. I think at one job, there
- 7:07was four other Jasons on our, like, 20-person team. So it was just... We al-
- 7:11-always had- -Wow
- 7:12... a nickname.
- 7:13JMac's the one that stuck, Jason McCreary. So,
- 7:17uh, again, in Laravel, I think most people probably know me as the creator of Shift,
- 7:21uh, for a little stint there, and they might have known me as, like, a test
- 7:24evangelist. That was probably my most recent, like-
- 7:26-Mm-hmm -... Laravel Talks.
- 7:29Um, occasionally I make a course. You know, I think over the years people have
- 7:32picked those up the longer they've been in the community. Uh, I typically make a
- 7:36course where I feel like there's a gap of knowledge, and honestly, it's-
- 7:41-Mm-hmm. Yeah -... sometimes it's in my own,
- 7:43like, my own knowledge gap, so the, the most recent one-
- 7:46-Mm -... Fast Laravel.
- 7:47You know, I was familiar with page caching back... You know, I've, I've been doing
- 7:51web development for almost 30 years now, so, like,
- 7:54I remember page caching back in, like, 2007, right? To, like, these big-
- 8:00-Mm-hmm. Mm-hmm -... when I worked at, like, Fortune 100
- 8:01com- 100 companies. They, like,
- 8:04needed to cache and, like, to, to up their page ranks in Google. Like, your last bit
- 8:08of eking things out was, like, a fast page, right?
- 8:12And I just felt like with serverless and all these other things, it kind of became,
- 8:16like, a little bit of this lost art. But yet, like, Cloudflare's on the scene-
- 8:19-Mm-hmm -... and it has all these, like, free
- 8:21services, and it's, it's big one being edge caching is kind of its initial claim
- 8:25to fame. It's, it's obviously has so many services now. Uh, but I think the big part
- 8:29of it initially was, like, you know,
- 8:32the edge, uh, you know, caching, the DNS, the pro- the proxying that happens.
- 8:37-So about a year ago, yeah- -Yeah
- 8:38... I just dug deep into that. So that's kind of the most recent course. But
- 8:41there's been other ones, you know, like old school knowledge, Git knowledge,
- 8:45testing. Um,
- 8:47I kind of make them for me. They're not, like, huge Adam Wathan, like, splash style
- 8:52courses.
- 8:54-[laughs] Um- -Yeah
- 8:54... but, you know, they're still fun to make. It's kind of just me turning the
- 8:57camera on and, and revealing what I've discovered, so...
- 9:01-I love that. -Which is the next one's cache.
- 9:02I think the first one...
- 9:04Yeah, absolutely it is. I, it's like you have the perspective of the beginner at
- 9:08that point. It's all still fresh, and so, you know, it's the, uh-
- 9:10-Mm-hmm -... opportune moment to sort of share that
- 9:13-information. -Yeah. I think the beginner to
- 9:15intermediate's, like, kind of an underserved market maybe is... You know,
- 9:18if you're super beginner, like Laracasts or just you're gonna YouTube stuff,
- 9:21whatever, it's gonna work. But that, that kind of, like, early intermediate and
- 9:25mid-intermediate, I think is just, like, a big, a big underserved market.
- 9:31Yeah, and I think the very first thing that I remember seeing you for was getting
- 9:35-Git. I think that was early, early on. -Yeah.
- 9:37-Um- -That was my first course ever
- 9:39... and so that was a, that was a great... Yep, that was a great course. I remember
- 9:42watching that and learning a lot from that. Um, and you've had base code. You've
- 9:46had a lot of, a lot of different items along the way. Of course, you've had a lot
- 9:50of blog posts that have been influential and helpful to me personally. So, um, yep,
- 9:54Laravel Shift. I actually... Before we jump into Fast Laravel, I would love to
- 9:57just talk about
- 9:59what sort of differences you've noticed as AI and agentic coding and things like
- 10:05that have come on the scene, and even with, you know, the latest, uh, upgrade to
- 10:09-Laravel 13, which I've gotta say- -Yeah
- 10:11... we are doing a slew of those right now. Um, just what's changed on your side?
- 10:16Tailwind, you know, has obviously had to, like, pivot. They've had a bunch of
- 10:18changes, so open source stuff has been affected greatly. Um, even Jeffrey Way
- 10:23with Laracasts has been putting out a bunch of things, just like, "Hey, here's
- 10:25how AI ef- is affecting our business." How, how have you felt that impact as a
- 10:29business owner?
- 10:31Yeah.
- 10:32I think with Laravel 13,
- 10:35for me, it probably clearly signaled the beginning of the end for Shift, at least
- 10:40as far as future, the future of the business goes, probably much-
- 10:45-Mm -... like Tailwind talked about earlier in
- 10:47the year. Like,
- 10:49and Shift's a little bit different in the sense that, like, there's no real strong
- 10:53pivot. Like, I think Tailwind can find some other pivots, you know, into, like,
- 10:57this UI.sh. I've noticed they're kind of looking into, like... They're integrating
- 11:02more of their design skills, like, into AI to offer kind of, like, this paid service
- 11:08in a way. I think they're exploring that anyway. But the point is, is like-
- 11:12Mm
- 11:13... I don't know how much Shift has that avenue,
- 11:17uh, 'cause it's... Shift's kind of got a double whammy, 'cause, like, for about
- 11:20three releases now, Laravel has really marked everything, like, completely
- 11:26optional. You know, they've, they've kind of touted it as, like, no breaking
- 11:29changes, and I think there's truth to that statement.
- 11:33Um, but it's a l- it's a little... From my perspective, it's a little bit dangerous.
- 11:37Um, the prime example is, is, like,
- 11:40let's say you just run Composer Upgrade, and, and this has been the problem, the
- 11:43challenge with Shift since the very beginning. A lot of people go in, they
- 11:46just run Composer Update. It works,
- 11:49-and they just keep- -Mm-hmm
- 11:50... going on, right? And you can do that, maybe you do that year after year, version
- 11:54-after version. -Mm.
- 11:55I think there were pivotal points in Laravel's history where the wheels fell
- 11:58off of that really, really hard.After like two versions.
- 12:02-Mm-hmm. -You know, way back in like 5.6, 5.7, 6.0,
- 12:05big, big changes.
- 12:07But they're not...
- 12:08That's not really so apparent anymore until you go to the docs, and this, this
- 12:13is kind of the last piece of evidence [laughs] other than people just saying,
- 12:17"Well, JMac, you're just trying to sell me, you know, a Shift. You're trying to
- 12:20sell me an upgrade."
- 12:22-Mm. -That's not really true. I mean, I, I
- 12:23genuinely just want you to be running the latest version, and we can kind of come
- 12:28back to why.
- 12:30But to stick with the point, like,
- 12:32let's say you wanted to add a new piece of middleware and you're coming from Laravel
- 12:3510, and you've only ever done composer update.
- 12:37-Mm-hmm. -Because if you go look at the upgrade
- 12:39guide, it kind of says, "Oh, all this other stuff's optional, just run composer
- 12:42update."
- 12:44Well, you're gonna have your old kernel file. Y-
- 12:46-if you go to the docs- -Mm
- 12:48... to register a piece of middleware or to disable CSRF, and you've never
- 12:53done any of those, quote unquote, "optional changes," like now you're
- 12:56digging around the docs trying to figure out what to do. You're in, you're in no
- 12:58-man's land. You, you're running- -Mm-hmm
- 13:00... Laravel 13, but you really have a Laravel, you know, 10, 11, or 12 app. It's
- 13:04just not the same.
- 13:06And I think if you work on an app every day, that creates a lot of drag.
- 13:11Um,
- 13:12so I think that's kind of one side of it, is that
- 13:16there hasn't been the strong need, quote unquote, "for Shift" in recent versions,
- 13:21because
- 13:22the upgrade guide just says, "Oh, it'd take you five minutes. All you gotta do is
- 13:25bump these three dependencies." And it's like-
- 13:27-Yeah -... true,
- 13:29but it's not the full story. Um, and it's kind of-
- 13:31-Yeah -... hard for developers to see that, that
- 13:33maybe have already been kind of doing that over the years anyway.
- 13:37Shift has like a 93%, like, user retention rate. Like, if you use Shift, you get its
- 13:43-value. Like, you understand why. -Yeah, yeah.
- 13:45But I think it's becoming very, very difficult for me to convince... Because of
- 13:48recent years of upgrades, it's very difficult for me to, like, go out and
- 13:52-convince or market this upgrade. -Mm.
- 13:55Not only because Laravel's saying it easy,
- 13:57but now because you can also jump in AI and say, "Hey, upgrade my app." And,
- 14:02you know, that may, that may or may not do more-
- 14:05-Yeah -... than the upgrade guide. You know, that
- 14:06really just depends on the model. It depends on h- how much context you give
- 14:11it. It depends on if you're using things like Boost or the internal upgrade tools
- 14:14or, or those things. Like,
- 14:16it... And as we know, it's AI, it's kind of luck of the draw that day on how
- 14:19-thorough it's actually- -Yeah
- 14:21-... gonna be. -Might have worked for one app-
- 14:23-Yeah -... it might not work for the next one.
- 14:24Yeah, you're just not gonna get the same results.
- 14:25Well, not in the same way at least. Yeah, yeah.
- 14:28So...
- 14:29-Yeah, and I think that's always- -You know, yeah
- 14:30... been the benefit. And, and, you know, it's, it's the conversation that, that
- 14:34you've had
- 14:35this year, especially with, you know, the proliferation of AI and with all of this,
- 14:40um, tooling, that, yes, you can just do a composer update, and yes, you can,
- 14:47um, use the, the tools that Laravel provides to do the upgrade, like they've
- 14:51-got the skill now, I think. -Yeah.
- 14:52But to your point, you know, that you just made,
- 14:56whether or not it is actually a Laravel 13 application, and that has always been a
- 15:00very strong,
- 15:02um, positioning of Laravel Shift, is that it's to make it look like you are always
- 15:06running that version. Which, you know, the docs, all of that kind of... Like, I,
- 15:10even now,
- 15:12yes, I go through the Shift, I use the AI, um, 'cause you provided some snippets-
- 15:17-Some prompts, yeah -... some, some prompts that you could use
- 15:20-to- -Yeah
- 15:20... to, like, coach the, the final cleanup, which was very useful. And then I
- 15:25go, and at least I know that when I look at the docs for the latest version, that,
- 15:29as you say, this is where you go and do this thing, and it's clear and it's
- 15:32consistent, which is not,
- 15:34not been the ca- In, in my head, I'm still running, you know, Laravel 10. But I go,
- 15:38"Oh, no, that's, that's not where this is anymore." So it's good to know that you
- 15:41can look at the docs and, and just go and do that process and just trust that it's
- 15:44-all- -Yeah
- 15:45... gonna behave itself. It makes it easier if you bring on someone newer into
- 15:48a team environment as well,
- 15:51that they've only used Laravel 12 or they've only used Laravel 13. It's like,
- 15:54"Here is our Laravel 13 application." There's no question about it.
- 15:57-Yeah. -Now they don't get lost trying to figure
- 15:59-out what's, what's where and- -Yeah, truly-
- 16:01-... all that kind of stuff -... Laravel 13. Like, sure, you can, you
- 16:04can be compatible, and I think that's what the upgrade guide, its, its goal and its
- 16:07-focus- -Yeah
- 16:08... is compatibility. And why, why the hell would Laravel go out and be like,
- 16:12"This is gonna be the most difficult upgrade ever?" Like, when-
- 16:15-Yeah. -Why would they say that? You know what I
- 16:17-mean? Like- -Yeah
- 16:18-... there's no incentive for them- -Yeah
- 16:19... to give you every tiny little thing that ever got changed over the year-
- 16:24-Mm-hmm -... of, of changes that they do. You know,
- 16:27they do an annual release, so they're, they're not gonna cover every single one.
- 16:30-And- -Yeah
- 16:30... that's not to say that Shift does either per se, but, but it definitely goes
- 16:34much deeper. And, and to the point, the goal is, is, is, is much different. I want
- 16:39it to look and feel like it's always been 13, 'cause that's what I would want of
- 16:43-the product, right? -Yeah. Yeah. Yep. And I've noticed that
- 16:47too. So like, what's... Like, in our most recent upgrades, um, okay, so I'll give
- 16:52two example, well, three. Number one was all the annotations that it put onto my
- 16:56models now. So like unguarded or guarded or like, uh, different things like that,
- 17:01that I normally would not have taken the time to do myself, which are now just-
- 17:06-Sure -... the default. So that's how, that's how
- 17:07it kind of how it works. And so it's like, great. That's not something I
- 17:10would've taken the time to do previously, something I knew that was an option now,
- 17:14but now it's just done, and it's, it's already handled. Another thing that was
- 17:17-interesting, which I would not- -Mm
- 17:18... have caught ever, is the config changes for cache prefix and, um-
- 17:24-Yeah -... I think cookie name and whatever,
- 17:27which sounds so innocuous. It's like, okay, well, it's no big deal, the defaults
- 17:31are changing, but literally it's changing from an underscore to a dash. Who's going
- 17:34to catch that, that that's an underscore to a dash?
- 17:36-It looks- -However- Yeah
- 17:37... it looks tiny, but it's actually huge impact. Yeah.
- 17:40It is. Yes. Yeah, and the reason why, and for those of you who might not know, the
- 17:46Redis prefix, for example, is a great ig- is a great one because it actually, if you
- 17:50follow it through, like, the three files, it's defined in database.php. It's also
- 17:54-defined in queue. Queue p- .php uses- -Mm-hmm
- 17:57... the database connection, and then horizon.php uses the queue connection,
- 18:01which uses the database connection. Like, good luck chasing that all the way
- 18:04through, but if you don't change that Redis prefix and you just let the defaults
- 18:08cascade, you're gonna lose any jobs that were not completed by the time you did the
- 18:12-upgrade. They're gone. -Yeah.
- 18:13That, that prefix is not going to match for Horizon.
- 18:16-And session change too, so- -They're just gonna be orphan jobs out
- 18:18-there -Yeah.
- 18:19Yep. You're gonna d- invalidate all your sessions. And so those are the sorts of
- 18:22things that get surfaced that are like, I would never have caught that in the
- 18:26upgrade guide, number one. And number two, even if I would have, it would not have
- 18:30said, "Hey, by the way, this has changed three times in the last five releases."
- 18:34-Yeah. -"You might wanna consider just adding this
- 18:36-as a default moving forward." Like- -Yeah
- 18:38... those are the sorts of things that could cause a lot of headache, that are
- 18:42surfaced for me in the top comment of the thing. Like, "Hey, these are changes
- 18:46you're really gonna need to be aware of," and then the rest of the comments in the
- 18:49shift are just like, "These are optional. Take a look if you want to, but they're
- 18:52not, they're not a big breaking change." The last piece of that, though, is it sort
- 18:56of
- 18:57m- melt, like melds together this idea of like, we're gonna do the automated
- 19:01portions of it, but if you want to have your agent do this, here's an example
- 19:06prompt for what you could push in if you just wanna use your own tokens to, to
- 19:10handle this portion. And so it's not necessarily one or the other, it's a, it's
- 19:14-a both/and, which I really appreciate. -Yeah. A- and I think that's going back to
- 19:18kind of that tailwind thing. I think that's my effort to integrate with AI. I
- 19:23-don't wanna make it Shift versus AI. -Yeah.
- 19:25I use AI, too. I'm a developer. Like, I, I use it actually now probably to write a
- 19:29majority of my code.
- 19:32Um, you know, so it's one of those things where I'm, I'm not trying to be like,
- 19:35"Shift is better than AI," or make it competitive. And honestly, I said that
- 19:38even before I knew about any of this, like Laravel 13, you know, its own little
- 19:43skill and all that kind of stuff. Like, I was saying that back in January, 'cause I
- 19:47just don't think that's the right path, you know? It, it's like trying to fight
- 19:50-the ocean- -Yeah
- 19:50... or something. Like, it's [chuckles] not gonna work.
- 19:51-You're not gonna... Yeah, exactly. -Um-
- 19:53-Yeah -... you know, so it's one of those things
- 19:55where, yeah, I've done a lot of features to make it more integrated with AI, which
- 20:01I think is also, again, kind of that tailwind approach. Like, we're not gonna
- 20:04-be able to fight this. Let's, you know- -Mm
- 20:07... let's... And we're not probably gonna outlast this, so let's kinda get on board
- 20:12with it, but give it our own little sprinkle-
- 20:15-Mm-hmm -... um, our own little flavor.
- 20:16-Mm-hmm. -And that's really what I've done with
- 20:17those AI prompts. They're much more contextual. They're in the comments. You
- 20:21know, these areas that I've always felt like, man, I wish I could automate that,
- 20:24but it just wouldn't be 100%, like, Shift standard reliable.
- 20:30But now I can give you the details like you're talking about, and then have this
- 20:33nice little dropdown prompt.
- 20:36If you're using AI, copy it. If not, the information's still there as a human. But,
- 20:40like, you copy this, you drop it in, and it's gonna do the right thing for you, and
- 20:44it's gonna take it that last mile locally with a better context. You know?
- 20:48-Yeah. -'Cause it's got access to your ENV files.
- 20:50You might not commit those, for example. Um, so it's just-
- 20:53-Right -... not something Shift can reliably do.
- 20:56Uh, so I'm glad for that integration. And then the other one, you know, just posted
- 21:01on Laravel News today, um, I put... I, I think I tweeted about it last week. But
- 21:06Matt Stauffer made this review skill,
- 21:08um, 'cause, you know, he's at Titan. He's using-
- 21:10-Mm-hmm -... Shift. He's got a subscription. He's
- 21:12using Shift for the dozens or hundreds of clients they manage to upgrade thing. He
- 21:17built this little dashboard and, you know, vibe coded.
- 21:20But then he built a skill where actually he can give it, you know, to Claude and
- 21:24say, "Okay, here's the PR number. Go, you know, use the GH commands and go review
- 21:28this thing," looking at the comments and treating-
- 21:30-That's cool -... Shift as a source.
- 21:33-Mm-hmm. -I, I kinda slept on that for a couple
- 21:35weeks, kinda like the podcast. [chuckles] And I finally met with him-
- 21:38-[laughs] -... I finally met with him, like, two or
- 21:40three weeks ago, and he showed this to me, and I was like,
- 21:43"Oh my God, I immediately built like four other skills now." So now there's a set of
- 21:47skills that are Shift kind of branded,
- 21:51um,
- 21:51to do everything from analyze your project to figure out what Shift should be run,
- 21:56to actually running it and then reviewing it as Stauffer, you know, his command
- 22:00kinda did.
- 22:02-But now there's also a refactor thing- -Mm
- 22:03... that ties into the workbench, which was always kind of a sleepy feature of
- 22:07Shift as well. But now you can do all that from the prompt. You don't even have to
- 22:11open your IDE. You really don't even have to open GitHub. Like,
- 22:14-you can- -Mm
- 22:15... you can trigger, run, and review, and merge a Shift
- 22:19all from your AI. Like,
- 22:21-I was upgrading it- -Didn't know that. That's pretty sick
- 22:23-... last week in, like, seven minutes. -Yeah.
- 22:24And I never even opened the IDE.
- 22:27-Yeah. -Oh my gosh.
- 22:28-It is- -That's wild
- 22:28... it is crazy how much everything has kind of just,
- 22:32um, what's the word? Like, consolidated on the agent,
- 22:38the CLI being the, the one place where you do everything.
- 22:41-Yeah. -Like, I, I very... Like, I've still got my
- 22:44Vim terminal, 'cause, you know, you'll pry that from my cold, dead hands. But
- 22:47-I've got everything. -[laughs]
- 22:48I can, I can connect to the Nightwatch MCP. I've, I built an MCP for, um, the,
- 22:54the application that's managing, like, the Laracon stuff, where we did all the CFPs.
- 22:58So I can go and look at, and look at and analyze the feedback from speaker talks
- 23:04and submissions. When they say, "Hey, I'd like some more feedback," I can go and,
- 23:08and collate everything that all of the,
- 23:12um, all of the different reviewers said, and present that back to the speaker to be
- 23:16like, "Hey, if you were submitting again at another event, or to Laracon AU next
- 23:19year, here's the kinds of things we're looking for." So it's, it's just
- 23:21interesting how in a very, very short space of time, this has all changed,
- 23:26where, you know, we had people using PhpStorm and VS Code and, and Vim and, and
- 23:31whatever else, and now it's like, no, the single interface to literally everything.
- 23:35We don't Google search anymore. We don't... Like, everything is just in our
- 23:38little Claude code CLI.
- 23:41-It's crazy. -Yeah.
- 23:43Yeah, it is.
- 23:44Um, so maybe that's, maybe that's a good spot to sort of wrap on the Laravel Shift
- 23:47sorta things. Um, we're, like I said, we're using it extensively right now,
- 23:51getting all of our stuff upgraded. You know, we have
- 23:5490-some repos in our org, and, you know, I know at least, like, 30 of them are ones
- 23:58we're gonna have to use Laravel Shift on. So, um, if I have anything to give
- 24:02feedback on, I will give it in the next little bit here. But-
- 24:05-Sure -... that being said-
- 24:06-Always welcome -... uh, the other item... Yeah.
- 24:08-Yeah -The other item that we're looking at is,
- 24:11uh, this Fast Laravel, which we talked about on the Laravel News podcast for
- 24:14quite some time. Uh, there was-- Uh, I feel like it was almost like a,
- 24:19um, a serial blog sort of idea, where it was like you were sort of figuring out new
- 24:23-things and then releasing- -Mm-hmm
- 24:25... things, and then you're like, "You know what? Why don't I just kind of...
- 24:27Instead of making people go read 5, 10, 12 blog posts or whatever, like, why don't I
- 24:31just put this together into a series and, and put this out there for the world?"
- 24:35And so,
- 24:36um, I'm curious, you know, you, you kind of gave us a little bit of a taste, right?
- 24:40Of like, here, here's kind of what it is, is we're talking about caching. Um-
- 24:44-Mm-hmm -... and that's a unique challenge with,
- 24:47with something like Laravel, because Laravel is a server-side language. And so
- 24:51the, you know, with some of these, uh, languages that are-- Or sorry, these
- 24:55frameworks that are using like Node and things like that, it seems like maybe the
- 24:58caching is a little bit easier, 'cause you don't have to invoke the server in order
- 25:01-to, um- -Yeah
- 25:02... you do, I guess. But it just seems easier for some reason when you're on that
- 25:06side. You got a SPA, you know, you're pulling it all down and you cache it, you
- 25:09know, cache the thing. But with, with PHP, it's not quite as easy. And so, um-
- 25:14-Yeah -... you know, this idea of let's use
- 25:16Cloudflare to cache stuff is cool, but there's a lot of gotchas along the way.
- 25:21And, and sort of in the blog posts that we had read, the sentiment that you
- 25:25expressed is there was two big blog posts that you looked at to sort of figure out
- 25:29how this works, and both of them were either like out of date or sort of
- 25:34insufficient. So, um, give us like a little bit of a,
- 25:39like insight into how that works. You know, I'm not asking you to... Obviously,
- 25:42you're not gonna be able to like teach us everything in a, you know, 30 minutes. But
- 25:45like, what's the sort of-- What were some of the challenges that you ran into with
- 25:49that, and what are some of the interesting solutions that you came across on your
- 25:52way?
- 25:54Yeah.
- 25:55Yeah, so Fast Laravel, fastlaravel.com, uh, it's the most recent course I've made
- 26:00kind of Laravel related. Uh, and it was, again, it was kind of another thing I'd
- 26:04slept on, you know. I feel like in the last 18 months, or at least probably six
- 26:08months ago,
- 26:10you know, 18 months prior to that, people were just really talking about Cloudflare.
- 26:13I host with Cloudflare, I do this with Cloudflare, you know, set up Cloudflare.
- 26:16It just seemed like it was getting kind of this background buzz of where people
- 26:21were, were hosting or serving, you know, their sites out of, um... Or at least, at
- 26:26least their DNS was being handled through it as kind of this proxy.
- 26:30Uh, and again, kind of being an OG web developer, I remember messing with page
- 26:34caching a long time ago, so I really wanted to like figure out, like
- 26:38can I make a Laravel application,
- 26:41you know, faster? You know, there was a big push to like serverless and Octane and
- 26:45-all these. -Mm-hmm.
- 26:45And of course you can, we can throw CPUs, we can increase requests per second and,
- 26:50you know, we can talk about all that. But like, you're never gonna beat
- 26:55a, a static HTML page served directly from your browser. I mean, this is how HTTP
- 27:01-works- -Mm-hmm
- 27:01... right? This is how it was built. It was built to be cached across networks
- 27:06locally, literally on your browser,
- 27:08to just be fed directly to you in a millisecond. So it just-
- 27:13-Mm-hmm -... anything else you ever wanna talk
- 27:15about, it just pales in comparison to just loading directly from disk,
- 27:20-right, on your local machine. -Yep.
- 27:22It cuts out all of the network layer, it cuts out all of the requests, the DNS, the
- 27:27routing. And then forget that, then it cuts out the fact that it's actually
- 27:31spinning up in your web server. It's, it's interpreting the PHP. It's loading-
- 27:36-Mm -... tens of thousands of lines of PHP code
- 27:39for Laravel just to boot,
- 27:41and then it spits out your view that's got nothing in it but static, you know, copy,
- 27:45-right? [chuckles] Like- -Yeah. Yep, yep
- 27:48-... it's just a little bit silly. -Exactly, yeah.
- 27:50Right? So the... So it's a, you know, it's a silly, you know... I'm making it silly,
- 27:53but the point is, is that I think even on a Laravel application,
- 27:57a percentage of most applications, especially in front of a login screen,
- 28:04are truly that. They're static for... I mean, look at laravel-shift.com, for
- 28:08example. I've got a product page, and yeah, that's fed from the database. It's
- 28:11fred, fed from product models, right? Product all. But like,
- 28:17I don't add products
- 28:18all the time. I mean, once a year, Laravel 13 shifts.
- 28:21-Mm-hmm. -Maybe I build a couple others during the
- 28:22year. But the point is, maybe once a quarter that page is actually changing. So
- 28:26yeah, it's dynamic, it's built with Laravel, it's pulling from a database,
- 28:30but its content is static.
- 28:32So that was kind of the genesis of like
- 28:35I know, again, in my OG web developer brain, that this page could be cached. I
- 28:39just kinda never messed with it, and it finally just got to this place where, like
- 28:43I had a little time to explore. Typically, you know, after Laracons is
- 28:47kind of my really slow season in the back half of the year. I'm not preparing for
- 28:50the new release. I'm not preparing to like give a talk necessarily. I'm, I've got
- 28:54some time.
- 28:55So I started messing with it last September, and I was just
- 29:00amazed at kind of the results. But to your point, I definitely found two or three
- 29:05gotchas, like right out of the box, and, and these are blog posts on Laravel News.
- 29:09-Mm. -Like you said, I tweeted about them at the
- 29:10time. I did little videos, um, in my livestreams.
- 29:14So just to kind of recap a couple of those, um,
- 29:17the first one is, you know, Laravel's a web framework,
- 29:20so out of the box
- 29:21it gives you state. Uh, it does so through cookies,
- 29:25um, cookies and sessions. So even though if you're not using or writing or doing
- 29:29anything with the session or these cookies, it's gonna send those back in the
- 29:32response right away, and you can see these as like out of the box. You'll see
- 29:35them as like Laravel_session, right? This cookie is just being used. Um,
- 29:42well, Cloudflare is built dynamically to look at the headers on the response, and
- 29:47even if you enable caching, it's going to see a cookie header and it's gonna bypass
- 29:52its internal cache. And you'll see this in the headers. You'll see-
- 29:55-Hmm. Interesting -... a CF status, cache status, and it says
- 29:58-bypass. Sometimes it'll say dynamic- -Mm
- 30:01... uh, again, if the, if, if the cookie or other headers are, exist. So even if
- 30:06you set a header saying, "Oh, this page never changes," and you're not using
- 30:10session or doing anything weird on your page,
- 30:13um, or anything dynamic-Uh, you're still gonna get this bypass in the cache.
- 30:19So that sent me down the road of like,
- 30:21okay, well, how do we turn this off? Well, it's not so easy, um, 'cause again, this
- 30:25is built into Laravel out of the box. Laravel expects-
- 30:28-Yeah -... to have state out of the box. It, it
- 30:31uses it in the request. It uses it, you know, session facade, of course. It
- 30:34encrypts and decrypts cookies on every request.
- 30:38So I found the simplest way to do that was basically just to add a separate
- 30:41middleware group. You can think of it much like the API middleware group, um, which
- 30:45really has nothing on it either. It has no state. That's the whole point.
- 30:49-Um, but you still- -Yeah, right
- 30:49... want a few small things to load, right? So again, this... I go deeper into
- 30:53it in the blog, but that was kind of the first, um, hurdle, was to kind of turn
- 30:57that off.
- 30:58Um, that puts you in a place where now if your pages are truly static,
- 31:04-you know, you can- -I was gonna ask if it's worth
- 31:06distinguishing between the idea of cache that lives, like,
- 31:13in the user's browser and also a cache that lives at Cloudflare.
- 31:18-Yeah. -Um, because some of the advantage that you
- 31:21get with using Cloudflare too, is that they are also doing their own cache layer
- 31:26-on your content that you're returning- -Yeah
- 31:28... um, at the edge, meaning like at a node that's closest to-
- 31:33-Mm-hmm -... the user that's getting the traffic
- 31:34served to them. So can you speak to that just a little bit and kind of help us
- 31:38understand the difference between... Or, I mean, there's really both of those things
- 31:42happening, but how exactly that works and what, what that, what that is?
- 31:46Yeah, I think that was kind of the second hurdle. Uh, so, so yeah, once you have the
- 31:50-static page and you're- -Okay
- 31:51... you're actually caching it,
- 31:53the second hurdle is, is, yeah, I think especially when we, in modern senses, and
- 31:58especially as Laravel developers, we hear cache and we're thinking like cache
- 32:01facade, right? We're not thinking we're caching a database query.
- 32:05-Mm-hmm. Yeah. -We're thinking of what you would consider
- 32:06as the application cache, right? Um, so this lives beyond that. What we're talking
- 32:11about here are, are two things, to your point. We're talking about a, now a
- 32:15network layer cache, and that's Cloudflare. So Cloudflare has its own
- 32:19little bucket, its cache bucket, that it's now going, if you tell it with headers
- 32:23and, and you have all the appropriate response headers in the HTTP,
- 32:28and you've enabled it on Cloudflare, which is a free service from them. I don't pay
- 32:31for anything for Cloudflare, and I've got all my sites cached to the tilt. But like,
- 32:37now they're going to cache it. And then you can even go further than that. You can
- 32:40actually go so far as to say the browser on the user's local machine to cache it as
- 32:46well. So you kinda create, in caching, what they call like this Russian doll
- 32:50technique,
- 32:51where like you have these little Russian dolls where like this outer layer's got a
- 32:54cache, and then you open it up and there's a little doll inside that, and then you
- 32:57open it up and there... And then you keep going all the way down, right? And
- 33:01you can do the same thing with your web responses. Um, we can cache them all the
- 33:06way down.
- 33:07Yeah, the, the Russian doll thing is, is interesting. I know that, uh, DHH when
- 33:11they, they were talking about like caching in the Rails ecosystem, they were big on
- 33:15the whole, like, don't cache the whole page 'cause you wanna cache like sections
- 33:19of it because, you know, this thing never changes, but,
- 33:22or, you know, the other part, or the, the whole of the page very-
- 33:25-Yeah -... rarely changes, but the inside is
- 33:27dynamic. You know, you're listing your products, so that stuff has to change
- 33:29quite frequently. And
- 33:32your products, no, but like there are bits of the page that will change.
- 33:35-Mm-hmm. -Like a blog. On, on my blog, for example,
- 33:38it doesn't change often, but when it does, if that blog index-
- 33:41-Sure -... is cached,
- 33:42you gotta bust the whole thing just to get-
- 33:44-Yeah -... the content to update-
- 33:45-Yeah -... so you can see the new post is up.
- 33:46So in the course, I explore ways to actually cache partials,
- 33:50partial pieces of the page as well. And of course,
- 33:52as, as Laravel and the community, we ha- we already have a lot of tools that kind
- 33:56of
- 33:57get us into this partial idea. Even on a Blade level, we can think of partials in
- 34:02the page, right, um, being included.
- 34:05Uh, but you know, we're also familiar with Livewire, we're familiar with Alpine,
- 34:08we're familiar with React, Vue, Inertia, all these things that are probably already
- 34:12breaking up the page in a way
- 34:14that either is already very, very cacheable or at least make components of
- 34:19it, um, cacheable or fragments of that HTML that's being returned cacheable.
- 34:24Um, so there's a lot of options. Again, I, I go deep into all that. Um, there's more
- 34:29blog posts, but
- 34:32the whole point is, is again,
- 34:34you're not gonna get anything, it's not just Laravel, you're not gonna get any web
- 34:38application any faster than caching, you know, at the edge, and the edge can be all
- 34:44the way up to and including the user's actual browser.
- 34:49But Cloudflare, to Jake's point a minute ago, Cloudflare-
- 34:52-Yeah -... you know, it's distributed across the
- 34:54entire world with nodes everywhere. So like if you go to laravel-shift.com and
- 34:59you inspect the headers, you'll see what's called a CF-Ray in the response,
- 35:04and typically you'll notice that these are,
- 35:07you know, geographically close to you. So when it does actually request,
- 35:13-it doesn't even- -Yeah
- 35:13... go so far as like to US West. It's going to Nashville-
- 35:19-Yeah -... which is only like, you know, 100
- 35:21miles away from me, you know, speed of light.
- 35:23-Yeah. -Right? So it's just even when it's-
- 35:26-Yeah -... not coming from the browser-
- 35:27-Yeah, that's right -... it's still coming back to me in things
- 35:29like 23 milliseconds. I'm seeing my page load.
- 35:33Yeah. Well, we've got, we've got, uh,
- 35:35three, I think, Cloudflare...
- 35:38-Last time I looked- -Melbourne, I think
- 35:39... we had three Cloudflare POPs in Australia. One of them is-
- 35:42-Mm-hmm. -Yeah, there's Melbourne, there's Sydney,
- 35:44there's Adelaide, and if it's in Adelaide-
- 35:46-Yeah -... I assume Brisbane and Perth have got
- 35:48one as well at this point. But like, to your point, yeah, it's, if it's not cached
- 35:53-in my browser, it's cached- -Sure
- 35:55... one millisecond away at the data center that's-
- 35:57-Yeah, I mean, if you- -... 12 and a half kilometers down the
- 35:59-road. -Yeah. I mean, eight months ago-
- 36:00-So it's- -... if you went to laravel-shift.com,
- 36:02you're, you're coming all the way to Virginia.
- 36:04You know what I mean?
- 36:05-So y- you in, in Australia- -Mm-hmm. Yeah
- 36:08-... are, are- -Yeah
- 36:09... you know, pinging probably 100 milliseconds just to come to Virginia.
- 36:13-Then it's running- -Yeah
- 36:15-... Laravel. Again, not necessarily slow. -Yeah.
- 36:17PHP is fast in my opinion,
- 36:19but, you know, tens of thousands of lines of code on my little shared server host
- 36:23-box, $5 box. Like it's, you know- -Mm-hmm. Yeah
- 36:27... you're probably seeing my page in a second and a half, and that's ridiculous
- 36:31in 2026.
- 36:33Yeah.
- 36:35-It's basically instant now, which is- -So, yeah
- 36:36-... which is great. -Well, the cool news, too, is like, you
- 36:39know, if that does... And so you- if you have something that hits, like, Hacker
- 36:41News front page, and you have everything cached at Cloudflare-
- 36:44-Yeah -... it doesn't even matter.
- 36:45-That's right. -Like, you're not gonna take your box down
- 36:47either, like, 'cause it's not even touching-
- 36:48-Yeah -... your box. It's, it's totally bypassed.
- 36:50It's never gonna hit-
- 36:51-Exactly -... my origin-
- 36:52-Yep, exactly -... unless I busted it.
- 36:53-Yeah. -Yeah.
- 36:54Right. So I was gonna say, too, like, well, so two things. Number one,
- 36:58uh, like, what sort of cache coverage, if we wanna use that sort of term, have you
- 37:03-been able to achieve on Laravel Shift? -Mm.
- 37:07And then secondly,
- 37:09do you feel like this is still, like, a proper strategy or something that's even
- 37:12achievable for something that is a heavily, like, changing content site? It's
- 37:16-a bit of a leading question- -Yeah
- 37:17... because I've heard from Eric Barnes that you've been working with him a lot-
- 37:21-Yeah -... on, like, his blog-
- 37:23-Yeah -... and getting that cached up. And so I'm
- 37:25curious just, like, if there's been any different strategies you've employed or
- 37:28whatever. So two questions, kind of just to flesh that out a little bit.
- 37:31Yeah, yeah. I'll actually throw in a, a third answer real quick, too. But, so the,
- 37:35the for- the format of the Fast Laravel course is actually me basically recreating
- 37:40from scratch,
- 37:42taking laravelshift.com from 6% cache when I first signed up at Cloudflare,
- 37:47straight Laravel out of the box, you know, tall stack kind of thing,
- 37:52uh, to 99% cached. And if I, if we screenshotted Cloudflare right now, you'd
- 37:57-probably see 98.6%. -My gosh.
- 37:59It's been steady that way for the last six months.
- 38:03So yeah, 90, 99% cache, basically. On the weekends, it's 100% cache, because
- 38:08basically that 1% are my users actually logging in to custom user dashboards. And
- 38:14-I could go- -Mm
- 38:15... that far if I wanted to, but, like,
- 38:1799%, let's, let's, let's have a little fun, right? Let's get $5 worth-
- 38:21-Yeah -... out of that box.
- 38:22-For what reason? Yeah. -Um.
- 38:24So first question, yeah, 99%. Uh,
- 38:28is that achievable by every kind of site? No. Some more than others. I think some
- 38:32could be 100%, easy. Um,
- 38:36-but the point is 99%- -Mm
- 38:37... of your traffic, I mean, Laravel Shift is not an unused site. I mean, I think I
- 38:41get 100,000
- 38:43requests maybe every couple days, every 48 hours, I think, just kind of looking off
- 38:48the charts. So I mean, it's not,
- 38:50it's not a huge site, but it's not a small one either.
- 38:54Um,
- 38:55Laravel News, though, I wanna do more case studies-
- 38:57-Yeah -... is kind of to your, your second
- 38:59leading question.
- 39:00And so over the last kind of month or two, you know, when we have time, Eric and I
- 39:04have met and increased his caching on Cloudflare.
- 39:07Um, I think he started around 17 or 18%. In fairness, he was already doing some
- 39:13pretty heavy image caching and, and video caching based on, of course, his, his news
- 39:18kind of content.
- 39:20Uh, but none of his page was, pages were actually-
- 39:22-Mm-hmm -... being cached. So this, it was a really
- 39:24fun case study. I think he's got a lot of video content he wants to release. I'm
- 39:27gonna do, of course, a, a deeper blog post.
- 39:29But I think right now he just, he's caching the homepage and the article page
- 39:33for the last few weeks. Today, he just deployed Decat, caching his blog,
- 39:38um, links and, um,
- 39:41or his archive page, I think.
- 39:44I fully expect he'll hit
- 39:46-70 to 80%- -Mm. Okay
- 39:48... after this, um, in the next few days. And again, we could keep going if we
- 39:52-wanted, because he has no user login- -Yeah
- 39:55... on the front side. But what he does have is complexity in his-
- 39:58-Mm-hmm -... scheduling, right?
- 39:59-Right, right. -He releases blog posts-
- 40:01-Yep -... every couple hours-
- 40:02-Yeah -... or when he wants. So we did have to
- 40:04build in some things, some jobs, some events. And again, Laravel gives you all
- 40:08these hooks. Oh, hey, some, you know, blog article got updated, you know, eloquent
- 40:13event fire. Okay, clear cache for its page, its slug page. It's all achievable.
- 40:19-Mm-hmm. -Um-
- 40:19-Mm-hmm -... you know, so that's been really,
- 40:22really fun.
- 40:23Yeah. Um, yeah, that... I, I spoke to you about this just before we, we started
- 40:27recording, was, you know, the Laracon website has just went live and, you know,
- 40:32the speakers are not gonna change now. They're, they're live. That's, that's the
- 40:35list of speakers. Um,
- 40:37all of the content, the details is, is kind of set in stone. So to be able to
- 40:41cache that whole, whole public-facing site would be ideal. The issue that I ran into
- 40:47-[chuckles] was- -Mm
- 40:48... I wanted to go to sleep at a normal time at, on Sunday night,
- 40:52and for the, the, that, the website to just update itself at midnight on the 1st
- 40:56of June.
- 40:57-And- -Yeah
- 40:58... th- but when the page is cached, there's no way, like,
- 41:01it's, it's finding... 'Cause, you know, when you update an article or I update a
- 41:05speaker bio or something, you can fire the event, you can trigger the cache update,
- 41:09-you know, clear the- -Yeah
- 41:10... cache on the, the speaker list, clear the cache on that speaker. Perfect. But,
- 41:15but when it's, like, a scheduled thing that you want to happen in the future,
- 41:18you know, it's a, it's a different thing. You've gotta,
- 41:21you've gotta go and figure out what, what will publish.
- 41:23-Yeah. -And that might change in different places.
- 41:25For, for me, it's quite, quite simple. But you've gotta go, "Okay,
- 41:28-every minute with your-" -Yeah
- 41:29... "scheduled task, does anything need to be busted? Does everything, anything need
- 41:32to be busted?" And then go and fire the, the cache clear.
- 41:36That's one of the questions in Fast Laravel I, I, I kind of present right
- 41:39away. Like, if you're gonna get into caching, you, you have to immediately kind
- 41:43of ask yourself the question, like, are you comfortable serving stale content,
- 41:50right? And if, if you're not comfortable with that at all, then you probably can't
- 41:55really cache the page. Even if you technically could cache the page, like
- 41:59from a business or a personal, you know, standpoint, you just, you have to kind of
- 42:03-say no- -Mm
- 42:03... or you have to set a TTL, or maybe you can't do browser caching, 'cause, you
- 42:07know, again, the farther away the cache is from you, the harder it is to control,
- 42:11right? I can't reach in and clear out Jake's, you know, bla- browser cache,
- 42:16like, and I don't need him calling me. I don't need my users calling me at 2:00
- 42:19-a.m.- -Yeah
- 42:19... saying, "Oh, I'm seeing yesterday's page."
- 42:22Um, so there's some things to consider there.
- 42:25-Yeah. -But you-
- 42:25-Yeah -... you do have a good point. Like, you
- 42:27wanna make sure... There's probably some, some area for me to cover there, and I
- 42:31know JT, um, guy I've been kind of pairing with, JT Smith,
- 42:36uh, you know, he kind of helped with the course, uh, you know, content and, and
- 42:40kind of researching. He built some packages around it.
- 42:44Um,
- 42:45you know, I wonder if there's something in there where-You know, you can,
- 42:50you can set a schedule or something. You can, you can pre-enter an artisan command
- 42:56that, like, is, "Okay, run this command at this time and it..." But to your point,
- 43:01like at the end of the day, it's...
- 43:02-Yeah, yeah, yeah. -Even if it's like a delayed queue job,
- 43:04maybe. You know, if you set a future date on something, it's like-
- 43:07-Yeah -... just go and queue this thing to
- 43:08-trigger the- -There's definitely ways
- 43:10... the cache bust at that day and time, so. I mean, now that everything's...
- 43:13Yeah, there's probably... Y- there's always, you know, in, in anything that we
- 43:17do, there's more than one way to, to achieve an outcome. And I think, like now,
- 43:21like I said, everything's static. It's all set.
- 43:24All the speakers are not changing. There's none of the content's gonna change. We
- 43:27might, you know, when, when tickets sell out or we move through our-
- 43:31-Sure -... allocations, we might change those
- 43:32pages. But for the most part, we could probably just go and, like, blanket cache
- 43:36-everything- -Yeah
- 43:36-... and, and leave it. -You do have-
- 43:37-Leave it at that -... it is, it is a layer of complexity in
- 43:40the, in the, you know, in the joke, you know, the age-old joke, uh, you know,
- 43:45cache invalidation is hard, right? Like,
- 43:48you do have to remember, "Oh yeah, cache this page." [laughs] You know, when you're
- 43:51sitting... If you go down this road, like when you're sitting there-
- 43:53-Yeah, that's right -... refreshing a thousand times-
- 43:54-Why is- -... you're like-
- 43:55-Yeah -... "Why the hell am I not seeing-"
- 43:56Yeah. Refreshing. Why is nothing changing?
- 43:58-"... when I think it's deployed?" -Yeah.
- 43:59-You know? Oh yeah, it's cached- -Yeah
- 44:01... in my browser. Oh yeah, it's cached in Cloudflare.
- 44:04Yeah.
- 44:05-That's right. -The good news is on like Cloudflare too,
- 44:07-is- -Yeah
- 44:08... yeah, y- they have like an emergency bypass mode in Cloudflare though, too. You
- 44:11-know what I mean? So you can say like- -Oh, yeah, they-
- 44:13... "No, I'm in dev mode." I don't even know if that's what they call it, but it's
- 44:15-something like that- -Yeah
- 44:16... where you're like, "I'm actually trying to see the real thing right now."
- 44:19-Mm-hmm. -"Please stop caching."
- 44:20-Yeah. -And now you locally at least are gonna say
- 44:22like, "Hard refresh, like clear out my browser cache." But then Cloudflare's
- 44:26-gonna be like, "Okay, I'm-" -Yeah
- 44:26"... serving you whatever version is actually currently live right now." So it
- 44:30just kind of bypasses its own stuff. Um, so yeah.
- 44:34As with anything, it's, yeah, it's just something to put into your workflow,
- 44:37right? You know, you just have to get used to it, so.
- 44:40-Yeah. -The, the area-
- 44:43It does also make it easy to clear or, or to... Yeah, it does, it also makes it very
- 44:47easy to bust the cache of specific pages through the UI, which is what I ended up
- 44:51doing for my blog, was just like, go and bust the blog list, go and bust that
- 44:56article page, and then, and then it's done. So it'd just be nice to, to automate
- 45:01-the process- -Yeah
- 45:01... which is, you know, not hard. It's just, you know, "Claude, go and, [laughs]
- 45:05go and make sure that when this, this content changes, you fire the- [laughs]
- 45:08-Yeah -... the cache bust command."
- 45:09Yeah, I think, I think there's an opportunity for that package to, to maybe
- 45:12explore that a little bit. But, um,
- 45:15yeah.
- 45:16-I think- -Mm
- 45:17... I think the area that's interesting for me, and I just saw a PR into Laravel
- 45:21on this, uh, from,
- 45:23from Devin, one of the core, the core cloud team members, um,
- 45:27uh, uh, who I met at Laracon AU last year,
- 45:30uh, at the nice dinner that, that Dorinda took us out to, the steak, steak dinner.
- 45:35Um,
- 45:36but yeah, he, he opened one up kind of, uh, you know, slightly inspired by Fast
- 45:40Laravel to, to bring some of the techniques that I have in the course first
- 45:45party into the framework. So, for example,
- 45:48um, this route static method. So you could just say route stat, kind of like you say
- 45:51route view or route get. You could say route static,
- 45:55and this would dis-
- 45:58it's an effort to disable some of the things that make it stateless, and
- 46:01therefore allow it to be cached. Laravel's very interested in this for kind of
- 46:06selfish reasons, because they are really tackling with cloud. You know, you can see
- 46:11they're heading this direction where hibernate, and they're trying to spin you
- 46:15up, and, you know, these sub, sub-second, you know, 100 millisecond kind of thing.
- 46:21So if you pair the best of both of these worlds, right, uh, you could start to
- 46:24think that,
- 46:26okay, if Laravel actually did kind of adopt or, or make this strategy kind of
- 46:32modern again, right, gave it its own little spice of, of caching,
- 46:37and Laravel Cloud gives you edge caching built in, 'cause they sit on top
- 46:40Cloudflare, all this can be built in.
- 46:43But then even when you do
- 46:46go through the cache or need to do something actually that spins and boots up
- 46:49Laravel,
- 46:50you can come out of hibernation mode in 50 milliseconds, right?
- 46:56You can see how that starts to get really, really interesting and, and you can see
- 47:00how it's this wonderful mix of new and old strategies that kind of forge the future
- 47:06a bit. So I'm really, really interested to see where that goes and, and in a way,
- 47:12um,
- 47:14it's fun for me to, to see. You know, I kind of stumbled into this area that I
- 47:19thought was just kind of this old technique that I was seeing how it worked
- 47:22in the modern world,
- 47:24but we're kind of seeing even actually Laravel
- 47:27Cloud specifically kind of give a little more weight to edge caching, 'cause it
- 47:32relates to their hibernation. If they can-
- 47:35-Yeah -... if they can cache something for
- 47:36longer, then you can hibernate for longer. If you can hibernate for longer-
- 47:39-Yeah -... then you're lower server cost.
- 47:41-Yeah. -If we have to spin you up and we can do
- 47:43-that faster- -Yeah
- 47:44... then it's not a big toll that you're paying, right, to, to cache more-
- 47:49-Right -... and stay hibernated longer.
- 47:52So.
- 47:54Yeah. I definitely think a lot of the stuff that they've done recently, um, th-
- 47:59I was just talking to some people about this before we recorded, and the pricing
- 48:03is not
- 48:05ideal
- 48:06for any of their stuff. I mean, the, the CP- uh, the, the compute is like, you
- 48:11know, you're capped at this amount per month. But if you look at,
- 48:14um, like the managed queues that they just released, it's like $0.000000178
- 48:21-per, you know, per second or something. -Yeah.
- 48:23It's like, what does that mean? But,
- 48:27-um, where, where other platforms of- -Mm-hmm
- 48:30... a similar pedigree,
- 48:32they, you know, they didn't have cost controllers, they didn't have this, they
- 48:35didn't have that. You know, you hear, I mean, probably not recently, but you've
- 48:38heard all these horror stories of the past. It's like, "I was on Hacking News
- 48:41-and I woke up- -Yeah
- 48:41... and I've got a $30,000 bill for my, my thing."
- 48:44-Yeah. -The, the, the concern I think that
- 48:48we, we heard when Cloud was announced and when it was launched and all of the stuff
- 48:53around the Excel funding, that is gonna lead to, you know, the enshittification
- 48:58and, and whatever else of Laravel, I don't think that hasLike I, I didn't
- 49:05-think it was gonna be an issue. -Yeah.
- 49:05But I don't think we've seen it come to fruition. Everything that they're doing at
- 49:09the moment,
- 49:10you know, as you said, they're trying to get your, your servers to spin down as
- 49:14often as possible, spin up as quick as possible,
- 49:17and, and run for as little as possible. Like, all of this stuff is cost
- 49:21optimization, it's cost minimization. If we can, if we can cache it at the edge,
- 49:27you know, whether it's the Cloudflare cache that they run or it's your own stuff
- 49:32that's on top, like all of these things, whilst the pricing is
- 49:37not human-friendly to reason about, like I understand why it is, because they're
- 49:41-char- they're on charging- -Mm-hmm
- 49:43... what they're billed by their providers. Makes sense.
- 49:46But
- 49:47the fact that those numbers are so tiny, and that they're doing so much work in
- 49:51public and, and into the products to make sure that you are actually consuming as
- 49:56little of those resources as possible,
- 49:59um, is, is really good to see,
- 50:01you know, two and a half years down the road-
- 50:03-Yeah -... from when Cloud was announced, so.
- 50:05It's nice because there's aligned incentives there, right? Like, that's not
- 50:08always the case, where, you know, sometimes you have misaligned incentives,
- 50:12and like it's actually to the benefit of the provider to make the things run for
- 50:15-longer or whatever. -Right.
- 50:16Like, they wanna have more billable minutes or whatever, right? And for them,
- 50:19it's like because they own the VPS stuff, that, well is a V- yeah, because they own,
- 50:23like, some of the hardware. Own, quote unquote, right?
- 50:26-It's- -Mm
- 50:27... to their benefit to be able to say, "No, let's let it hibernate. Like, charge
- 50:31you less, but then we don't, you know, they don't have to pay as much to the
- 50:33-provider either." So anyway, um- -That's right
- 50:34... I think it's, uh, yeah, it's interesting. It's a... And they, they've
- 50:37-been working- -It is interesting
- 50:38... really hard on it, obviously. Doing a great job. Yep. Yep, yep.
- 50:41Yeah. They, I mean, they get charged less, so they charge you less, but it also
- 50:45means they make less because they're not, you know. So all of these factors that I'm
- 50:49-sure that their- -Yeah
- 50:50... finance people figure out. But net result is that the people using the
- 50:55platforms are getting something that is, you know, as has always been,
- 51:00from, from my perspective, you know, at the heart of everything Taylor does, it's
- 51:03to the developer experience. And so far,
- 51:07-that has- -Mm
- 51:07-... that has held true. You know? -Yeah. Yeah. I think it, I think it's
- 51:11really interesting. Um, and I, I'm glad to see them kind of going down that road,
- 51:15not just from the edge caching, but, but the hibernation. I, I think that was
- 51:19always an appeal,
- 51:21you know, even when they first launched, and it, it might not have been, like you
- 51:25said, exactly what was expected at first, but I think they're, you know, they're
- 51:29filling those gaps as quickly as they can. Um, so it's cool to kinda see it come
- 51:34-together- -Yeah
- 51:35... uh,
- 51:36quickly. So anyway.
- 51:39-Jason, where can, uh, where can people- -Oh
- 51:42-... find the course? -All right.
- 51:43Uh, if they're looking to purchase it, where's the best place for them to go, and
- 51:47what's the cost? Uh, give me the rundown.
- 51:49Yeah. FastLaravel.com. Uh,
- 51:52I, I sh- I mean, I think there was an early access price for a very short amount
- 51:58of time. I wanna say it's, I wanna say, like, it's 199
- 52:02right now.
- 52:03Um, but kinda to the point we were just talking about, like if you end up caching
- 52:0899% of your site, and everything it uses is free Cloudflare services, so it's not
- 52:12like you buy this course, then you gotta go buy, like, a $20 a month-
- 52:15-Mm-hmm -...
- 52:16Cloud, Cloudflare or even Laravel Cloud anything.
- 52:19-Um- -Right. Right
- 52:20... everything that is in this course
- 52:23is designed to show you how to spend less on server costs, which are basically
- 52:27infinite. So, like-
- 52:29-Yeah -... yeah, there's, there's a cost to the
- 52:31course, but, uh, I would really believe that you would, you would make that back,
- 52:36uh, over time. [laughs] Uh, not even a very long amount of time.
- 52:40-Um- -Agreed
- 52:40... you know, kinda going back to the Laravel news thing-
- 52:42-Mm -... like, that was kind of the part of the
- 52:44case study and why I wanted to work with Eric, is 'cause I know he moved to cloud,
- 52:48and I know they're working on Hibernate, and I wanna prove this out. I wanna prove
- 52:51-if we can cache him 70%- -Yeah
- 52:53... can we also, like,
- 52:55kinda just silly math, like can we reduce his server cost by 70%? You know what I
- 53:00-mean? -Right. Yep.
- 53:00Like,
- 53:01-I think this is a real- -Yeah
- 53:02-... thing, right? -Yeah.
- 53:02If you're Jeffrey Way and you're on the $200 a month box,
- 53:07but you, we go and you cache your site, can we get you down to, you know, the $60
- 53:12a month box? I think we probably could. It's a comfort thing, but I think we
- 53:16-could. Um- -Mm. Yeah. Yeah
- 53:18-... so to the point, then, then it- -Yeah
- 53:20... just paid for the course.
- 53:21Um,
- 53:22so yeah, FastLaravel.com. Otherwise, of course, laravel-shift.com. I'll be at
- 53:26Laracon US. Uh,
- 53:29I live stream every Wednesday, mostly every Wednesday. Uh, you know, the five
- 53:33people that are in there, I appreciate you. And, uh-
- 53:36-[laughs] -... of course, I appreciate you guys. But
- 53:38yeah, I think,
- 53:40yeah, I think if Shift doesn't work out, I'll, you know, I'll probably just open up
- 53:43-a tree-cutting service and, uh- -There you go
- 53:46... maybe a woodworking shop and-
- 53:48-Make some tables. Yep -... you know, just try to stay active.
- 53:50-Yeah. -Mm-hmm.
- 53:51It's...
- 53:53-[laughs] -I've, I've got a pepper tree growing over
- 53:55-the fence that I need cut down- -On the plane
- 53:57... if you wanna... Might be a bit hard to-
- 53:59-It'll be the most expensive tree- -... bring your equipment [laughs]
- 54:00... they've ever cut down in your life.
- 54:03-Um- -I don't know how TSA handles chainsaws.
- 54:05-Absolutely. -Checked luggage or whatever, you know. I
- 54:07-don't know how that typically works, so. -Well, I'll ship it. It'll be there in two
- 54:10-weeks. -Yeah, we'll find out, I guess.
- 54:11So.
- 54:12-But yeah, it, uh- -Amazing
- 54:13-... it's good. -Amazing.
- 54:15-There we go. -Well-
- 54:16Dorinda, what episode are we on, this one?
- 54:18-194. -194. Everybody, thanks so much for hanging
- 54:22out with us on episode 194. You can find show notes for this episode at
- 54:25northmeetsouth.audio/194. Hit us up on X if you have any questions at
- 54:30michaelDorinda, at jacobBennett, at goneDark is JMax handle, uh, there as
- 54:35well. Uh, I mean, is there any other places where the people need to get in
- 54:38touch with you? You already mentioned them, so we'll just, we'll leave it at
- 54:40-that. -You can email me.
- 54:41-But, uh, if you- -I'm old.
- 54:42If you liked the-
- 54:43-[laughs] -... email you. Okay. That works, too. Is,
- 54:46what is the... I'm trying to remember the name of the domain now. What is, uh,
- 54:50what's the email that they can email you at?
- 54:52Well, you can, you can, you can email, you know, laravel-shift, right?
- 54:56-support@laravel-shift.com. -I gotcha.
- 54:58-It's me. It's always- -Okay. There we go
- 55:00-... it's always me. -support@laravel-shift.
- 55:00It is funny when people send something there-
- 55:02-It's Jason -... and they're like, "Hey, hey, Shift
- 55:03team. Hey. Oh, you're..." And it's, like, always me.
- 55:06-[laughs] -It's always me, forever.
- 55:08Yeah. "Hey, team."
- 55:09-Yeah. -That's funny.
- 55:10-It's kind of flattering, right? -Um,
- 55:12yeah. Right. They, like, they think it's a whole organization behind this one
- 55:15-product. It's just- -Mm-hmm
- 55:16... the guy, the one guy, the Laravel garbage man.
- 55:18-It's me. -Yeah.
- 55:19-The garbage man. -So anyway, Jason, thanks so much f- thanks
- 55:22so much for, uh, coming on the show, though. Looking forward to hanging out
- 55:24with you at Laracon. Um, might be grabbing the, uh, same hotel you're gonna be, so
- 55:29-we'll see. We're gonna see- -Oh, yeah
- 55:30-... if we can line that up, but, um- -I'm at The Moxy, yeah
- 55:32... still gotta reserve hotels, so The Moxy. Yeah, exactly. So look forward to
- 55:36-seeing you in Boston. -All right. Well, thanks very much. And,
- 55:39uh, if I don't speak to you beforehand, I'll see you in Boston.
- 55:41We'll see you guys.
- 55:42[outro music]