Latest / The Laravel Podcast / Laravel is a Multilingual Framework, with Taylor Otwell
Transcript
- 0:00The Laravel Podcast is brought to you by Tighten,
- 0:03your friendly neighborhood Laravel experts.
- 0:05Check us out at tighten.com
- 0:08and also by other sponsors you will hear about later in the episode.
- 0:21All right, welcome back to Laravel Podcast season seven.
- 0:23I'm your host, Matt Stauffer, CEO of Tighten.
- 0:26And in this season, I'm joined every episode by a member of the Laravel team.
- 0:29And today we're getting Taylor Otwell again, second time in I don't know, with two episodes, three episodes, which is awesome.
- 0:35Taylor, I just said this beforehand, but thank you so much for hanging out so soon after the most recent episode, but also so soon after Laracon.
- 0:42I feel like you must still just be exhausted.
- 0:44Yeah, thanks for having me.
- 0:46Yeah, I it was definitely busy, but I feel good, you know, like being back in the office and back in the swing of things.
- 0:52Yeah.
- 0:52It's always high energy coming off of Laracon.
- 0:54Yeah, and that's the first thing I wanted to to lead with was just to kind of check in with you.
- 0:57Like, you know, you spend and you did mention, you know, you have m more and more space to allow other people in the organization to do kind of structured organizational things for
- 1:06Laracon.
- 1:07But there's still it's still your most on week of the year, right?
- 1:11So how did you feel now that you're able to step away from it?
- 1:14How did you feel about Laracon?
- 1:15What you feel about the venue and the vibes and the talks?
- 1:18Like just give us your thoughts about coming out of it.
- 1:20Yeah, I thought it was really great.
- 1:22I told a lot of people that this Laracon was probably the most hands off Laracon as far as like me and the logistical planning of the event.
- 1:32Yeah.
- 1:32You know, like historically, I would say other than this year and last year, I picked the venue, I picked the food, I did all the A V, like negotiation, I did the uplighting and
- 1:45the decor and the banners and like everything.
- 1:48Yeah.
- 1:48And this year I basically did nothing.
- 1:51Yeah.
- 1:51Other than like assist with generally speaker selection.
- 1:57But uh even then the team had like sort of like recommendations of like we like this pitch or we think this is interesting.
- 2:03So it was already kind of a curated list by the time it got to me.
- 2:05Yeah.
- 2:07And then just showing up and being a speaker and sort of being, you know, like a representative of the as the creator of Laravel.
- 2:13But I thought, you know, that being said, it still felt like
- 2:18Laracon.
- 2:18You know, it felt like Laracon has always been in terms of the vibe and the setup and the community feel of it all and sort of like the energy of it felt very typical, which is
- 2:30great because you know, that means there's a team in place here that can carry on the spirit of Laracon without me needing to manage every detail, which is awesome.
- 2:39Yeah, I mean as a founder, it's such a great feeling to feel like you can step back and not not be like everything's flowing away and not doing what I want, but it's like, no, I
- 2:47step back and it continues in the way my vision would want to see it go.
- 2:50And of course you can also come in and course correct if you feel like you need to, right?
- 2:53Yeah.
- 2:53Yeah.
- 2:54That's all
- 2:54didn't really need to.
- 2:55Thankfully it was I thought it was an awesome event and yeah, we had a lot of really great feedback and I'm sure we'll learn some things for next year and just keep improving it.
- 3:03Yeah.
- 3:04Personal question.
- 3:04I know that Jeffrey only comes every once in a while because these events could be super overwhelming.
- 3:08And I found this year was so good, but it also was the most exhausting because I'm just like speaking, sponsoring, trying to talk to all my old friends, trying to make a bunch of
- 3:18new friends.
- 3:19And I think I was more worn out from Laracon this year than I ever have been in my life.
- 3:23Are you able to get both the level of interaction you want with people and the ability to protect yourself?
- 3:30Or are you having to make
- 3:32sacrifices either in your own energy or in your ability to actually be fully present.
- 3:36You know, it definitely is a little bit it can be a socially overstimulating week, especially if you're kind of like an introvert like I am.
- 3:44But at the same time, I find it's a nice balance to like the relative like quietness of my daily life with you know, here in Arkansas, where like I'm I'm I'm not at tech meetups
- 3:55every week or at like startup events, you know, on the weekends and there's not a lot of kind of stuff going on in that space.
- 4:01So even though it is like socially overwhelming a little bit, yeah.
- 4:06I find it manageable just because it's such a contrast to my usual life that it's almost like it it's fun, you know?
- 4:12Yeah.
- 4:13But once I get home I am like kind of sitting in quiet for a little bit.
- 4:16Yes, like I don't need to talk to anybody else for a couple weeks though.
- 4:20great.
- 4:20Everybody's asking, and I'm pretty darn sure that there's no answer here, but I gotta ask anybody.
- 4:25Everyone's to know where next year is.
- 4:26Is that even
- 4:28I don't even know.
- 4:29You know, if I even had hints to give, I would give them, but I really don't.
- 4:32I would not say it has really formally begun as a process.
- 4:36We've kind of tossed out casually city ideas mainly that we're hearing, you know, from the everyone at the event.
- 4:41Yeah.
- 4:42Usually it's where they live.
- 4:43Yes, I was gonna say I'm gonna throw Atlanta back in the ring because COVID stole it from us, you know, but yeah, that may
- 4:49I mean cities I've heard is like, you know, Atlanta, New York, Vegas, Seattle, San Diego, New Orleans.
- 4:57You know, I've heard all kinds of cities, but we'll start digging into it.
- 5:00A lot of it actually is like venue driven more than like necessarily picking a city out ahead of time.
- 5:08Like we'll pick a few cities and we'll maybe like make a list of a couple venues in each of those cities.
- 5:14Yeah.
- 5:15And sometimes it's just like what venue are we kind of feel like is the overall winner?
- 5:18And that almost plays into determining the city, more so than like deciding a city and like we must be in the city.
- 5:25Yeah.
- 5:26Yeah.
- 5:27That makes sense, especially for something that's so intentional and curated with the vibe, right?
- 5:33Like there are some conferences where they're like, we pick the hotel that is attached to the large airport in the city.
- 5:38And like so that that is purely around transportation and access versus we want to curate an experience for you.
- 5:46Yeah.
- 5:46Okay.
- 5:47So there's a ton of announcements.
- 5:49There's no way we have time to go through all of them.
- 5:51And honestly, for I I know that, you know, I mentioned before we talked that
- 5:55Before we start recording, that some people who's on the podcast are up on everything.
- 5:58Some people who's on the podcast don't watch any of the videos of the conferences.
- 6:01So all of y'all should go watch plenty of the talks, but especially Taylors, because there's a lot of really great announcements related to the world and the ecosystem.
- 6:09But there are some kind of announcements that you made I want us to talk about a little bit.
- 6:13So Laravel itself, there's a couple things that I feel like were just super useful for those of us who use the framework.
- 6:20Like I'm very excited about, I'm absurdly excited about the head thing.
- 6:24I told you this, I'm just like I know it's so small, but it's like my favorite thing ever 'cause the number of times I've built stupid little systems for passing in metadata,
- 6:32passing in the title, the page title, I'm like, brilliant, brilliant, wonderful.
- 6:36Yeah.
- 6:37I I think I even said on stage, and not to put down Ben's work on the open source team on this, but like when I first heard about the idea, I was like, Yeah, man, we're really
- 6:45running out of ideas.
- 6:46So we're like this is kinda yeah, we're kinda like scraping the bottom of the barrel for ideas here.
- 6:52But once I saw it, I was like, Wow, this is actually a really great idea and I'm surprised we haven't done this sooner, you know.
- 6:59Yeah.
- 7:00Yeah.
- 7:01No, and it's fun because like there have been so many times where we're like, is there anything more to build?
- 7:05Right?
- 7:05Is there anything more to add?
- 7:06Are we feature complete?
- 7:07And the answer keeps being like nope.
- 7:09And obviously AI makes that nope a lot easier to give, but it's so fun to see something.
- 7:12It's like this has been there since the beginning of the internet, and we're still now figuring out like the ideal, you know, API for working with it.
- 7:20Yep, totally.
- 7:21So there's some other things that I think are larger.
- 7:24And, you know, one of the things you often have said on the the podcast is having Excel's investment, growing the team bigger has allowed you to do things that you couldn't before.
- 7:33And I we're often thinking about cloud.
- 7:34But I'm looking at even things like the LSP, and I feel like the ability to say, like, we're building a whole language system for Laravel reflects a certain level of like
- 7:47We can just throw full time developers.
- 7:48I mean, I don't know.
- 7:49Maybe E AI changes this, but it feels like that's a huge undertaking.
- 7:52Is it not?
- 7:53No, yeah, it is definitely a complicated project.
- 7:55And we hired a developer that was working on some VS Code stuff, I believe, or maybe even tinkering with an LSP and basically put him on that project full time.
- 8:03Nice.
- 8:05And it's sort of been attempted before by other community members, but never with sort of like full time attention from us.
- 8:11So yeah, great thing to get out there, you know, and we'll see how long we're still using editors, I guess.
- 8:15But nevertheless, like it it even plugs into like coding agents and stuff to feed them, you know.
- 8:21context about the project and valid methods and views and things like that.
- 8:25So it does have relevance even outside of like an IDE or an editor.
- 8:29Okay.
- 8:30But yeah, definitely a complicated project.
- 8:32Yeah, and I I know many people think like the best way to give IAI's structure is you know, okay, rules and and context.
- 8:41And other people think the best way to do it is to have really strict static typing and PHP stand on those.
- 8:46And I've historically just not really enjoyed working with code that is super, super strict and statically typed and statically checked and everything like that.
- 8:53But if it is just we're using the LSP to give agents
- 8:57greater understanding of what they're working with.
- 8:59I'm like, that's my type of thing, right?
- 9:01Like make smarter overall, closer to the understanding of what means what, what is referencing what, you know, than they were before.
- 9:07That sounds great.
- 9:08Yeah, yeah, totally.
- 9:09And it it's crazy how fast like AI is changing how we even think about things like types and things like that, you know?
- 9:18Yeah.
- 9:18It's actually pretty wild.
- 9:19Or LSPs and things like that.
- 9:21You know, I think I tweeted the other day, like at some point in the not too distant past, you know, I wrote my last user test and like think about how much like T D D consumed are
- 9:32like mind share of like and so many arguments about it, you know, and it's like
- 9:37That as a concept is like over, you know?
- 9:39Yeah.
- 9:39It's so weird to me.
- 9:41Yeah.
- 9:42Well, it's so I was going to talk to you about this in a future podcast episode, but you brought it up.
- 9:45I'm very curious because when I allow AI agents, just given like the normal frameworks I have around them, to write tests, they write the most fragile, like test that the word B
- 9:56is here.
- 9:57And then you, you know, you change the text and they have to change three tests.
- 10:00Do you have patterns and practices that you use, or is it because you're working on framework level code instead of like app level code that
- 10:08It's easier for it to be the generating code that really lines up with the actual functionality.
- 10:13I've noticed a few things with the AI.
- 10:15I definitely see it somewhat like over test in a way.
- 10:18I don't you know, like it almost like overly defensively one codes in general, but then two test as well.
- 10:25So like sometimes it'd be like, I'll be or I'll just say like remove that test, or this is like over defensive programming.
- 10:32And it will kind of remove that stuff.
- 10:34But I I do see that a lot.
- 10:37I can't say I really have any like specific skills or guidelines for that.
- 10:40But I probably should and it would be kind of interesting to like maybe build into boost.
- 10:43I we've spent a lot of time on like I guess how to write correct code, like giving the agent context on that, but maybe not as much time on how to write valuable tests that are
- 10:53actually useful.
- 10:54So that would that would actually be pretty cool.
- 10:56And of course over time I'm sure the models get better at it anyway, but
- 10:59Yeah.
- 11:00I mean, you know, I've got two projects I'm working on right now where I let it, you know, like I I mentioned this in my talk, but like there's a project too I'm working on where
- 11:08I'm just going full, what does Ian call it?
- 11:10Blast shields down, where I'm like write the and I read it later and or I run the test later.
- 11:15I'm just like, this is testing all sorts of just super fragile stuff.
- 11:18But to your point, and the ones most of the time I'm using AI code, I read every single line of code before I commit it.
- 11:24And that's when I will say, that's not a good test.
- 11:26That's an evil test.
- 11:26But it still is kind of nice to be able to say it wrote the test.
- 11:29And then I tell it what to fix or how to change it using my programming experience and stuff like that.
- 11:34But I didn't have to type the syntax for assert, is it assert equals or assert true or a C equal?
- 11:39You like all that kind of stuff.
- 11:40I have to think about that stuff anymore.
- 11:41Yeah.
- 11:43So I want to stop for a second and thank our sponsors for this episode.
- 11:46First up is Flare by Spatie.
- 11:48And Flair by Spotsi is all in one error tracking and performance monitoring for your Laravel applications.
- 11:52You can find them at flareapp.io.
- 11:55And also if you want to check out their performance monitoring, you can check out flareapp.io slash performance dash monitoring.
- 12:01Links in the show notes, of course.
- 12:02And also thank you so much to our friends at Laracon AU, which returns November fourth to sixth in the lovely, beautiful, I wish I could move there, Brisbane, with deeper learning,
- 12:13practical insights, and ideas that will stretch how you think about building with Laravel.
- 12:17So get your tickets now at Laracon.au.
- 12:20Thanks again, y'all.
- 12:21You also introduced Artisan Doctor.
- 12:24And to me, that's another one of those affordances where like artisan doctor is nice, right?
- 12:27It allows the the the application and its packages to say, are we good or not?
- 12:31But I imagine kind of the the one of the main goals we're talking about here is making sure that there's a health check at the end of every single round of an agent's work.
- 12:40Is that something you've ever thought of before and it just wasn't worth it?
- 12:43And now with agents it is worth it, or is this something that just came up because of agent context?
- 12:47Definitely I think it's pretty AI driven and it lets us also have diagnostics in each package that we have, you know, like reverb or telescope or horizon or whatever that has
- 12:59its own specific diagnostic checks where if something isn't working, we can hopefully diagnose it really quick so that the agent can correct it or like have, you know, some
- 13:09sort of something to go on um to kind of steer its exploration.
- 13:12You know, pretty like a lightweight concept in a sense of just like
- 13:16running a few simple checks for each package, but can like really speed up like agent debugging and help it kind of like be on the right path.
- 13:24Yeah.
- 13:24Especially because a lot of agent debugging is is does your code quality check and do your tests pass, which is valuable, but you know, and and like the past TIA or T or whoever you
- 13:34say it was helpful in that direction as well.
- 13:35But like sometimes that takes a long time and sometimes it's really only checking things.
- 13:39Like you almost wonder if part of the reason that they're over testing is because unit tests are trying to be used to cover everything about health.
- 13:45Whereas reality health sometimes means something other than the code passes or fails or check.
- 13:50So Yeah, totally.
- 13:52And then the last one I wanted to mention on the Laravel side was CPX, which is not actually Laravel at all, but it it is under the Laravel it's not Laravel framework, but
- 14:00it's under the Laravel organization.
- 14:02If somebody is not familiar with CPX, can you give us the quick intro?
- 14:05And then I want to ask you like, is it as transformational for a local composer as I think it is?
- 14:10Cause I feel like a big deal's not being made about.
- 14:12So but first, can you kinda tell everybody what it does?
- 14:14Yeah.
- 14:15Well, let me give some context on like life without CPX.
- 14:18So like Composer has this feature called Composer Global Require, where you can globally install a package, usually a command line tool like the Laravel installer or like Pint or
- 14:30like some sort of like PHP stand type of package that you're gonna run on a lot of different projects.
- 14:37And that works, but it has a pretty big shortcoming in the sense that all of those packages are installed in
- 14:44your home directory.composer, basically in that directory, under one sort of like composer.json file.
- 14:50Yeah.
- 14:50And if any of those globally installed packages have a dependency conflict, like maybe one requires Symfony Console 7 and one requires Symfony Console 8, you are pretty much at an
- 15:01impasse and can go no further.
- 15:03Like you're done.
- 15:05So what CPX does is, and it's inspired by NPX in the node ecosystem is
- 15:11You basically run on your command line CPX space, some package name, let's say Laravel slash pint, and hit enter.
- 15:19And it will download the package into its own isolated directory with its own dependencies and run that CLI tool.
- 15:27Now you might think, that's like really slow if you're downloading the package every time you want to do that.
- 15:32But CPX has a lot of niceties around like caching.
- 15:34So it will cache the package in its own isolated workspace.
- 15:39And if you run that command again, it'll be super fast because it doesn't have to download it again.
- 15:43But what's also cool is if there's a new version of that package, it will like update it in the background.
- 15:48So you're kind of like always up to date and you can just always run these little command line tools without worrying about any kind of composer global dependency conflicts, which
- 15:57is really sweet.
- 15:58So I've already been using it for a bunch of random stuff, right?
- 16:00It's like want to run a one off tool, but I do not want to globally install it.
- 16:04It's actually a really like
- 16:06simple API surface.
- 16:07Like there's only a few commands that it has, but it is really useful.
- 16:11Yeah.
- 16:11Okay.
- 16:11Cause I have worked on a lot of CLI both for Laravel and then also for Tighten stuff.
- 16:16And so you know, valet and other tools.
- 16:19And then the amount of my time and energy that has been spent dealing with global composer dependency mismatches, let alone once you also switch your version of PHP and then
- 16:28suddenly you're my God, it's miserable.
- 16:31And with all love to Composer, Composer is brilliant and wonderful.
- 16:35This is just an edge where you really start seeing kind of some frustration.
- 16:39'Cause Liam wrote it originally and then kinda Laravel onboarded it as an official Laravel thing, right?
- 16:44Yeah, that's right.
- 16:45Community member Liam Hammett, I believe is his last name, started the project actually a while back, I think.
- 16:50Okay.
- 16:50Had gotten it pretty far along, had like a one point oh out, and you know, we approached him, Hey, do you want like help maintaining this?
- 16:58'Cause we think it's a really cool, valuable tool.
- 17:00We kind of added a few new things, brought like the Laravel prompts stuff into it, and then put out kind of a two point which is what I showed at Laracon.
- 17:09But yeah, definitely a big shout out to Liam for kind of kicking that project off and getting it into a, you know, a workable state.
- 17:14Cause it it is like, I feel like underrated in the PHP
- 17:17Yeah.
- 17:19That was my last question, is just because I'm like, this is such a freaking relief for me.
- 17:23And it it does also mean, like you mentioned, you can use a tool on the command line from Composer without it being a permanent dependency on your system forever.
- 17:31Or even worrying, does this conflict with the things I already have?
- 17:34Like, no, it's just it's a one off tool.
- 17:36Yeah.
- 17:36And and it is it's simple.
- 17:38I'm guessing the implementation behind it is relatively simple, right?
- 17:40You're just kind of putting each in its own little bucket, but the impact is huge.
- 17:45So
- 17:45Yeah about this.
- 17:46Yeah.
- 17:47Okay.
- 17:48So that was the the Laravel ones I wanted to focus on.
- 17:50Now we have Laravel and AI stuff.
- 17:53So there's two big ones that kind of stood out to me.
- 17:55The first one is the human in the loop.
- 17:58I think that's the right phrasing for it, but basically the the ability to pause and then have a loop a human.
- 18:02I have not looked at the code for this.
- 18:04Was the ability for any of these things to pause and expect human impact to happen, was that a pretty big implementation cost?
- 18:10Or was it actually just like, we just had to think to add it in?
- 18:14The pausing and waiting for something to happen is not that big of an implementation uh complex thing to build.
- 18:24That kind of like happens anyway.
- 18:25But what is like actually more difficult is and what I think a lot of other AISDKs just sort of like punt on is how are you going to like persist the pending decisions and the
- 18:37recorded decisions and things like that.
- 18:39So that so like for example.
- 18:41And Laravel's AISDK, since Laravel uses Eloquent and we can kind of depend on this database abstraction layer, you know, we have these traits in the AISDK like remembers
- 18:50conversation or something like that.
- 18:52Right.
- 18:53If you're using that trait on an agent and you're storing the messages, you know, that users are issuing and the responses they're receiving, those get stored in your database
- 19:02automatically when you use that trait.
- 19:04We also store sort of a JSON representation of
- 19:08The pending decisions that we are waiting on from the user and what tool call IDs those map to.
- 19:14Uh-huh.
- 19:14So that we feed those back to you, you know, in the response and you can check like if response has pending approvals or something like that to know if we're kind of like
- 19:23waiting or if a tool needs human approval.
- 19:25Yeah.
- 19:26And then you can send back a decisions object and we, you know, map that back to the tool calls and then feed it back to the LM.
- 19:33So all of that is kind of handled for you.
- 19:34Yeah.
- 19:35And other AI SDKs, it's like,
- 19:37Yep.
- 19:38You can know if there are decisions that are pending, but how you store them and how you represent them and how you keep track of all that state, that is sort of like on you to
- 19:47figure out.
- 19:48Whereas in the Laravel AISDK, it all just sort of works.
- 19:52Yeah.
- 19:53The only part you really have to decide on is sort of like the presentation layer of what that's gonna look like in your app.
- 19:59You know, is it a big red box that pops up?
- 20:01Is it, you know, you you sort of are responsible for the UI of it for now, I would say.
- 20:06We would like to put out some components around this, actually, so that you have some like kind of drop in either in React in Inertia or View in Inertia.
- 20:14And I know Caleb's working on a lot of agent stuff in LiveWire to where even the presentation layer of this, you can kind of have some drop in components.
- 20:21But anyway, that's kind of the gist of it.
- 20:23Yeah.
- 20:24Well, I love that because I I built I'm very grateful that I built for clients some API integrations or some AI integrations before the Laravel AI SDK came out so that I can
- 20:33appreciate just how much work I'd do on my own to figure this out.
- 20:36Because it's not just that I was learning, it's that things aren't defined.
- 20:39And so every app you build, it's like the the the bad old days of everything that Laravel solved of auth and everything else like that, where every single app might be a little bit
- 20:47different, you know, versus just it's standardized, it's consistent.
- 20:50And we're not wasting our time bike shedding on how do we store the decisions objects or whatever.
- 20:54So
- 20:55Yeah.
- 20:55And I think that's kind of the next layer of abstraction we're thinking about or we're thinking about here at Laravel, which I tweeted about, which is like, do we need sort of
- 21:04like a Laravel skeleton specifically for building agents?
- 21:09You know, like companies are building either Slack agents for their company Slack or for customers, or they're building agents that are accessed via the web.
- 21:18And do we need sort of a skeleton that makes those very
- 21:23easy to build with the right abstractions that makes it very easy to hook up to Slack or Discord or whatever wherever you want to sort of expose them.
- 21:31So anyway, a lot of this human in the loop tool approval and AISDK work is sort of foundational.
- 21:35And now we're kind of exploring, you know, post Laracon, w how can we like present this in a way that's easy to use and easy to build so that Laravel is sort of the best place to
- 21:45build those types of things.
- 21:47You know, one of the things that Aaron mentioned, Aaron Francis, new VP of marketing, mentioned was rather than Laravel doing all this work, meaning that the the old school
- 21:58Laravel people who've been writing this for, you know, over a decade at this point are now being left behind.
- 22:02It's more uh he mentioned specifically no code refugees and other folks kind of being brought into the Laravel fault and we're gonna get a bunch of new, you know, friends,
- 22:10right?
- 22:11And that really sounds extremely compelling for that because what you're saying is we are a full stack application framework.
- 22:18That gives a lot of those benefits out of the box of it has most of the pieces put together for you.
- 22:24Cause in the past, a lot of the stuff was it has all of the components for you, but you got to build.
- 22:29And I feel like we're moving further and further and further towards it's even got the build, you know, between AI and and then also skeletons like this.
- 22:36It's like, no, you just gotta bring your unique understanding.
- 22:39So I love this as a move towards something that makes the framework even more compelling for people who haven't historically been full stack application build.
- 22:47Yeah, I I think so.
- 22:49And like I I may mention this on the last podcast, but I'm just getting like more and more people reaching out and they get like 70% complete of their app on some sort of like no
- 22:59code or vibe coding type of platform, and they're just sort of like stuck.
- 23:03It's so much easier if you just start with Laravel from the beginning, to be honest, and just build with AI and then ship it to the cloud.
- 23:09Yeah.
- 23:10It is.
- 23:10We're talking to quite a few of those people as well.
- 23:12And the good news is moving from wherever they're stuck to Laravel is a lot easier with AI.
- 23:17Like we we always talk about how AI is really good at doing the rote stuff you don't want to do.
- 23:21So you can do things you want to do.
- 23:23One rote thing I don't want to do is take something out of Lovable and throw it in and remake it in Laravel.
- 23:28But you what's really good at that?
- 23:29Is AI.
- 23:30You know, so take this seventy percent, move it over to Laravel and let us bring what we have unique to bring there.
- 23:36So
- 23:36Yeah, exactly.
- 23:37There's another kind of relationship shift that I'm seeing a little bit with Laravel and AI, which is the the string summarize, where it's it's taking something that feels very
- 23:47magical, right?
- 23:48It is this AI powered, agent powered, whatever thing, but hiding it behind something that most of the string colon colon calls in Laravel are just text manipulation.
- 23:58Right.
- 23:59Yeah.
- 23:59And all of a sudden we've got one that is doing and string markdown, I think, was the first one where it's doing a little bit more than text manipula.
- 24:04It's still text manipulation, but at least it was it was much more s smarter and powerful.
- 24:08But this is the whole way out to basically treating AI sort of like a framework primitive, which I think is this is that kind of a direction you're intentionally heading, or did
- 24:16this just kind of pop into your mind?
- 24:17Because that's I feel like there's a lot of unlocks there with the AI just gets hidden behind things and you don't even think about what's powering it.
- 24:23Yeah, I think there's definitely some cool stuff to do there.
- 24:26And I think it's just like, you know, it's just treating AI as another tool like anything else, you know, in the framework, even like in very basic classes of the framework, like
- 24:35the string class, where, you know, just the need to summarize some text to a paragraph.
- 24:41And one feature I want to add to this actually is that the ability to summarize just like a title.
- 24:46You know, kind of like you see on the sidebar of like Chat GBT, how when you start chatting, it will sort of assign like a a couple of words as the title.
- 24:54But to me it is like really practical, useful things that make it just a little bit more like joyful to build with Laravel, you know?
- 25:00It's like one of those things it's like it's not hard to do on your own, but I think it's just like very classic Laravel to have this like kind of nice little method that just does
- 25:09that heavy lifting for you and is very easy to remember.
- 25:12And you're so much more likely to do it when it's just STR colon colon summarize, right?
- 25:17Like I know how to do that, but I the number of times I've done it in one of my apps that I'm building lately is actually not super high.
- 25:22And now I'm like, yeah, I'm gonna put that in everything.
- 25:26That's awesome.
- 25:27Okay.
- 25:27I'm gonna move on to cloud.
- 25:29So I had mentioned before we were meeting that managed queues keeps coming up.
- 25:33And I feel like when I talk to people about why I'm excited about managed queues, a lot of people give me this kind of blank look.
- 25:38And I don't think they fully understand.
- 25:41The value of managed queues in part because not everybody has been working in environments where you actually need that.
- 25:46You know, people are still often working in older systems or just the queues come for free because they haven't hit the point where queues become difficult.
- 25:55So who is the target audience for managed queues?
- 25:59You know, like who hears managed queues and goes, my God, that's why?
- 26:02And can you help us kind of like for people who aren't familiar with it and the need for it, can you kind of walk us through like what are they offering that we didn't have
- 26:08before?
- 26:09Yeah.
- 26:10It kind of helps to think about queues historically and Laravel a little bit.
- 26:13And I think, you know, finding the perfect queue system has always been like almost a holy grail of my, you know, development career.
- 26:22One of the first things we put out was Laravel Horizon, which I think was like twenty seventeen, twenty eighteen.
- 26:27And Horizon had a lot of benefits in the sense that like you install Horizon into your Laravel app and you tell it I'm willing to have this maximum amount of workers and this
- 26:37kind of minimum amount of workers.
- 26:40And it would try to scale up and down between those two thresholds based on, you know, queue wait time and things like that.
- 26:48Then we had vapor, which was more like just put jobs on the queue and it will automatically scale to work those jobs, the end.
- 26:57You know, there it was like much less configuration than Horizon, even.
- 27:01But that had its own set of downsides, you know, on the vapor side.
- 27:06There was a limit to how long the queue jobs could work.
- 27:08There's a limit really just to Lambda itself and what can be installed in the Lambda runtime and what packages are available in terms of like operating system level stuff.
- 27:18And a little bit of a lack of like observability or what's kind of going on in the queue.
- 27:23Overall, vapor was like a pretty good solution for the time.
- 27:27Horizon was also good for the time, but with its own set of drawbacks in the sense that like one.
- 27:34It doesn't really intelligently write size to your server.
- 27:39So our internet just cut out, but we think we're back at the right spot.
- 27:42Taylor, what you were saying was that vapor was good for its time, but it brought a lack of observability and a few other things.
- 27:47And then you're saying Horizon was good for its time, but it also had its challenges.
- 27:51And so I'm gonna kind of bring you back in there.
- 27:53Yeah, yeah.
- 27:54Yeah.
- 27:54The challenges were with Horizon was that you still need to do a lot of thinking about like right sizing your workers.
- 28:00So if you have a four gigabyte server, you need to think about okay, how much RAM does each worker use, therefore, how many max workers can I have?
- 28:08You know, things like that.
- 28:09It also doesn't really horizontally scale.
- 28:11So if you need to add another server, you need to configure horizon to run on that server.
- 28:15It was a lot of like management and thinking that I personally don't want to do.
- 28:19You know, with Laravel Cloud managed queues, we basically set out to say, okay, what is like the the best parts of Horizon and Vapor?
- 28:27And maybe even more vapor than Horizon, to be honest, because Horizon just had so much config that we just didn't want.
- 28:33We knew that the spirit of what we wanted was I want to be able to put jobs on the queue and I want them to be worked in a reasonable time frame, you know, within a few seconds.
- 28:43And I really don't want to have to think about anything else other than
- 28:46setting a maximum number of workers I'm comfortable with, mainly from a cost management perspective.
- 28:53I mean more than anything, maybe.
- 28:54Yeah.
- 28:55And so with Laravel Cloud managed queues, each worker actually runs on its own little isolated compute.
- 29:01So there's no risk of like out of memory errors that you might run into with Horizon to where you're like got too many workers running on the server.
- 29:08Yeah.
- 29:09They also spin up and spin down very quickly.
- 29:11So
- 29:12They spin up in under a second if a job hits the key.
- 29:15so it has that very like vapor-esque feel to it, but where you don't really have to think about, you know, configuring workers.
- 29:22Just tell us like the maximum you're comfortable with.
- 29:24You can do other kind of more advanced things, like you can have scheduled overrides of your scaling strategy.
- 29:29You can configure like the timeout and things like that.
- 29:32But for most cases, you just plug in boom, I want, you know, 25 max workers or 10 or five or whatever it is.
- 29:38Add it to your
- 29:40Cloud app and you're good to go.
- 29:41Just start queuing stuff.
- 29:43And you get a nice observability tab where you can kind of see job volume over time, your failed jobs, you know, your runtime, your wait time, things like that.
- 29:50So it's super nice.
- 29:51Yeah.
- 29:52It's like Horizon was the view, it was the dream if we want our applications to manage their queues.
- 29:58And so there were so many good things about that.
- 30:00But part of the discovery there is an application and a server are not the same thing.
- 30:05And the moment you get to any significant level of scale, or for the queues themselves to be best managed with a greater level of understanding of the server than the application has.
- 30:15And so I'm 100% with you.
- 30:18I think the reason that
- 30:19Vapors was so good as it was at the server level, but vapor had the limitations of, you know, serverless and everything.
- 30:24So I queues are not a application concern.
- 30:28Queues are a server concern.
- 30:30And so that's why I love having a really great server for it.
- 30:34Like I remember using I'm trying to remember what it was, but there was some like queue as a service in the earliest days of Laravel.
- 30:40And they did some of this, but not nearly at the level it was.
- 30:42And it made sense because again, if it's just like all I do is queues all day long, makes sense.
- 30:47And that's what matched queues is, right?
- 30:48But it's
- 30:49It's integrated in our our cloud work.
- 30:51So
- 30:51Yeah.
- 30:51And as far as who should use it, you know, this was kind of the interesting thing about man is queues is it's great for hobby projects and side projects because it scales to zero
- 31:00and you pay nothing.
- 31:02So like if no one's using your project, you know, you're not paying anything.
- 31:05But yeah, it also is used by our most scaled customers because of, you know, the elasticity and the intelligence of the algorithm for scaling makes it really great.
- 31:14And the other thing we see, you know, compared to vapor is it's just simply
- 31:18Most people that move to cloud from vapor, it's cheaper to be on cloud and it's more performant to be on cloud.
- 31:23Lambda is, you know, convenient as like a serverless primitive, but at scale it does cost quite a bit.
- 31:30So usually people that move to cloud see a decrease in their bill overall.
- 31:34Yeah.
- 31:35I love that.
- 31:36Is Horizon still valuable?
- 31:40I assume for people on cloud it's not, but I assume that there's other people where you're like, well, yeah, Horizon's still a great tool if you're not on cloud.
- 31:46If you're not on cloud, sure, Horizon I think is like probably if you're on Forge or something, you know, then Horizon is definitely a useful tool.
- 31:53It's just cheaper if you were to do it on cloud with the scale the combination of scale to zero on compute and scale to zero on queues makes it just even more affordable than forge at
- 32:03this point, which is crazy, you know, compared to where we were years ago.
- 32:06Yeah, you know, it's just sort of where we're at right now.
- 32:08Well that was my next question.
- 32:09Scale to zero with sub one second spin-up time feels magical.
- 32:14And it feels like it's like, sure, that's the marketing speak, but what's the catch?
- 32:18Right.
- 32:19Because in the world where everything is scale to zero, so you're not paying if people aren't using it, and the thing can spin up in milliseconds.
- 32:24So you're not like, yeah, it's scales to zero and then it takes five seconds for the first person in the last five minutes to visit it.
- 32:29But like, no, it's scale to zero and then it's nearly instantaneous startup.
- 32:32First of all, there's magic that d deserves an entire podcast episode to figure out how it's doing that.
- 32:37But
- 32:37Like what's again, use case.
- 32:40Who shouldn't just let everything scale down to zero and then spin back up?
- 32:44You know, what is is this the Okay, so is is this the death knell of always on servers?
- 32:51I think so.
- 32:52Like I don't see any reason you wouldn't have it on for everything just because the wake up time is so minimal.
- 32:57If your app is really in production and getting sort of like constant traffic, it may never sleep.
- 33:02So it's sort of a moot point.
- 33:03But if your app has any sort of like, you know, ups and downs in traffic at all or periods where there's no traffic at all, especially in the case of like preview environments or
- 33:12staging environments, yeah, you should definitely have it on.
- 33:14But even in production for small apps, I'd probably have it on.
- 33:18Again, if it's not used, like you
- 33:20really lose nothing by turning it on.
- 33:21But yeah, if there is an opportunity for it to sleep, it's going to wake up so fast it's not going to be noticeable.
- 33:27So you might as well.
- 33:27And that's, you know, how I feel about, you know, scale to zero, databases, cache, queues.
- 33:32Everything can scale to zero and wake up very quickly on cloud.
- 33:34So there's really no downside to turning that on.
- 33:38That's crazy.
- 33:38Okay.
- 33:39I only have it on in some staging stuff because I haven't had a chance to play with it really fully on like a a heavy production app since you guys announced it.
- 33:46And I wanted to ask you the specific question before I did, because I'm like, there's gotta be a catch, right?
- 33:50There's gotta be some reason I shouldn't be doing this.
- 33:52We could turn it on on Laravel dot com.
- 33:54Again, I don't think it would sleep because it's just constantly getting traffic.
- 33:57Even if we did, I I wouldn't be worried to do it because of the cold start or anything.
- 34:02Like I would totally do it because it's just not gonna be noticeable as far as wake up time goes.
- 34:07Okay.
- 34:08So if we are talking about Laravel Cloud, 'cause when Laravel Cloud first came out, it was this beautiful vision.
- 34:13There were some kinks to work out.
- 34:15Over the last couple of years, you guys have worked them out.
- 34:17And I that I keep telling everybody this.
- 34:18I'm like, I was excited.
- 34:21I was gonna say one other caveat that prevented scale to zero until recently was also the scheduler.
- 34:26So you know when Laravel Cloud first came out, we had hibernation is what we called it.
- 34:31It had a much slower wake up time.
- 34:32Not only that, it really didn't work with queues and it really didn't work with the scheduler, which is like two of the most popular features in Laravel, you know.
- 34:40So it really limited the amount of applications where like hibernation was useful.
- 34:45But now with scale to zero queues, sort of the queue thing is solved.
- 34:49We'll wake your app up if there's a queue job.
- 34:51But with the scheduler, we also, you know, kind of quietly, I would say, released improvements to this.
- 34:56But I did talk about it at Laracon where if you have scheduled jobs and you turn on scale to zero, we will read your scheduled jobs using the schedule list command where we can
- 35:06actually get a JSON dump of every scheduled job in your app.
- 35:09And we will actually wake your up app if it's hourly or nightly or whatever.
- 35:14Run the schedule run command and then let it go back to sleep.
- 35:17So even if you have scheduled tasks that run on the hour or nightly or weekly or whatever, you can still now turn on scale to zero where you couldn't really before or your scheduled
- 35:26jobs would not run at all.
- 35:28So yeah, uh, you know, now truly every app can turn on scale to zero with no like caveats or you know gotchas.
- 35:35Yeah.
- 35:36I love that.
- 35:37And what I was saying is that when cloud first came out, it had we had thorns.
- 35:41We you guys have worked through the thorns, but now I feel like it's we're past the point where there's any question about why this is viable for Laravel people.
- 35:48And you made some announcements at Laracon about you know making it more viable for JavaScript projects and then talking about Rails and stuff like that.
- 35:55Like I feel like you guys did the let's make this the most ideal hosting environment for Laravel.
- 36:02And you got there and you're like, All right, what's next?
- 36:05So obviously we've seen some signs of what's next, but what is next?
- 36:08I mean, is it to the point where every single within, you know, maybe there's some constraints, but like anybody who's wants to go find hosting, they're gonna consider
- 36:17Laravel Cloud as one of the things they're thinking about, regardless of what tech stack they're working in, as long as it's, you know, web applications.
- 36:22Mm-hmm.
- 36:23You know, I would love that.
- 36:24I would love to work towards that future.
- 36:25I think where we're at right now is maybe a little bit different.
- 36:30So I do think we've made Laravel Cloud the best place to run Laravel applications.
- 36:35Not to say there's still we have still have a roadmap, right?
- 36:38Like there's still a lot of work we want to do.
- 36:41And we'll continue to like make that our main focus.
- 36:44Like our roadmap is very Laravel centric, I would say, at this point still, because there's still so much Laravel out there that.
- 36:51you know, it's not on cloud that we would like to bring to cloud.
- 36:54And there's a lot of improvements we can make to the platform.
- 36:56However, what I talked about at Laracon is that, you know, a lot of Laravel teams, even pre-AI, were using various like front-end frameworks for their front end.
- 37:06And they had a Laravel API that could be Next, it could be Nuxt, it could be other things.
- 37:11that was a very common, you know, up to by our like survey data, almost like 50% actually of
- 37:18Of developers like use this sort of setup in some fashion, either on their side projects or their daily job or whatever.
- 37:24So supporting running those types of front ends on Laravel Cloud felt like a very natural extension to like support our community and how they're building applications.
- 37:34But looking beyond that, you know, I started to show like during my demo, I deployed a Go app and a Python app and a Rails app at the very end, you know, to Laravel Cloud.
- 37:44And part of that is just our thinking that.
- 37:47You know, even even in our own experience or my own experience as a developer, it's becoming much, much easier for me to be multilingual across the stack.
- 37:57You know, I've built a game in TypeScript.
- 38:00I've built microservices and go.
- 38:02And I don't really I wouldn't call myself an expert in these languages, you know, like I can read them and kind of understand what is going on, but I would not feel comfortable
- 38:11sitting down in a blank text editor and building an application in Go.
- 38:14I just would not feel qualified to do that.
- 38:17Yeah.
- 38:17But with AI, it's like, sure, why not?
- 38:19If this is like the right tool for this particular task, maybe I will spin up a Go microservice.
- 38:24And I think that's going to become increasingly common even among Laravel organizations, to where let's say your your dev team is primarily Laravel specialist, but with AI, like
- 38:35heck, maybe you do feel more comfortable to throw out like a Go microservice or a Python service for some particular task that there's just a package in that language that is very
- 38:44hard to replicate in PHP for whatever reason or you don't want to.
- 38:48And you can throw it out there.
- 38:50And it's just like historically, I would have been scared to do that at Laravel because it's like, oh, do we really want to write something in Go?
- 38:56Are we going to know how to maintain it?
- 38:58What if something happens?
- 38:59What if we can't figure it out?
- 39:00And now as the models get better and and where they are now, like that's just not a concern.
- 39:04Yeah.
- 39:05So part of the the ability to deploy Go and Python, which we're hoping to ship this month on Laravel Cloud, is sort of our first steps at supporting a more
- 39:15multilingual Laravel community where Laravel is at the heart of much of what we do, or maybe it's the heart of your business.
- 39:22It's your monolith application.
- 39:23But it is like supported by a variety of other services that are maybe written in other languages, or maybe you're just building apps in other languages, internal tools or
- 39:32internal APIs in those other stacks, and you want to have one home for them on Laravel Cloud where you can take advantage of preview environments, scale to zero databases,
- 39:41workers, things like that.
- 39:43And you can kind of have your whole stack living on Laravel Cloud, no matter what language it is.
- 39:49The Rails thing was a little bit of a a joke, but kind of I guess kind of not a joke.
- 39:53It was fun, uh fun call out to me going to Denmark next month to do the QA with DHH.
- 39:58But also, you know, who knows, you know, Heroku's in rough shape.
- 40:01as I said at the conference, or you know, had gone into maintenance mode by their own admission.
- 40:05So maybe there is a home for Rails apps on Laravel Cloud, but primarily it is, you know.
- 40:10We're focused on enabling multilingual Laravel teams.
- 40:14That's great.
- 40:15You haven't said this, but one of the things that I have been saying to people lately that got bolstered by kind of Aaron's, you know, vision for the marketing of of Laravel is I am
- 40:26on the board of the PHP Foundation, love PHP, grateful for PHP.
- 40:29And also I think that calling Laravel a PHP framework is a bit of a misnomer at this point.
- 40:35To me, Laravel is a full step application development framework that uses multiple languages and has since its inception.
- 40:42It has always been
- 40:44Opinionated in terms of its JavaScript, in terms of its HTML and CSS, in terms of yes, PHP and the back end code, but there's also server and infrastructure concerns.
- 40:54And so, like, yeah, okay, Ruby and Rails is is on Ruby, you know, Laravel is on PHP, but increasingly, and in some ways, always, uh, PHP is one of the tools that builds a
- 41:07functional application in the Laravel world.
- 41:09And to say it is a PHP framework, not only has it
- 41:12certainly harmed our public perception some, but I also just don't think it's the full truth.
- 41:16And I think it has kept people who don't identify as PHP programmers from interacting with Laravel.
- 41:22And so as we want more people to interact with Laravel, I'm like Laravel's a full stack application developer.
- 41:26It's the best, most productive, most effective full stack application development framework.
- 41:31And you'll use different languages just like you do with many other things.
- 41:34And you're going to use AI for helping all of them, just like you do any other things.
- 41:37And so adding a few more languages under the hood, I'm like, great.
- 41:40Sounds good.
- 41:40I mean, I can imagine a world where you give me structures and tooling for my Go and my Python microservices and they're just in the Laravel world.
- 41:47And I'm not you know I'm not putting words in your mouth or anything like that.
- 41:49This is not some secret conversation we had, but I'm like, great.
- 41:52And I'm gonna host it all in Laravel Cloud.
- 41:54Great.
- 41:54It all makes sense to me.
- 41:55And it makes us more powerful and productive.
- 41:58And it makes more people want to come to work with us when we're no longer that the one, you know, meaningfully successful PHP application development framework.
- 42:06that we've actually heard of before, but it's instead a place to build robust, modern, scalable, secure web applications, regardless of kind of like what you need it to do or
- 42:17what specific languages it's actually touching.
- 42:20No, yeah.
- 42:20I think that's spot on.
- 42:21And it's true.
- 42:21We all we have never been only PHP.
- 42:24We've you know, we've had now we have inertia, which you which originally created by Jonathan Reinink.
- 42:29We have Laravel Echo, which is you a JavaScript package for the front end.
- 42:33We have all sorts of like JavaScript packages in general.
- 42:36We have Wayfinder.
- 42:37So it's been a very like multilingual ecosystem from the very beginning.
- 42:41We have never been sort of PHP must be used for everything, you know, in our community.
- 42:47Yeah, I love it.
- 42:48I know we are at time.
- 42:49I had one last question I wanted to ask you, which is is there one announcement that Laravel team, whether it was your announcement or something else, what was made at
- 42:57Laracon, you think people aren't understanding, you know, this how big it is.
- 43:01And I already I already kind of suggested that CPX might be a underloved, so that could be the answer.
- 43:05But is there anything where you're like I I I expected or I think people should pay more attention to this one?
- 43:11gosh.
- 43:11I thought a lot of it was really cool.
- 43:13Um, you know, CPX is one.
- 43:15I think the multimodal embedding stuff for the AI S DK unlocked a lot of cool stuff as far as like audio search, video search, semantically, I mean image search.
- 43:25I think that people are starting to grasp the Laravel cloud stuff a bit as far as the improvements we made on scale to zero.
- 43:31There was definitely a different energy in the room of like, you know, like when we first launched cloud a year ago, like I said, I think the attitude was neat, but not better than
- 43:39what I have necessarily.
- 43:40And I think now we're just making through the improvements the team has made, you know, to the infrastructure to the app, we're just able to make a much more compelling case.
- 43:47And I think people are seeing how impactful scale to zero and things like many SQs are.
- 43:53You know, and we're still working on stuff.
- 43:54We still got more stuff coming.
- 43:56You know, I'm excited for the stuff we're still building.
- 43:58So overall, I think there was a lot of exciting stuff.
- 44:01hopefully people use it to build awesome stuff.
- 44:03That's always my like main inspiration coming away from Laracon.
- 44:06It's just like hearing all the stories.
- 44:08Of how people are leveraging all these things we're putting out there in the world.
- 44:11Sometimes it feels like, you know, when you're working from home, it feels like you're throwing a lot of stuff out into the world.
- 44:16And it's like being able to tangibly see and hear how it's being used to actually build really cool applications that meet a real need in the world is always really rewarding and
- 44:27one of my favorite parts of Laracon.
- 44:29that.
- 44:29And I know one of the things we historically have not seen is because usually people who come to LayerCon are the people who whose company is able to help them pay for it.
- 44:37And so one thing I want to surface is I've talked to probably a dozen nonprofits over the last six months who are using Laravel for things.
- 44:45And we we've been working with nonprofits since almost the very beginning.
- 44:47It's one of our favorite things to do at Tighten.
- 44:49If I could work just nonprofits all day long, I would
- 44:52We're trying to get more them doing it.
- 44:53But yeah, there's a growing number of nonprofits.
- 44:55Some independently, there's also some folks who are like Ted Crewell is going out to nonprofits and saying, We should build Laravel apps for you to make your lives better.
- 45:02Like the so anyway, there's a ton of people who we kind of hear their names and it's exciting, but there's so many more people that we don't even get a chance to meet at
- 45:10Laracon who are just like, my God, look what we can finally do for our small group or our nonprofit or whatever.
- 45:15So, anyway, just want you to hear that even beyond all the people you're meeting at Laracon, there's so much cool stuff happening because of
- 45:22Yeah, that's awesome.
- 45:23All right, we are at time.
- 45:24Taylor is it anything else you want to share with people before I let you go back to your obviously busy life?
- 45:29no, just keep building awesome stuff, you know.
- 45:31It's it was good to see everyone.
- 45:32I'll be in Denmark next month.
- 45:34But yeah, keep shipping.
- 45:36Awesome.
- 45:36Well, thank you so much for hanging out and the rest of you, yeah.
- 45:39We'll see you all next time.
- 45:40See ya.