Laravel Shift, Claude Shopping, and Prism Forever

TJ Miller (00:00)
Hey everybody, welcome back to the Slightly Caffeinated Podcast. I'm TJ Miller. So Chris, what's new in your world?

Chris Gmyr (00:04)
and I'm Chris Gmyr

man, still more snow and ice. Been cold and crazy and yeah, ended up having multiple cold and snow days and then they've been on two hour delays. But only had minimal impact here at home because my son had a surgery done on Tuesday on his nose. He had like this little like polyp thing in there.

TJ Miller (00:11)
Yeah.

No.

Chris Gmyr (00:32)
that

got a little too big and had to get it taken out. So that was Tuesday. So he was out of school Tuesday and he's still out today. So just a couple of less things that we have to worry about, but he's doing well, feeling a little bit better and he'll probably go back to school tomorrow and into next week. So I had to take it a little bit easier there, but he's doing well. But besides that, just kind of.

busy with lot of projects and doing some upgrades, trying to wrap some things up on my old side business. I'm essentially going to try and close that down because it really hasn't been doing too much and it's just expensive keeping an LLC and a business open. So trying to manage and wrinkle that a little bit in my free time and save a little bit of money and taxes and all that stuff moving forward.

TJ Miller (01:20)
Yeah.

Chris Gmyr (01:21)
Yeah, and just crunching away at work doing a lot of API stuff, AI, like I mentioned last week, doing a presentation, working on that for next Tuesday. So yeah, just a lot of balls in the air, working on a bunch of random things and all that. So yeah, a little crazy.

TJ Miller (01:34)
Yeah.

Yeah. Yeah, man. It's, I'm glad to hear your son's doing well with that. it's always like stressful situations, anything like medical. I totally understand them swimming in it over here. so yeah, I'm really glad to hear that's going well. And then, yeah, we're, we've got a bunch of snow too. ⁓ we haven't had any snow days, but like, we've got snow sticking around and it's been pretty bitter cold. So,

I'd honestly, I'd take more snow, but I'm awful like that, I don't know.

Chris Gmyr (02:10)
Yeah, as long as you can go out and play in it.

TJ Miller (02:12)
Yeah, right. Exactly. So, ⁓ man, I don't know. It's been, I feel so much like I'm in the circus, like with spinning plates on sticks and balancing a bunch of those all at once right now, man, very much understand the, having a lot of balls in the air right now. That's, I'm just.

Chris Gmyr (02:13)
Yeah, so what's new with you?

TJ Miller (02:32)
We've had a bunch of like medical stuff going on around the house with my wife and that's been super stressful. Still like banging away on Iris and like continuing to evolve that and like figure out what I'm going to do with it. And then I haven't spent much time with Prism, but like I want to, there's definitely a couple of features I want to get added. And then there's some PRs I really, really want to merge.

Some people have added some new providers and I want to get those in pretty quick here. So this, this weekend I think is going to be an investment in Prism and getting caught up there. So I've got some cool Iris stuff to talk about a little later. so just, you know, busy with GeoCodeo stuff too. We're just shipping like crazy over there. So there's a whole bunch of cool projects going on and,

just wrestling mental health, man. Lots of, lots of stress, lots of anxiety, lots of imposter syndrome and stuff going around. So, unsettled seas, but we're, still together. We're still sailing. We're, we're still doing, doing the things. So yeah.

Chris Gmyr (03:32)
Yep, that's all you can do

sometimes is just hour by hour, day to day, and just try and get through it. I you can.

TJ Miller (03:37)
It is, it is very

much, yeah, it is very much like hour by hour and then at best day by day. I'm trying to get to like week by week, but that's, that seems like a stretch at the moment. So it's, you know, life goes through seasons and I'm fucking living through it right now.

Chris Gmyr (03:55)
Yep,

yep. Some seasons are better than others for sure.

TJ Miller (03:57)
Yeah, yeah, and we're in the middle of a rough one, but it is, uh, it's just life, man. Um, so cool on, on the coffee front, I only have, I don't have much to talk about, but I do, I am in a predicament. Um, my current like routine is I wake up, make the French press, split that between my wife's thermos and my thermos. And then she's got coffee whenever she wakes up.

because I'm typically up early because I got to get the kid to school. So I'll do the like half a French press. And then I normally have just like store bought cold brew. And I'll do my second cup is like cold brew. Or if I'm like really feeling spicy, I'll do like a monster is my second one. But like I'm out of both. And so I'm just running on my like half French press.

And I'm too stubborn to make another, so I'm definitely dragging this morning.

Chris Gmyr (04:52)
Yeah, well, might have to pull the trigger on that and make another one. And then if you make a full French press, then you can drink half today, save the other half for tomorrow. You got your built-in cold brew for tomorrow.

TJ Miller (04:57)
⁓ I don't know.

Look at you with all these smart ideas that I don't think about. Yeah, yeah. It's something like that. I don't know. I'm probably just going to run to the store when we're done and get a couple of monsters. Yeah, you know.

Chris Gmyr (05:07)
You

Yeah, that works too. Yep.

TJ Miller (05:15)
Yeah, my son's been on me. He's like, dad, you're addicted to monsters. I'm like, no, but I'm just addicted to caffeine and you know, that's it is what it is. I'll take it however I can get it. Yeah. Yeah. So cool, man. I see a really cool card on our board for things to talk about here of, Laravel shift and Claude. Like I think I'm really interested to hear what you've got here. This is, ⁓

Chris Gmyr (05:25)
Yeah, yeah, I'm not a quitter, so.

TJ Miller (05:43)
I don't know, I'm curious. I think this is gonna be great. And like, I can already see the strong pairing between the two.

Chris Gmyr (05:51)
Yeah, yeah, for sure. So Laravel Shift, for those of you who don't know, it's a hosted service. And you can pay for plans and whatnot that essentially upgrades your Laravel code base to the latest and greatest or a different version. Or there's a couple other shifts in there, too, for Tailwind, Livewire, and a handful of other things in the Laravel ecosystem.

TJ Miller (06:17)
Yeah, one of my favorites is the pest, the pest one. Getting you converted from PHP unit or desk over to pest test. So nice.

Chris Gmyr (06:24)
Yep. Yeah.

Yeah, for sure. So the processes is you basically log in to GitHub or whatever your Git provider is, select the repo that you want, select the branch that you want upgraded, and you say basically, I want this Laravel 11 application to go to 12. You pay whatever one-time fee is, or they have plans on there too. So if you have a lot of repos or whatever.

You can do that. So you push the button to kick off the shift and it basically goes and chunks through all of the upgrades and changes that you need. It will automatically commit those to the branch and it'll raise any sort of potential issues or things that it thinks that you should check out in individual code comments. depending on how

like the size of your application, you could either get like a few comments or you could get like a whole bunch. So at our last place, Curology was a massive Laravel application. And we'd get so many comments and they'd have a checklist and each of those comments of files that you need to check or like, hey, I can't figure out if it's this way or that way. So we'd have like hundred files and some of these comments and just take forever to go through and adjust.

For smaller projects, you're not going to have that much. But it's still, even though Shift does take a lot off the table as far as work, there's still a handful of things that you have to go through manually for, or even find different versions of packages that you need to swap to, because one doesn't handle the newest version of Laravel or PHP or whatever the upgrade is that you're working on. So I've started working on a couple of these old applications for

TJ Miller (08:04)
Mm-hmm.

Chris Gmyr (08:10)
I only have like two side clients that I don't really do much for, which is why I'm kind of closing down the business. So I'm like, OK, you guys are going to take over your hosting, because I was doing that, just on on Poyer and Forge. But it's like, here, go sign up for Cloud. I'll get these things updated when I get a chance. And then we'll just push you over to Cloud and hand over all the files and code and whatever. So I'm trying to get these couple of applications in a good spot.

Both of them are, we're at Laravel 10. One was using Nova. Another is using like a custom LiveWire admin and a whole bunch of packages and plugins and Stripe and all this stuff with like Cashier and lot more involved. So I was able to run through Shift for the large one.

And basically augment that with cloud code and be like, OK, the shift is done. Go look at the comments. Go look at the code. And basically fix everything that it calls out, or at least investigate everything that it calls out. And then it just kind of goes and runs. 10 minutes, it pings me. And then it's like, OK, here's what we had to do. Here's what changed. Here's what wasn't covered in shift. And you're now ready to proceed to the next step. Because before we started all of this, which I probably should have started with, is like,

TJ Miller (09:14)
Yeah.

Chris Gmyr (09:31)
Plan mode for here's the upgrade that I It's at Laravel 10. I wanted to Laravel 12. It's on PHP 8.1. I wanted to 8.4 and like Probably five or six like general steps like that. I think it's on like live wire 2 it needs to go to 4 It was on Tailwind 2 needs to go to 4 Upgrade all the front-end stuff. So it's like a whole handful of steps It went through and investigated all that stuff that needed to be done did a bunch of web searches looked at

⁓ release notes and upgrade guides and all that stuff and put this whole plan together and basically said like, okay, here's the steps that you are going to use Laravel shifts for. So you just buy those one off. Here's the manual things that like we'll have to do between these phases and then we'll finish up and you'll be fully upgraded. So yeah, so that has been a huge time saver of just like between Laravel shift and Claude filling in the gaps and then me.

TJ Miller (10:17)
That's sick.

Chris Gmyr (10:27)
like just checking things here and there. And then once we get through all of the different steps, I'll have to go through and manually test a bunch of things too. Because even though we have a ton of tests in the test suite, there's just a lot of things that call out to Striper with webhooks or different one-off things here and there. And just make sure all the front-end interactions are still working OK and all that from all the front-end upgrades.

There's still a bunch of work that needs to be done, but this is taking so much less time compared to doing it previously without Claude code in the mix. yeah, highly recommend pairing these tools together and saving you a bunch of time. So it's been working out really well so far.

TJ Miller (11:14)
Dude, that's so sick. That's like such a wonderful workflow. and that's, think, God, that's just such a powerful workflow. Yeah. I don't think it makes sense to, like, I think I've seen stuff out there of like, yeah, well, like, like question the relevancy of Laravel shift when you could just point, you know, like Claude code at the release notes and say, yeah, upgrade me.

You know, but I think there's so much that J. Mac takes into consideration when he like makes these shifts that I would so much rather go through shift and then have Claude to clean up than like try to have Claude do a shift for me basically. And there are there's just like a lot to consider it. I think J. Mac does such a good job of like making those considerations and really knows this process intimately that like there's just.

There's so much trust that I have in a shift. And taking a step back to about something you said earlier about like shifts being like some kind of like a few comments or a lot of comments, I think it's not just like the scale of the application, right? Like, urology was a really big application, right? Like shift can have pretty painless shifts on large applications, but I think

Like one of the key things is how close do you stay to the Laravel way of doing things? Like how idiomatic are you with the framework and like the closer you are working in harmony with the framework, feel like the easier and like the easier the shifts going to be, the less, the least, less comments you're going to get about doing stuff. And that was something we really battled at with curology was there was like, there was so much fighting the framework inside of that code base.

that I think that really contributed to making the shifts very painful.

Chris Gmyr (13:04)
Yes, that is a good point. We customized a lot of it. And it it started off as like a 4.0 or 4.2 application. And I forgot what version it was on when we left. What's the band line?

nine or 10. Or I think we wanted to get up to 10. Yeah, it must have been on nine or something like that. But yeah, like a long time of upgrades and doing things like very custom way. Some things that just like weren't available in the framework at whatever time and just kind of gets dragged along to these upgrades and never really unwound. And then like other things get built on it. So it's a lot harder.

TJ Miller (13:21)
It was either nine or 10.

Chris Gmyr (13:48)
do that when you're not being able to put a lot of time into maintaining that. But yeah, to your point, like keeping it as code and implementation parity to what the framework intends, it's going to be a lot less work to upgrade those over time.

TJ Miller (13:53)
Yeah, but in

Yeah.

Follow conventions, right? Follow Laravel framework conventions and just put things where they belong and be mindful of your customizations and isolating things and how much you're hacking on the framework. Those all are factors.

Chris Gmyr (14:22)
Yep, yep, 100%. And then also to your other comment of trusting shift, 100 % on that. in my, or the plan that Klaon and I came up with initially kind of broke out the LiveWire upgrades and like Stripe and a Cashear and a few other things into like separate phases where.

the to 11 shift actually did that all at once. And Claude was like, hey, it kind of jumped ahead. Would you rather continue moving forward via shift? Or do you want me to back these out and implement our plan as intended? It's like, nope. I addressed shifts. Please adjust our plan to move forward with the shift. So yeah, even seeing that coming up in a relatively smaller.

application to. So yeah, going pretty smoothly so far. And it's been able to pick up a bunch of different package changes and dependency changes, upgrading the Stripe underlying dependency, because that's a handful of years old now. So double checking our usage to what's actually going on in the application.

what we need to do so it has all that mapped out as well which stripe upgrades make me nervous anyways but you just kind of got to do them but it's also funny like every time that I do any sort of upgrade or a shift it just makes me shake my head on like all the dependencies that we sometimes bring in it's like ⁓ there's a package to do you know x y and z like I'll just put that in

TJ Miller (15:44)
yeah.

Chris Gmyr (16:02)
And then after seeing so many upgrades, it's like, well, this fell off and no longer supported. Or Shift has a special branch that you can bring in for compatibility. Because a lot of it is just like a version change for Laravel, but no functionality needs to be done. But it's like every single upgrade and change, there's multiple dependencies that are no longer compatible. Or a tool just falls off the face of the earth and.

It just makes me want to rip out all the dependencies and build small custom things as needed and go from there. Open source and dependencies are great when they work, but the longevity of them, especially for a super long running project, just gets a lot more painful.

TJ Miller (16:49)
Dude, that's like a whole conversation topic right there on like what, what Claude code means for open source at this point and like on a lot of different vectors. But, that definitely brings an interesting discussion up around like, yeah, pulling in packages or just having like Claude build the thing that you need because there's oftentimes like packages will need to support.

Chris Gmyr (16:53)
100%.

TJ Miller (17:11)
or will support like a wide variety of things when maybe you only need like a very discrete set of that piece of functionality. You're now bringing in all this stuff just for like this little piece where you could just have Claude build that piece for you. It's now part of your application. You're maintaining it. You don't have to worry about upgrading it. I think there's, um, I think it's going be interesting to see what happens over the next like few months to a year and like the impact that has on open source projects.

Chris Gmyr (17:39)
Yeah, yeah, it probably depends on the open source project because it's one thing if it's just like no longer maintained and the author just peaced out and not even monitoring the repo or the project anymore compared to like just still kind of involved but not wanting to put a lot of effort into it. I think there's...

TJ Miller (17:53)
Yeah.

Chris Gmyr (18:00)
like a lot of ability for someone to come in via one of these upgrades and say like, hey, I made the changes for you. Just accept the PR and tag it and away you go, where it takes five minutes of work every year to do that, if the maintainer is still willing to be a part of that process. And then everyone else in the open source community can benefit from it.

But if they fall off the cliff and no longer actively maintaining it, it's like, OK, well, do I want to fork this over and take over the maintenance of it? Or like you said before, just build in this little piece of functionality and not have to worry about any sort of custom package or dependency. So it really depends on what it is, how big the feature set is, and maybe how big the community is around the dependency or package.

TJ Miller (18:46)
Yeah, I mean, so it was interesting. had this debate with Iris and I added Google Calendar support to it in a few different ways. And I had that debate of like, do I reach for the Spotsy package and use that? Or do I have clogged code just like make the integration for me inside my code base and like just feed it.

Google API docs and just have it figure out its own thing. And I ended up just sticking with what I've always known for this kind of stuff is I use socialite to handle the OAuth. And then I hand the OAuth off to the Spotty package and just went that route because it was going to be so much quicker for me to integrate with that package and like.

than it was going to be to sit there with Claude, build up this integration. But if I was worried about that package going away at some point, if it wasn't a spotty package and it was just some rando out there, I very well may have had Claude just make our own thing. So yeah, I think it's going to lead to some really interesting decisions over the next little bit.

Chris Gmyr (19:58)
Yep, totally. So yeah, it's been a fun experience to go through because the last time I used Shift was having to do it all manually without Cloud Code or AI or anything like that. So it's like, man, it was nice before, but this is amazing now. And it's so much better. So yeah, if anyone has any Laravel upgrades to do, again, highly recommend Laravel Shift to get the

TJ Miller (20:15)
Yeah.

Chris Gmyr (20:24)
you know, starting, you know, 80, 90 % done and then come in with Claude, clean it up, double check, you know, the, work, the comments and get it done.

TJ Miller (20:33)
Yeah. Yeah, man. Speaking of Claude, like just a little bit of hype training. Did you know there's new Claude models like Eminent at this point?

Chris Gmyr (20:42)
Yeah, I saw that they were about to drop them. Was it today or tomorrow or?

TJ Miller (20:48)
I think,

I think Sonnet five comes out today. Like that's what everybody is really guessing is that it's going to come out today. People were thinking yesterday, uh, it could be tomorrow, but like eminent that there's going to at least be the Sonnet five jump. But I've also heard rumors that we're going to get an Opus 4.6 as well. Um, yeah. And so.

That's kind of crazy. And I'm very, I'm very excited. Like Iris is going to get immediately bumped to Sonnet five, like for sure. Um, Iris right now runs on Sonnet four or five. And so, yeah, we'll, we'll make the jump there and then looking forward to see. And if we do get a new Opus, I mean, even that, even Sonnet five, like rumors are, it's going to be very, very good at coding. um, super excited to see what that means too, but yeah, I'm just, I'm.

Chris Gmyr (21:43)
Yeah, that'd be awesome.

TJ Miller (21:45)
I'm very hype. I've been on the edge of my seat for like days waiting for these to drop. So just, you know, as we've been talking about Claude.

Chris Gmyr (21:53)
Yeah, Anthroopic has just been killing it. They've been pushing a whole bunch of updates to Cloud Code, too, and just changing around how it works, and adding a whole bunch of plugins by default. And just been super nice with the upgrades lately.

TJ Miller (22:05)
Yeah. Yeah,

it's been so solid lately. And like, I feel like pieces of my tool chain are becoming relevant because clog code is just doing a better job at it. You know, like my skill activation hook, like I've been actually finding Claude doing a pretty good job, like loading skills on its own and like remembering to load skills. But I'm also, I'm also being a little bit more.

forward about like prompting it to to like, Hey, let's go. Like I'm trying a new hook that fires after plan mode and after user prompt submit. In addition to my skill activation hook, it's like, it's dead simple. It really just says like, stop what you're doing. Uh, evaluate all available skills and load relevant skills. So anytime you send a message, it gets prompted with that. And anytime it exits plan mode, it gets prompted with that to like, all right, now that you, have a plan.

load all the relevant skills based on that plan. So just trying to like nudge it into like using skills a little bit more consistently. like speaking of skills, man.

Did we talk about this last week? The remotion skill playing around with the creating like release videos for Prism?

Chris Gmyr (23:18)
I don't think we did. You talked about the front end skill for the census website that you put together for work.

TJ Miller (23:24)
Yeah!

Yeah,

dude. I've been, I've been, uh, all in on skills since they came out, really. Like I just, saw the promise there and like, I've been all in on them since it was released. Like, uh, it's been really cool to see everybody else finally like catch up and get on the skill train. But like, I was blown away by the 11 labs, remotion skill.

And like, basically installed that skill into Claude code, told it to look at, like, and gave it the link to the release notes, and GitHub for Prism and was like, yeah, put together a release video for like a release promo video for Prism using like 11 labs for the audio and then remotion for all the animation and everything. And like the video stuff. I.

I knew skills were strong, but like for some reason using that skill and like I pumped out like three or four release videos because I was releasing super hard and I just was like obsessed with doing the release videos. So like I did a handful of them and then I did like a small promo video for Iris and that, I don't know, using that skill and seeing how it was structured, like really unlocked a lot for me as far as like what you can do with skills.

and the possibility of like, it just showed me all these really cool possibilities. ⁓ And so, yeah. And so I've been just like reverse engineering other skills that have been available and kind of what they do. And I'm more convinced than ever that skills are the play. But yeah, that 11 Labs Remotion skill is just wild.

Chris Gmyr (24:49)
Yeah, because those fit. Awesome. Thanks.

TJ Miller (25:07)
Like it's got a little like TypeScript script in there and then like it just got instructions on like how to use it and do it. And so then like you builds it like clog code figures out how to like invoke the script, what the arguments are and all of this stuff and like just does the thing. And it was, I don't know, it was so mind blowing to see it in action. And it's just got like so many gears turning for me. ⁓

Chris Gmyr (25:32)
Yeah, that's

really cool.

TJ Miller (25:34)
And so I've got such a fun project. Like working on anything at Geocodeo right now has been hard because my next project is like really what I want to be working on, which is it looks like we're going to do an official Geocodeo skill. So something that'll be like publicly available to install. like with that, I think we're going to enhance our Geocodeo CLI. ⁓

Chris Gmyr (25:49)
That's it.

TJ Miller (26:00)
Right now it just covers spreadsheet uploads. So I think we're going to enhance the CLI to handle the full breadth of our API. So just like cover our whole API surface inside the CLI, kind of make a couple things to like help it be agentic friendly and then be able to package that with the skill. And maybe even making the skill more transportable and saying, well, here's the CLI, but you can also just use curl and like,

how much more universal can you get than curl? And so that might be interesting to compare those two of, well, this one uses the Geocodeo CLI, and this one just straight up uses curl and documents curl requests to actions, and see which one's more effective. But I think there's so much cooler stuff that we can do with the CLI tool that we wouldn't be able to do with curl. So yeah, very excited about that project.

Kind of just like piggybacking on skills. Like, yeah, I think we're going to do a geocode skill, which could be really cool to do things like, look, I've got this spreadsheet of addresses and I need you to geocode them and then update our CRM tool with the data set. Right. And just like let Claude figure out how to do all of that and like using the geocode skill knows how to like geocode the spreadsheet gets that geocoded and then

like Claude just figures out how to like inject into your data set, maybe using another skill or an MCP tool, or if it's inside a Laravel app, it just like uses Tinker and just drops the data in. There's like, so many interesting ways of using it at that point. So, very excited about getting to work on that. Like, I mean, I love working on CLI tools. Absolutely love that kind of stuff.

Chris Gmyr (27:45)
I know that's your jam.

TJ Miller (27:47)
And then it's AI

on top of it, so I'm just like, this is sick.

Chris Gmyr (27:52)
Yeah,

that's awesome. That sounds right up your alley.

TJ Miller (27:54)
Yeah, So, Claude Chrome, let's hear about this.

Chris Gmyr (27:55)
Very cool.

Yeah, so I finally tinkered with Claude Chrome for a little bit. I tried to do this in co-work, but it didn't seem to like it very well. But yeah, we have been looking at how to save money on groceries a little bit more recently. And just inflation and just groceries in general are crazy anyways. And we try to eat pretty healthy and no like

process stuff and you know just yeah it's expensive either way you go but we a while ago we were a member of Thrive Market it's just ThriveMarket.com they have a bunch of just healthier snacks options pantry stables things like that you have to pay I think it's like 60 bucks or something like that in a month to become a member almost like an online like Costco but for

TJ Miller (28:29)
Yeah.

Chris Gmyr (28:51)
I don't know, just healthier things. So you gotta make sure that you're saving enough money on the individual items for that to be worth it over the year. So what we did is sign up for it again, because we haven't been a part of it for a handful of years now. And basically wanted to move a bunch of stuff over to there that we bought either like locally through the grocery store.

or on Amazon to also try to cut our spending with Amazon as well. So basically we added a whole bunch of things to the Thrive cart. And then I jumped into Claude for Chrome and said, like, hey, based on the items in our cart, go to this other website, which is our local grocery store.

and search for the same or like items and see which ones are cheaper on whichever store. Because then if they're cheaper locally, we'll just keep it on our local grocery list. But otherwise, we'll order it maybe monthly or every other month through Thrive. So it went through. We had a whole bunch of stuff on there. And it chunked through all the items, did all the searches for the local grocery store.

TJ Miller (30:04)
Dang!

Chris Gmyr (30:05)
with either similar or very similar items to it. So like, hey, it's not this Thrive brand, like olive oil. It's this other one. But it's $0.50 cheaper at the grocery store compared to Thrive. but this is $2 cheaper on Thrive. ⁓

and went through and said, OK, these are the things that you're going to keep in your ThriveCart, and here's the things that you're just going to pick up locally at your next shopping trip. And I was like, nice. I didn't have to do all that searching on my own. I just kind of did it and just went through all these searches and took a huge chunk of time off doing all that work manually. So I thought that was great.

TJ Miller (30:47)
yeah, that

would have been horrible research to do too. my gosh. Like that would have been so painful. What a great use case. I love it. Like I feel like I've always struggled with like use cases for AI in the browser. Like it's just, it's never clicked for me based on the way that I use things, but that is such a perfect use case. Like love that.

Chris Gmyr (30:51)
Yeah.

Yeah, yeah, because I've been wanting to, I know we talked about it a while ago, but I've been wanting to actually use it for a handful of things more. But it's just like, I don't know, just felt weird doing it. And it's definitely not as smooth as the Cloud AI application, or especially Cloud Code. But yeah, just letting it, giving it acceptance and just letting it run through.

The permissions were a little weird because it kept on asking me like oh do you want to read this website? you want we read this website like yes, I already gave you the yes like just go do it So I don't know like if it has to do like for each individual URL it comes to like it didn't necessarily accept it for the whole domain which is weird, but it goes through and like takes a bunch of screenshots so it can like compare the information and all that stuff so

I don't know if just the permissions are way different in Chrome and what it's doing like in the agent, but it was a little weird, but it did work and the results came out really well. So yeah, I'll be tinkering with it a little bit more for other tests that we have going on.

TJ Miller (32:19)
Yeah, I'm sure Chrome permissioning is just a disaster. I'm sure that experience is about as good as it can be.

Chris Gmyr (32:24)
Yeah.

Yep, yep, totally.

TJ Miller (32:30)
Yeah, sick man. So, Iris and prism updates. So like, talked a little bit about it. ⁓

talked a little bit about it earlier and like the beginning, like Prism haven't done a ton of work on it lately. I've got a couple things in the pipeline that I really want to get done. like hoping to push hard on that this weekend. Iris has taken like an interesting turn. Like I was really hoping to launch it this week and like make the sponsorship level, you know, active and get people like buying it and stuff. But,

I've just been like filled with so much doubt right now on it between like open claw and like pricing for it. And, I've really just struggled with like, know there's value somewhere inside of here. And like, I've really struggled with like positioning of like what Iris is, what it isn't. And so I think I'm getting a little clearer about.

how to position Iris. And I think even what I might do is like, might try to open a few slots to like get people in the door like earlier access and like lower the price even a little bit more than I was wanting to. ⁓

Chris Gmyr (33:44)
Mm-hmm.

TJ Miller (33:46)
So I've just, I don't know, I've, I was going to launch this week, but like, I've just been really doubtful, um, about it all. So we'll see. did, I did a really, really fun experiment with Iris though. Um, yesterday I was, was it yesterday? Yeah, it was yesterday. Um, yesterday morning, like,

was yesterday morning the night before? don't know. Within the last couple days, it was like after work, I was just hanging out, thinking about, thinking through some of this stuff and looking at open claw. Iris isn't open claw. It's not intended to be that way. But you could build open claw on top of Iris. I've always thought that it's extensible in a way that you can do that.

And so I was just like sitting there and I just got really inspired to build a shell access tool for Iris. So like a way for it to use the shell on my local machine. And so I could just like spin up like artisan serve. And it's just like, yeah, it can like run commands. And so like the, the shell tool itself is like really super simple. you takes in two parameters takes in, the command and a timeout. like.

Chris Gmyr (34:50)
Mm-hmm.

TJ Miller (35:05)
Iris can set its own timeout expectations for the command up to a configurable max timeout. But...

The other half of it was that it converts the output into markdown output. So it takes the command output, converts it to like a markdown response so that it's just easily digestible by Iris. And so really super simple, but I was wondering how flexible it was. I was like, hey, Iris, I just gave you shell access. Stretch your legs, test it out.

And the first thing it did is was like starting to like crawl its own code base and like, look at it. It's a Laravel app. So it was like looking at it's like own code base and it's Laravel app. And it's like, wow, you've got like this stuff set up and like, this is really cool. I'm like, wow, this is wild. And I wanted to take it a step further. So I gave it a very basic, like agent delegate tool where it's that's also powered by prism, but it can like delegate work off to this separate agent.

Just that way it kind of can act as a manager, like Iris can act as a manager for its own sub agents. And so I gave it like a super simple, very naive implementation of an agent that like a sub agent it can use. And then I wanted to like, see how close to open claw it was. So I went to skills.sh, which is like the agent skill directory, that Vercell hosts.

And it's got like skills galore on there. So I went and found the official 11 lab skill and just sent a link to IRS and said, here's this skill. I'm going to be very vague about what I want from you, but surprise me. And just sent it the link to the skill. And like, that was the only prompting that I gave it. So it went and like looked at that 11 lab skill came back.

like spun up, did it like ran a couple shell commands spun up a sub agent. And like the next thing I know, I have an MP3 file sitting in my home directory of like Iris talking to me. that was like just so wild that like I didn't

build a command, I didn't do anything. just was like, yeah, here's the 11 lab skill. Like here's a link to the skill. Didn't even install the skill locally, just like gave it a link to the skill. and it just went for it. And then I was like, all right, well we have Claude code installed locally. Like,

there's two different things. like, try using like one of the skills I have installed for Claude code. Just like went through the directory, found the skill and like used it, which was nuts. And then I was like, well, don't forget you also have access to headless Claude code if you need to like, you know, leverage Claude code as a sub agent. like went and like used Claude code as its own sub agent to like do something else. This is just.

absolutely bonkers, that like what it can do and figure out just by giving it shell access. Like I was able to give it a link to a GitHub PR and instead of like opening the web browser and going to browse it used the GitHub CLI tool. And it was like, like Iris was just like, wow, like, I can interact with your whole GitHub account now. Like, that's crazy. I'm like, yeah, that is nuts. You know?

And so I, I dunno, man, like that I think takes Iris to like a whole nother level. It still doesn't like help me with like positioning or anything, but like, I thought that was just like so crazy to like implement that inside an Irish. So I'm shipping that to, I'm shipping the, the basic sub agent in the, CLI tool. Um, I'm going to push that up like sometime today and share that out of like, yeah, this is, this is.

it's now got shell access. So if you want to like put it on a Forge VPS and start treating it like open claw, you should be able to do that. Like it should be able to like figure out how to use skills on its own. And I might take a pass at like adding like proper skill support to it, but it, it can just figure it also can just figure out how to use skills, right? They're just like,

it can figure out how to use skills just in the same way that cloud codes, cloud code figures out how to use skills. You just have to tell it to go look for it instead of cloud code knowing like it's the skills are registered and exposed to it. So like that's the piece that I would have to add to Iris is that like it would look in your dot agents directory for skills and like add that to a prompt. like that, that's always available, but that's also

that's something you could build right now with Iris. The building blocks are there to build a skill prompt with not a lot of code. So it's very achievable to do that right now. And so that's where I come back to Iris has, there's value in Iris, but positioning has been really tough, especially because of OpenClaw. I was kind of going to position that it is like,

tiered positioning of like first and foremost, it's a usable application, right? It's a usable chat application with these really interesting memory features, but it's also like very customizable. So you can build your own customized chat agent and have access to this like really unique set of like memory tools and like all this visibility into the system. so like, it's this like

usable application, but then it's also a learning resource too, right? Like it's, I feel like it's very idiomatic Laravel. So like, if you want to see like a fully fledged Laravel application, like this has got all the bells and whistles. It's got like Git hooks. It's got CI, it's got browser tests. It's got regular tests. Like, it's, it's, it's I've deployed it on cloud. Like it's,

got all the bells and whistles. like it serves as like, I think a good example of an idiomatic Laravel app. But it also like we use Prism in so many different ways. We use streaming output, we use text output, we use structured output in like, I think, very like smart and interesting ways. You know, we do, we don't do audio yet.

But we do image generation. like, that's all like great examples of like how to use Prism. But we're doing semantic retrieval. We're doing context injection with the semantic retrieval. We're doing embeddings. So like, it's just this place to like, get to learn how to like build these AI systems in I think, decent and interesting ways.

And then it also serves as like an example of what you can do with Claude code and a Laravel app. Like I've tried to make sure that it's not AI slop and that it's like solid maintainable code, but also completely vibed with Claude code. like it's a learning example of like what you can do with Laravel and Claude code, but I'm also shipping all of my harnessing around Claude code with it too. So.

whatever skills I'm using are built into the app, whatever prompts I'm using, whatever hooks I'm using at the time, like that's all built into this app. So like you're also having a learning opportunity around like effective uses of cloud code inside of a Laravel application.

Chris Gmyr (42:15)
Yeah. I think you should just ship it, get it out, get some people in there. Because just the learning opportunity of, like you said, going through and seeing all these ⁓ tools and pieces put together and a working application that people can tinker with and see how it works is huge.

TJ Miller (42:34)
Yeah. And I've built like a bunch of visibility into the system too. So as you're like poking around the UI, it's got like, it's showing you like your token count, the distribution of where tokens are being spent. it's like surfacing, memory stuff for you. like it's like rolling up stats and like insights into the system and into its storage and all the systems. so like, I dunno, it's, I've, I've really started to like pivoted away from

a little bit of like, it's a functional extendable app and more towards like, yeah, it's learning opportunities. And I definitely want to do like walkthrough videos and stuff of like, let's walk through architecture patterns. Let's walk through the cloud code setup. And so I want to like pair like a small video course along with this of like deep dives and just explaining the way we're doing things. But also it's like,

It's my thesis playground, right? Like I'm not like shipping Iris and like, this is a fully fledged product. Like you're also buying into the journey of like what this becomes and me applying.

everything that I know like to this code base. like, this is definitely like me applying everything I've learned to this point about semantic memory, about building AI systems. this is like you're, you're buying into like a slice, like a view into my brain basically. Cause like, this is just like how I think about things. And I think there's value to all of that, but like, what's the value?

Chris Gmyr (44:01)
Yeah, 100%.

TJ Miller (44:04)
And like trying to convert that to like how much to charge for it is really challenging. And like, I've, I've really struggled with like the monetary value in it and like in comparing it to courses and what courses cost and look, but like, it's not necessarily a course, but these courses also aren't necessarily shipping with fully fledged applications that are like usable too. So.

Chris Gmyr (44:04)
Thank

TJ Miller (44:28)
I don't know. I've taken a step back and really just tried to evaluate positioning a little better.

and everything, but I've just been, I got slapped with like so much doubt in, in the whole thing. I've got a couple people who I just gave access to Iris to, and they're like poking around and, helping me ideate a little bit on it. But, I think, I think what I might do early, I think what I might do with my newsletter is if you're subscribed to my newsletter, I might do a special tier for like.

Insider folks and like send that out to my newsletter and like post that in whoever's in the discord like the prism discord, which I announced and open up access to you,

I think I might just give like early, early access to those folks at like a lower price than what I want to go public at and just kind of gauge interest for people who are interested in like what I'm doing. and start there and then maybe build up to a little bit more, maybe more expensive public launch. Like, I don't know. So I might soft launch to like, yeah, like people who are interested in following along with the journey. like.

Chris Gmyr (45:35)
Mm-hmm.

TJ Miller (45:36)
And I'll be, I'll be honest with the listeners of this podcast that I, I've really struggled with that. Like I've really struggled with like a lot of.

self-doubt and like...

trying to envision what that does mean for Prism. know, so the layer of AISDK is built on top of Prism to a certain extent. like, it's using like, it's using Prism under the hood, is great. And I'm like really humbled by that. But at the same time, like, what does that mean for Prism? You know?

I think I have still a lot of like really interesting ideas in the can to like build on Prism and do stuff with. I don't think by any means that the Laravel AI SDK means Prism's going away. I think there's still going to be people who like...

Like I haven't seen the Laravel AISDK yet, but like the way I've envisioned it is that it's like a higher level abstraction on top of Prism. And I think there's probably still going to be use cases where you're going to like want the lower level abstraction to build more custom things. So I think there's still definitely like a place to use Prism directly. But I think part of the positioning for Prism 2 needs to be, how can I be the best piece of infrastructure code to...

empower the Laravel AISDK to like be what it is and like be more powerful and more effective. So there's like, I think kind of like this dual mission now for Prism of like, yes, I still want to like, keep it very usable by people and continue to expand on it and, you know, make it more stable and

add more providers and, you know, but also I want to be an effective piece of the ecosystem too. so Prism's not going anywhere. Like it, I want, I want to get to a place at least, at least mentally for me, I want to get to a very like harmonious place with the Laravel AI SDK, right? And like, I think there's a lot of space for both to exist together. And since they're already like integrated, right, there's, there's

Chris Gmyr (47:34)
Yeah.

TJ Miller (47:43)
already some like harmony in place. So yeah, I felt like I kind of needed to address that. I've got places like the Discord and on GitHub, like I need to address this and it's probably going to be a blog post this weekend and I'll talk about it again in the newsletter. But I felt, I just like, felt the need to say something on the podcast too.

Chris Gmyr (48:02)
Yeah, that's a good point. Laravel does a really good job of abstracting away a lot of those lower level things that probably most people don't need to think about. It's like the 80%. The 80 % don't need all the bells and whistles of the lower level package or language of what it's doing. And we see this with Eloquent. We see it with the file handling.

And it's just a lot nicer to work with in a lot of different ways, but also simpler. But in your application, you might not want simple all the time. You might want to dive down into the lower levels to do that with Prism, with Flysystem, with whatever that these packages and abstractions bring in. So I think even though it's unfortunate that you're potentially losing

a little bit of visibility because people aren't really just installing the Prism package, right? They're going to be installing like the Laravel SDK for AI, which then has a dependency for Prism. So you're losing a little bit of visibility into Prism, into like you as a maintainer. But I think your call to like supporting the infrastructure as code and supporting

the Laravel SDK and Laravel, I think it'll just continue to improve that space and also Prism in yourself, you know, as well. hopefully you keep some visibility within that in the new Laravel space. But it's still a huge asset to Laravel for PHP and what people are doing in this AI space, you know, thanks to

Thanks to you in prison.

TJ Miller (49:41)
Yeah, no, I really appreciate that. like, and look, I'm, not against the Laravel AISDK. Like we're gonna, we're gonna experiment with it. We're gonna play with it. We'll be putting out content about it. Like I'm definitely going to be invested in it for sure. but I think there's still a bright future for Prism and like I have.

plenty of ideas to still hack away at. And hopefully those ideas also inspire things inside of the Laravel AISDK. we can just become this harmonious machine of I've got an idea and implement it. And then that gives Taylor an idea and they implement it. And...

You know, there's I think some like really cool interactions that'll be able to take place there too. yeah, Prism's not going anywhere. I'm still inspired and interested and invested. so we'll, we'll keep that train going.

Chris Gmyr (50:28)
Yeah, 100%. Sounds great. Well, on that note, I want to wrap this up.

TJ Miller (50:33)
Yeah, let's wrap up, man. So thank you everyone so much for listening to the Slightly Caffeinated podcast. Show notes, including all the links of things we talked about in social channels are down below and also available at slightlycaffeinated.fm. If you have questions for us, content suggestions or anything else, go to the Ask a Questions page on our site and we will feature it and talk about it on an upcoming episode. So thank you all so much for listening. We will catch you next week.

Creators and Guests

Chris Gmyr
Host
Chris Gmyr
Husband, dad, & grilling aficionado. Loves Laravel & coffee. Staff Engineer @ Rula | TrianglePHP Co-Organizer
TJ Miller
Host
TJ Miller
Dreamer ⋅ ADHD advocate ⋅ Laravel astronaut ⋅ Building Prism ⋅ Principal at Geocodio ⋅ Thoughts are mine!
Laravel Shift, Claude Shopping, and Prism Forever
Broadcast by