Laravel iOS, TikTok, Prism Updates

Chris Gmyr (00:00)
Hey, welcome back to the slightly caffeinated podcast. I'm Chris Gmyr

TJ Miller (00:03)
I'm TJ Miller.

Chris Gmyr (00:05)
Hey TJ, so what's up in your world?

TJ Miller (00:07)
man, I'm just 3D printing everything between, between myself and my son. just, that thing is still been running nearly nonstop. Like we're right now we're printing a giant rocktopus. So, the rock head, like Dwayne Johnson, with octopus, like he's got like his head neck and then like octopus tentacles. And it's for one of his teachers. So like.

Chris Gmyr (00:32)
nice. That's

awesome.

TJ Miller (00:33)
Yeah. And then, some other cool stuff we've printed. printed like a super dope, like little phone stand for my desk. sold my first print, sold a, I printed a like galaxy sparkly glittery, Gengar for my desk. And then, someone through Instagram saw that and sent me a DM was like, I gotta have one. How much? So sold, sold a, sold a 3d print, which is fun.

Yeah, I think it it covers like three quarters of the cost of a spool of filament. So I'm going to buy myself like a new roll of that glittery purple and I'm going to print a Gengar the size of a basketball. So like it's crazy. It's going to be like I think it said it was like a three day print. So this is going to be like the first like real, real big, monstrous one. And it's going to take almost an entire spool of filament. So should be.

Chris Gmyr (01:19)
wow.

TJ Miller (01:28)
Should be interesting to see that, but I think that'd be a fun one.

Chris Gmyr (01:31)
Man, that's huge. And the printer is that tall that it can print something that big? I would assume yes, because you're going to do it. But how big can you print something on?

TJ Miller (01:43)
That seems to be about maximum size. Like, I've got to kind of even turn it a little bit at an angle to fit on the build plate and into the printer enclosure. But it's pretty much going to max out the printer size-wise.

Chris Gmyr (01:59)
I guess you could do it in multiple pieces if you had to. If you wanted to double that size, you would just do the bottom half and then top half and then do some CAD little fingers or something to piece them together and glue it or something like that. I've seen that in different videos too.

TJ Miller (02:14)
Yep. Yeah, that's I've got a I want to print a giant like gigantic blastoise. And that's basically how you do it is you get sliced into like quarters and maybe like, I guess at that scale, even a little bit more than just quarters. like, yeah, you you end up slicing it in out and then like you build in like little connectors and like you connect and glue it all together. And then like

You're still going to have, you're going to have like seams at that point. So there's like a couple of routes to go, to kind of get rid of the like print lines and everything. guess the, haven't actually researched it, but from what I've gathered, just like through Instagram stories and whatever, is that like people will use like wood filler. So you coat the entire thing in wood filler and then you coat over the top of the wood filler with,

some sort of like resin and now you get rid of the bill lines and you get this like super smooth surface. So for the big like Blastoise print, that's maybe what I'll do is like instead of like printing it in all the different colors, like print it all in like white or something and then like paint the thing. But I'm really bad at like the model painting also. So I don't know what I'm going to do. I kind of just want to like print the thing in the actual colors and then I don't know, somehow like just

maybe deal with the model lines, I don't know. But I think it'd be super fun to have this just gigantic, huge blast noise around for funs and giggles, I guess.

Chris Gmyr (03:40)
Yeah, that would be cool. Now you got to get one of those pig-like air spray painters or something like that, like fill it with.

TJ Miller (03:50)
Yeah,

yeah, I go over to Harbor Freight, get myself some like, yeah, like the air spray paint and just go to town on it and like tape everything off nice. I don't know, because I've always, like I've thought about like doing like miniature models and stuff too and like just having fun painting those. I've always like, through middle school and high school, I always took like a ton of art classes and painting was always like a

real weak spot for me, so I don't know. We'll see. I mean, the whole point of getting this like multi-color printer is that I can like print things in multiple colors. So as long as I can like personally deal with the layer lines and like the seams from putting stuff together and like suppress my inner perfectionist, I think I can pull it off.

Chris Gmyr (04:20)
Yeah. Nice.

Yeah, totally. yeah, like with anything, like it'll get better over time and you'll find little tricks that work for you.

TJ Miller (04:48)
Yeah. Yeah, man. and I picked up some like new coffee this weekend from like a local, local joint and, being, being that we're at the slightly caffeinated podcast, I feel like I should bring it up. Bought a bag from like, stump town coffee and then mixing it up. Cause we've been, we've been kind of on the same kick for a while of just like drinking the same stuff and decided to mix it up. And man, it is.

It is good. got to start. I got to kind of start getting back into like rotating like every every bag we go through, like switching up with like a different bag and try some new stuff.

Chris Gmyr (05:22)
Yeah, does Stumptown buy you? Do they have a shop or are they just selling Stumptown in the coffee shop or where you got it from?

TJ Miller (05:30)
So I got it from the grocery store, but they are a local roaster. So they are from the Detroit area, at least like Southeast Michigan area. So it is a local thing, but I got it at the grocery store because I'm too lazy to drive around and go get it. But yeah, pretty stoked about it.

Chris Gmyr (05:45)
Gotcha. Yeah. So I feel like I've

had them before, or at least seen the name a handful of times. So yeah, that's why I was asking.

TJ Miller (05:58)
You know, there's a

chance that I had sent you some Stumptown at one point from back when we were doing the coffee trade stuff. That was super fun when we had that going on. So I think there's a good chance I may have sent you a bag of Stumptown.

Chris Gmyr (06:08)
yeah. Yeah.

Yeah, maybe that was when I was from. I'd have to go back and look to see if I kept notes on it or something. But yeah, I definitely recognize the name. That's cool. Switching it up a bit.

TJ Miller (06:23)
Yeah, man.

Yeah, so what's new in your world,

Chris Gmyr (06:26)
Man, not a whole lot. I feel like we're still trying to get back into the whole routine. Had like a little bit of a ice and snow storm over this past weekend. We were supposed to have some family in town, only like some people came in because like flights were canceled and we just basically like hunkered down for the weekend and didn't do too much. couple of plans got, you know, canceled, but...

It was fine to just kind hang out for a little bit more. And then we have Cub Scout Pinewood Derby coming up, not this weekend, but the following weekend. So we have just this weekend to work on the car. And my son decided that this year he wanted to get the slowest car in the pack and not go for speed or anything else like that. The last two or three years we've won

TJ Miller (06:57)
Woo!

Chris Gmyr (07:13)
first place in our den, our smaller group, and then went on to districts and he actually got third place last year in districts for his level. And he's like, now I wanna see if I can go the slowest. Like, okay. But he's gonna be working on the car mostly himself and doing all the things more himself this year instead of me helping him so much. He did a lot.

TJ Miller (07:22)
wow.

Chris Gmyr (07:37)
like the last few years, like even just like cutting and putting the wheels on and giving him more of that responsibility. Cause some, some of those things are like pretty tricky to get in a good spot. So we'll just, mean, if he's going for slowest, like not really too hard to do that, but we'll see, see how goes and see how he feels at the end.

TJ Miller (07:42)
Yeah.

That's a really cool and interesting challenge. I think, yeah, all right, so I've excelled going fast. Let's now flip it and see how slow we can go. I think it's going to be a fun engineering challenge. Everything out there is all about, yeah, how do you make your cars go faster? So man, that'd be fun. I'm just in my head now thinking of all the different designs I could come up with to just make it super awful.

Chris Gmyr (08:13)
Yeah. Cause like.

Yeah,

TJ Miller (08:21)
big bold front face. I don't even know if I'd like

Chris Gmyr (08:21)
because like you still need to... Yeah, yeah, because you still need to...

TJ Miller (08:26)
carve it out and just like put block on wheels, you know?

Chris Gmyr (08:29)
Yeah, yeah, yeah, because you still need to like abide by the rules. Like it still needs to be like under five ounces. All the wheels need to move on their own. You need there's like width and height requirements too. So as long as you stay within all that. But I'm like, can we like, I don't know, nail in the the wheels like a little bit tighter. So yes, they spin, but they don't spin like very well. Or can we like mark up the nails or the axles with

some super gritty sandpaper so it doesn't move as easily, or what kind of crazy stuff that we can do to just make everything go slower and not just only by weight or whatnot. Could you just imagine this car just crawling down the ramp? I don't know. That'd be pretty funny. I don't know.

TJ Miller (09:19)
I think it'd be a fun challenge

to like not mess with the wheels or axles and just like make it all about like how you design the shape of it and like being conscious of like weight. like having like a big bold face. So it's like not aerodynamic and then making it super lightweight so that it like, just, you know, cause that's, that's, remember when we did scouts, that's what like I had like drilled out holes and embedded like tungsten weights along the bottom of the body and

Chris Gmyr (09:33)
Mm-hmm.

TJ Miller (09:46)
like did a bunch of stuff to like make it heavy so that it, you know, gripped and went fast. So I think that's, man, that's like, that's really cool. Kudos, kudos for coming up with that. That's neat.

Chris Gmyr (09:55)
Yeah, yeah.

Yeah, so I mean, we'll see how it goes and we'll see how he feels if he either doesn't get slowest or does get slowest. I don't know. He he tends to be very competitive, so if it doesn't work out, we'll see, you know how that goes. But regardless, it'll be a good learning experience for him, so we'll be working on that more this weekend and you know, see how the project goes.

TJ Miller (10:14)
Yeah.

Yeah, I think that's one thing that like, missed, we only did scouts for, I don't know, like six or eight months. My son just like really wasn't super into it. And it was, um, our den leader, like it was just like, it wasn't as active as I think like other groups are. And so it just kind of like, we kind of fell off. Alice got kind of bored with it. So we just, you know, we, we stopped doing it, but

We did do the Derby, like we stayed long enough in the round, like, and did the Derby and that was a ton of fun. So that's definitely something like, I miss.

Chris Gmyr (10:57)
Yeah, so it'll be fun. So I'll report back in a couple weeks and see how goes.

TJ Miller (11:02)
Yeah. Yeah, man. I think it'll be a blast. I can't wait to hear about it.

Chris Gmyr (11:06)
Yeah, so yeah, that's about all for me. But yeah, thought we could talk about a couple random topics. So one that was kind of going around socials and some other podcasts. And I think he's doing a talk at upcoming Lercon soon is Laravel on iOS. Have you seen any of these updates recently from Simon?

TJ Miller (11:29)
Yes. Simon,

Simon Hamp just crushing it with, with, native PHP and getting it running on iOS. Like super cool. Like I think the PHP project is really interesting. I think like the big key to all of it was getting pre-compiled PHP binaries, which was, which was a challenge. And I think Marcel was, you know, kind of leading the charge with herd getting that nut cracked and

Once that nut got cracked, then like now we've got pre-compiled binaries of PHP to run. So you can just like embed it and shell out to it. So I've been loosely following it because I've got a few like little iOS app ideas and you know, I don't really have the time or space to like learn Swift and other like all like the tool chains in order to make stuff necessary. So if we've got like Laravel running on iOS now, I think.

I think that's going to be super cool. think as of recording today, it's the app is still in the like approval process, like waiting to get approved by Apple. So I'm really interested to see where that goes, man.

Chris Gmyr (12:36)
Yeah, yeah, it'll be pretty cool because all the things that others are doing outside of like the web space. So you know desktop apps like iOS like it's just going to be able to spread Laravel and use the tools that you know and love across like all these other platforms. Because like I know in the past like I've would have loved to build an iOS app, but like you said, like I don't have time to dig into.

Swift or try and wrangle whatever front end application to extract that into one of the other tools. I know there was a bunch before to basically turn your front end app into an iOS or Android application. But it's not the same. It's not.

the Laravel ecosystem. And I know we have a long way to go to put that into iOS, or even there still might be some issues with using Laravel fully. Because I was listening to his podcast, The Bucket, which they've been doing for a little while now, which is another great podcast, Laravel specific and tech and all that, and just the three of them hanging out.

he was saying that the queue system doesn't work on iOS because of how Apple restricts some of the parts of the system. So if you have an iOS app that had to do some background tasks, you would probably have to offload that into a separate web server to do an API call or something like that, have a listener, paying your poll, you know that.

handle it like that. But that might be something that can be overcome later or working with Apple or iOS to add in these features over time. So it's probably not going to be fully 100 % Laravel as we know it within iOS or these other platforms, but it's so much closer to being that and going to be easier for all of us to plug into these tools later and utilize them.

So I think that's super cool.

TJ Miller (14:42)
Yeah, for sure. mean, even just being able to utilize like the MVC approach that like Laravel takes and being able to like work with BladeViews and Tailwind and all of that to like build and interact with the UIs I think would be great. Like if you're still like communicating out to an API to like do various other things, I think that's like totally fine. But just like the amount of power behind

being able to just use like the MVC architecture that we've all come to know and love, I think is massive.

Chris Gmyr (15:17)
Yeah, yeah, that'll be awesome. looking forward to seeing.

TJ Miller (15:20)
Yeah, I can't imagine figuring out

how cues would work. I'm sure that's just so deep in iOS internals that I can't even fathom it, but that'd be cool to see that work.

Chris Gmyr (15:31)
Yeah, and.

Yeah, he he went into like a little bit more detail on like why they don't have that capability right now because you're tied to the CPU so much and then battery power and like they want to restrict the amount of overhead the apps are able to consume and use. So if you have this you know queue running in the background all the time.

or don't have the ability to do some sort of trash cleanup or whatever that could be happening within that app or queue system. You could drain someone's battery or some other wonky stuff could happen based on that. So I think that's probably why they put a cap on all those functionalities to keep the device running as you would expect.

TJ Miller (16:21)
Yeah. And you know, there's, there's apps that I think I know I've seen settings for various apps that are like, yeah, allow it to like run in the background. And so I wonder what that means, you know, for, for that, if there's like, yeah, you can run the cues, but it's not how we're used to a level of like running every minute. You know, it's, might be something a little bit longer periods of like, yeah, you can run, you can like hit it like once every five minutes, you know? And I wonder like, again, like what other restrictions come along with that, but.

Even without the queue system, like I think it's super powerful. And then I think like being able to run Laravel is great, but even if you wanted to run something even smaller and just like work with PHP at like a lower level, I think that's super powerful too. You know, if you want to build something super lightweight and you know, not necessarily have all the overhead of Laravel. Um, I think even just like, yeah, being able to use raw PHP is cool.

Chris Gmyr (17:14)
Yeah, yeah, like.

Yeah, it be like back in the day when it was just raw PHP and HTML, making apps and websites like that. It works.

TJ Miller (17:23)
Mm-hmm.

Yeah, like the equivalent of

an index.php YOLO app out of, know, that's, I think that's just so cool. Like, I, and I've, and I've, I can't remember what it was. There was something I had like a pretty strong idea about building an iOS app. And I went and like learned enough Swift to like get things started. I think this was back when I was like working with AI. Like I want it, like this was before,

there were a lot of like chat apps for iOS. Like I wanted a way to like talk to my AI agents in like an iOS context. And so I started like trying to build a chat app and quickly abandoned it because there were other things I wanted to build. like, it was just, you know, I don't have enough downtime to learn a whole new ecosystem right now. And that was the same thing like back then, like a year and a half ago. not a whole lot's changed.

Chris Gmyr (18:11)
Yeah, totally.

Yep, yep, I hear you there.

TJ Miller (18:19)
And now I've got like Science Olympiad kicking off and I'm coaching the code competition for that. So yeah, even less time.

Chris Gmyr (18:26)
Yeah. How's

that going so far?

TJ Miller (18:29)
Well, I just I had heard it. I had the meet and greet recently. Like last at the tail end of last week had the like coaches meet and greet. And then I found out it was just going to be like I was coaching the code event, which I was super happy about getting because I could I could have coached a number of things. But like I had really kind of put myself down and like, please, please pick me for the coding one. Like I don't.

I don't want to coach anything else, to be honest. so I got, I got put as the coach for that. And then was just going to be me and my son, for the competition. So that was, funny for me, but bummed my son out a lot. Cause like, he was really looking forward to like having a teammate and getting to interact at like a team, a team level. but I just found out last night that, things kind of shifted around. Now he's going to have a teammate.

And that we also now have like an alternate for our team. So we've got a full, we've got a full roster for the, for the group, which brings a little anxiety for me trying to like teach three elementary students, like things about code and like flow control and variables and whatever else. So I've got to, I've got some coaching material I need to get through today. And then we're supposed to start practice this week, but since I just found out.

You know, today's Thursday. I just found out last night that we've got teammates now. We're kind of starting a little behind the gun, but luckily, like Ellis earlier this year, started learning JavaScript. So I think we're going to have a really strong, a strong team, just having him have like a strong understanding of stuff already going into it. Hopefully the kids pick it up pretty quick, but hopefully we have practice starting next week. And it's not.

You know, practice isn't too big of a commitment. It's like an hour a week. But I've got overhead of being the coach of like, there's a workshop I got to go do. There's like, some other coaching stuff to like get through. And then I've got to like get a grasp of all of the content for the competition and like break it down into like these practice sessions so that we have like goals for each practice session of like, all right, today we're learning about variables and like this next one, we're learning about conditionals and.

Chris Gmyr (20:22)
well.

TJ Miller (20:31)
This next one we're learning about operators or whatever order things come in. But I kind of got to like break it down so that we have stuff. It's, it's a little more work than what I signed up for. I thought I was signing up for, but sort of didn't have a choice. I also wanted to compete and we were told as parents, we have to coach. So there we go.

Chris Gmyr (20:57)
Yeah. Well, hey, sounds like a good job for Claude to hear us all these documents, break it down into 10 weeks or something.

TJ Miller (21:04)
a hundred percent. Yeah. No, that is, that is absolutely happening. Yeah. I have

this much time. I've got like 10 practice sessions, break, break this content down into 10 practice sessions and like give me, break, break it down for like a 10 or 11 year old so that like, can like give me bullet points so I can explain it to a 10 or 11 year old, you know? So yeah, it should be all right. guess there's like for the competition.

Chris Gmyr (21:24)
Yep, totally.

TJ Miller (21:29)
I'll grab my handy worksheet here. There's a part one of the competition is like multiple choice questions about all this stuff you'd think of like variables, operators, order of operations, control flow, logical operators and functions. And I think it's, I think it's Python based. So that should be fun. And then like part two is like an online interactive challenge.

and I think that's like drag, think it's drag and drop, like block coding, but I'm not a hundred percent sure. it may be like, I hope it's not writing Python, but we'll see. I've got to, like I said, I've got this like workshop and stuff to go through and hopefully that's got like a little bit more resources for me. So.

Chris Gmyr (22:13)
Yeah, totally.

TJ Miller (22:14)
We'll see.

Chris Gmyr (22:15)
Nice.

TJ Miller (22:15)
I it'll be, you know, I talk about it being like a bunch of work, but I think it's still gonna be a lot of fun. I really enjoy teaching. I think it's gonna be a new challenge. Like I enjoy teaching older folks, like teens, twenties, thirties, like, I don't know. It's gonna be a new experience, like teaching younger kids. So, and I don't know, it's an hour practice, like once a week, hopefully.

Chris Gmyr (22:34)
I'm very right though.

TJ Miller (22:39)
I can get like half an hour of an attention span out of them.

Chris Gmyr (22:44)
Yeah, yeah, and then something

that helps out at least with Scouts because sometimes there's you know some more like book type work you know to do and not always like fun and games but like any anytime that you can make something into a game do it. So I don't know if I don't know you make them into like variables or have them walk through like a maze for like flow control or I don't know something like that like breakdown even ask.

Claude or whatever to like break down this concept and make it into a game for fifth graders or something. Like I'm sure you could probably do something like that to at least break up the hour to get them like up and moving and kind of reset mentally a little bit and then finish off. So I think that would be something fun to do too.

TJ Miller (23:31)
Yeah, yeah. that was a big piece of advice from the other coaches was like, yeah, don't plan on an hour's worth of attention and content. Like, do like, like break it up with like a 10 minute break in between. So you've got like two blocks, give them like 10 minutes of just goofing off and then wrangle them back together and keep on trucking. So, but yeah, definitely like make sure you give them a break somewhere in the middle.

Chris Gmyr (23:56)
Yeah, yeah. Brings snacks,

TJ Miller (24:00)
Yeah.

Yep. That was the other thing is like, yeah, make sure there's snacks. And I think one of the students is like, in the day, like their availability is like 5.30, six o'clock. So definitely gonna have to have snacks for practicing around dinner time.

So yeah, man, I think another fun thing to talk about is TikTok ban going into effect, what, three days, three days from now? It's on Sunday.

Chris Gmyr (24:22)
Yeah, I think so. It's coming up

quick. So I've only seen like a little bit on it, but I know basically like there was some security and privacy concerns because TikTok is run by the Chinese. Well, it's a Chinese company and basically. The Chinese government is inside of all these companies, right? Or that's the basic gist of it, and the US doesn't want. Basically, the Chinese government be able to get.

a bunch of data from all these US citizens and wanting to ban it or they need to sell it to a US based company and then move a bunch of data around and all that. So I know they were talking to Elon possibly for a sale. But yeah, I don't know about that.

TJ Miller (25:05)
I can't even.

Chris Gmyr (25:09)
But I guess the last time I saw about it, was going to be they were going to turn off new downloads from the app store. So no one new could come into the app that way. And it's some sort of time period in the future that it's going to eventually be turned off. But basically, anyone who has the platform or the app will continue to have access for some amount of time.

but as far as I last read, like it's kind of up in the air of what that is and what it entails, but people can start, you know, downloading their, information or exporting, you know, content from there. I think there's like another semi-related app to TikTok that people were starting to go to, but I've never heard of it before. but it's really interesting because there's so many people who

have their business on TikTok and social media now and what happens when one of these things goes down or completely changes the platform and now people are out of, you know, income or, I don't know, finding business and clients for their, you know, local business. I don't know, it's, it's wild to think about, you know, having that big a leverage on top of your business or livelihood like into social media.

It's pretty interesting.

TJ Miller (26:27)
Yeah,

I think it's a good reason to diversify, right? For example, I know when I stream, know Nuno when he streams, we primarily focus on Twitch, but we're also streaming to X, we're also streaming to YouTube. Part of that is trying to meet your audience where they are and the apps that they're in. But also part of that for me is like...

I don't want to be locked into like one, one place only as well. And I think that's like a little bit of this from my understanding is starting Sunday, um, U S users are going to be blocked in app and like just be prompted with being able to like, like, here's a link to the information about the, like the ban and here's how you can like export your data. So like, you'll still be able to export your data, but like starting from

Like I said, from my understanding, starting Sunday, the app's going to start blocking US users.

Chris Gmyr (27:26)
gotcha.

Might have been an update after I last saw it, but yeah, that makes sense.

TJ Miller (27:32)
Yeah, like Sundays, Sunday's the big day, I guess. So I don't know, man. Like I'm, I'm for it from my understanding. The app is like very, very data hungry. Like it just, it has, you know, very pervasive permissions. like when you sign up for the app or like you grant it different, you know, permissions to like get data from your device. Like I, from my understanding, it's like very hungry permission wise and

can like grabs a shit ton of data, which is like partially why I've.

not joined that platform is like I'm, I wouldn't say I'm like.

I wouldn't say I'm like a overly concerned person about like my privacy and like data privacy, but I'm like decently bit like concerned about that kind of stuff. So like that's a big contributing factor to why I've never like never had a TikTok account or anything like that is I just, you know, I'm not comfortable with like those, those permissions. so I overall, like I'm, I'm kind of for it.

it'll be interesting to see like where people flock to. there, think there was a, yeah, like another app that was like starting to gain popularity over it. I'm surprised a lot of people just didn't jump ship over to like Instagram, but there's so much like, I'll scroll through Instagram stories and like, and everything and, and reels. And it seems like there's a fair amount of people like.

It seems like there's a fair amount of TikTok content that makes its way over to the Instagram platform also. So, you know, it's it'll be interesting to see.

Chris Gmyr (29:04)
Yeah, totally. Yeah, I think a lot of bigger influencers

are cross-posing to all the platforms. So I have a, yeah.

TJ Miller (29:13)
And there's YouTube shorts and stuff

like that too, you know, there's, there's other places to go, you know.

Chris Gmyr (29:19)
Yeah, so it'll be interesting to see what happens. If we get to Sunday and they actually do enforce the ban or if something else interesting happens before then that they I don't know extend the timeline or someone's who send to buy it or at least like proposes to buy it like. I don't know, it'll be interesting, cause I don't like we haven't. Really seen. Like a big quick change like this and.

tech for, let's say, a while. Other sites kind of just lose steam and kind of fall by the wayside, but to actually turn something off for an entire country's population, I don't know. That's pretty interesting.

TJ Miller (30:00)
I, while I'm like for it, um, in the exact same breath, like, I think it's an interesting and like sort of scary precedent too, of, you know, like, I think that this is a fairly like just case for doing it, but like, that's not to say that like the next one isn't, you know? And so...

Yeah, it's, it's, I think it, it sets a like kind of scary precedent also for, for censorship and what this means for, for other things moving forward, especially looking at like the incoming, the incoming cabinet and like shift in, in government coming up, like what next week. So I, little.

little concerned also, you know, for what this means for other things moving forward.

Chris Gmyr (30:50)
Yeah, totally. That's a good point too, because setting the precedent is definitely scary for the whole app and the reasons for that. I would have rather taken a different approach in starting to look at the first, the data and the privacy concerns with that. Because I think if you enforce some sort of rules and guidelines around

what data you can or cannot access and be much stricter about that. I think there's definitely a long way that we can go down that path and also start putting some guidelines into like all these algorithms on the social platforms too of like how much data it needs to actually like give you something viable and useful. Also like there's so many issues with like

TJ Miller (31:38)
Yeah, you know-

Chris Gmyr (31:41)
young people and kids and even like basically anyone who interacts with these like algorithms it can bring you down like a very I don't know sometimes scary or Like just Bad routes, you know and with all like mental health and you know all that I think These algorithms and models like should be I don't know tamed a little bit better given

like age or location or so many variables with that. And how do you bridge the gap between true data privacy and useful algorithms? But yeah, I don't know. There's a lot in there for sure.

TJ Miller (32:18)
Yeah. And like, I mean, we've seen time and time again, you know, net neutrality getting shot down. And so it's, it's hard to imagine a world where we like actually, you know, start treating things in that way where we can like set those standards and like uphold standards around like data collection and those types of things. And I may be wrong about this, but I think that

before the ban, right, they were given the option to like do something about the data collection and privacy policies and all of that stuff and like permissions and like either make the changes to your app or you're getting like banned. I think, you know, it just opted for the ban, I guess, but.

Chris Gmyr (33:01)
So I think it was, yeah.

TJ Miller (33:02)
I can't remember. think it's too and I

haven't really kept my finger on the pulse.

Chris Gmyr (33:07)
Yeah, I know one piece of it at one time was first not collecting the data and then having the data stored on US soil and then the control of it. So not having the Chinese government basically control the company behind where the data is stored. So I think just multiple facets with that. But like you said, it's morphed over time.

Watch it too closely because.

It's just going to happen regardless.

TJ Miller (33:32)
Yeah, and I'm not a TikTok user. So like I'm completely

unaffected by all of it outside of just like my concerns, you know, about setting this sort of like precedent on things. It feels kind of like a pseudo GDPR kind of leaning thing of, and we've seen how much that's like affected our world as developers. So.

I know California has been put, it's like starting to put some of that stuff in place, which I'm totally for. so yeah, interesting stuff, man.

Chris Gmyr (34:02)
Yeah, totally.

TJ Miller (34:04)
So you want to talk a little Prism before we wrap up?

Chris Gmyr (34:07)
Sure. Yeah. What do got for us?

TJ Miller (34:08)
Yeah. So, over the weekend, I put out a little, little update video on just kind of where, where Prism stands, where I'm at. You know, I got, I got super burned out. and, you know, mostly just putting a lot of pressure on myself between starting a new job, really wanting to like knock it out of the park there and make sure everyone's like feeling good about, about that engagement and,

There I'm learning heaps of new stuff. We're working on a big migration. We store every request that gets made. And as of a month ago, over a 30-day period, we processed a little over 17 billion requests. we're storing almost all of those requests for usage-based billing, but also for debugging purposes.

Chris Gmyr (34:45)
Yeah.

a lot.

TJ Miller (34:54)
currently using MariaDB with a different database engine under the hood to handle that kind of request load. And that database engine was deprecated, but also it's just not as performant as I think it could be. So we're working on migrating that over to ClickHouse, which has been a super fun project. But ClickHouse is a whole new paradigm. So it's just been a lot of learning.

And so like that and like pushing, trying to like push hard on Prism, just I worked myself into the ground. So over the holidays, I took a two week break and just kind of took a step away and like really stayed away from my computer outside of like 3D printing and doing some like different 3D modeling for prints. And that was, that was a really nice break. feel like this week was the first week that I felt the like the drive and energy come back to like.

the inspiration to work on Prism and, you know, just feeling back to like before the burnout. So, you know, it's it's been nice to kind of come out of that. So I talked a little bit about that, talked a little bit about like upcoming focuses, areas on Prism. The big one was I've been working on this massive refactor primarily around structured output and being able to support structured output for various modes.

for different providers and getting that all to work in a way that I think is like just vibes well. I think we've talked about this. Like I'm a very like emotive programmer. Like it's got a, the code's got to function well, but it's also got to really like feel good. It's got to, it's got to pass the vibe check. And man, I, I can't tell you how many hundreds of lines of code for this refactor I've written and deleted and restarted. And, part of what I talked about in the video is like abandoning this refactor.

but there were pieces of that refactor that I wanted to pull over to the main code base. So as I've been sort of like pulling over some of those pieces, I've realized, I re realized why I was doing the refactor in the first place. and I think that there's some level of that refactor that like, continue, like just needs to happen in order to support structured output.

And we've talked about kind of how Prism works under the hood. We've got like the main methods for like text structured and embeddings. And then like those return these like generator classes, which are really kind of like coordinators for all of the abstractions. pulls all the abstractions together, works with the providers and like generates your like your final output objects. And so like the main methods, for example, like Prism,

Double colon text returns a text generator, and that text generator returns the final text object, but that interacts with the providers, and the providers return provider response objects. So these generators just coordinate through abstractions to make everything work. But the real trick with structured output is now we've got this variability that we have to introduce. So for example, OpenAI.

for structured output, depending on the model and depending on what you want to use, you're either using structured output, you're using what they call JSON mode, which is you add a message to the message change saying, hey, return in JSON. Here's the structure for, here's the schema to return this in. And you also pass a different header flag for like,

or a different flag in the body for like, want this as JSON mode. So it enforces JSON output from the model. And so now we've just got like all this variability in play and then adding in like the tool request loops and everything. It just started getting like out of hand. And right now, like the generator really doesn't have a lot of variability. And so like,

I kind of needed to shift some of the responsibility from these generators to the models or figure out like an abstraction of like how to do that inside of like a single generator. And so I've tried a whole bunch of different things like various strategy patterns and you know, I've tried shifting all of the responsibility, like eliminating the generator step. like generator doesn't exist.

like you call prism double colon text that basically differs immediately to the provider and like the provider instead of returning a provider response now returns the final output object. But that puts a lot of complexity on like each provider. And I could never figure out how to structure these providers in like a way that felt good. So I've kind of like come full circle where I'm like, I'm abandoning this refactor to like, actually I kind of

kind of have to do something here. But I kind of, I woke up this morning with like a new thought on how to approach it while continuing to use the generators. So they're like, I've got like an enum. I think they're like a simple way to, I think a simple way to describe how I think I could move forward. I'm interested for your thoughts on this.

We've got an enum that is for the different various structured output generation modes. We have auto, which is we choose the most optimal one based on the model you've chosen. So it deferred the provider, and we figure out what's going to be the optimal way to go. You can almost always override to a JSON mode, because that's just appending a message to the message chain asking for JSON as your output.

There could be a way where we utilize tools. So it could pass the output to a tool, and the tool does the JSON encoding, which I think I'm going to try to avoid. And so those are really the main two ones. We got a JSON mode, and we have actual structured output, which only a couple of providers really support that.

Chris Gmyr (40:30)
Mm-hmm.

TJ Miller (40:32)
I think we default to auto. We add a new fluent building method for structured output modes. You can choose which mode you want to use, but we default to auto. And then what I think I do is update the generator to check the provider for four methods, if this method exists for JSON mode, right? Or we just pass it as part of the request.

over to the provider of like, here's the mode that they've selected. And then I can kind of have just like a match statement of like, hey, if you, if it matched like, like J's like structured output mode, use the structured output handler. If it matches JSON mode, use the JSON mode handler. so I'm in, and that goes to like, still return a provider response. So it's still returning this like abstraction.

But now we've kind of deferred how that generation gets done somewhat over to the provider side of things. But we still get to kind of use the centralized generator for the main coordination of everything.

Because I think that's kind of like a goal for me is I would love to kind of use this like centralized object for like abstraction coordination because that's still sort of similar to, like I feel like there should be enough abstractions to like standardize the workflows, but still allow the providers to like.

do what they do best and know how to work with the provider at that level. That's an awful lot of code for a podcast, but I think I broke it down in a understandable way.

Chris Gmyr (42:07)
you

Yeah, I think I followed you through that, so I think that will work well. And it's I don't know, I can't. Say that it's like totally far off from where you were before, but it feels. A lot better. And then I would assume that the providers that don't offer structured output like those stub methods with then throw an exception or just. Pass through.

whatever the current request is without doing anything for structured output specifically.

TJ Miller (42:46)
And I

am, I guess to clarify too, I am abandoning tool calls, like tool use for structured output, at least for now, just to simplify things. Like you'll still be able to accomplish like tool-based genera- like more of a agentic generation where it's like, here's the tools, but you would just do like text generation first and then pass that off to structured output to then get your structured output.

Or if you're just doing like a single prompt, like you could just use structured output, like directly, but kind of getting rid of the complexities of like the call loop of, you know, Hey, tool calls have been requested. then I've got to like invoke the tools and then pass that response back to the provider so that it can like continue to do generation. And then all of that, like, I'm just like, I want to get rid of that complexity for now.

something I'll probably go back and reintroduce, but I think it's still

Chris Gmyr (43:46)
Sorry for the interruption into

TJ's Prism Refactor. We had a little bit of technical difficulties so we lost the end of the recording of the episode.

We'll be back next week and we can talk a little bit more about it.

Thanks for listening to the Slightly Caffeinated podcast. Show notes and all the links. Social channels are down below and also available at slightlycaffeinated.fm. Thanks for listening and we'll catch you all next week.

Creators and Guests

Chris Gmyr
Host
Chris Gmyr
Husband, dad, & grilling aficionado. Loves Laravel & coffee. Staff Engineer @ Curology | TrianglePHP Co-Organizer
TJ Miller
Host
TJ Miller
Dreamer ⋅ ADHD advocate ⋅ Laravel astronaut ⋅ Building Prism ⋅ Principal at Geocodio ⋅ Thoughts are mine!
Laravel iOS, TikTok, Prism Updates
Broadcast by