Iris, Plex, and Fine Print Hound
TJ Miller (00:00)
Welcome back to the Slightly Caffeinated Podcast. I'm TJ Miller.
Chris Gmyr (00:03)
and I'm Chris Gmyr
TJ Miller (00:04)
So Chris, what is new in your world?
Chris Gmyr (00:07)
Man, feel like a lot has been going on. I'm still trying to get, I don't know, back up to speed at work. I don't know. feel like, I think we mentioned it the last episode two weeks ago, yeah, just feeling groggy and hard to get back up to speed on all the things that I was working on before the break. But slowly getting there, slowly feeling better about it. I'm sure I'm still doing like, you
fine. But like, it's just, I don't know, my own gauges of that, which is probably out of whack, you know, anyways. But yeah, still getting up to speed with that. I kicked off a couple of new projects at work, which is exciting. Still pushing forward with the AI initiatives, all the tooling, plugins, things like that. So we're getting very close with opening up the floodgates to everyone in engineering using it.
TJ Miller (00:35)
Yeah.
Chris Gmyr (00:58)
I don't know if I mentioned it before, but we're going with AWS Bedrock for Cloud, and Anthropic Models, and using Cloud Code, just because it's in our ecosystem, and don't have to worry about HIPAA, and PHI, and privacy, and all that stuff. So yeah, a couple of little tweaks and changes with that, but generally working pretty good. And I have a handful of teams on it already.
Yeah, so just plug it ahead with that. And I'm sure there'll be lots more like training and learnings when everyone else gets onboarded to it, hopefully by the end of next week. So we'll see about that. Yeah, just trying to do like a handful of scout stuff. We have Pinewood Derby coming up. So we've been working on the car again. ⁓ That is the race is next weekend. So we have one more weekend to work on it.
TJ Miller (01:36)
Yeah.
Chris Gmyr (01:43)
And then the race the following weekend on the 31st. So we'll see how that works out. And then, kind of prepping and hunkering down for who knows what comes through with the weather and ice storms and freezing rain and all that stuff for this weekend. The southeast seems like it's going to get hammered pretty good. And like we talked about before, we don't get a ton of snow here, but we get the ice. So it just covers everything. You can't go anywhere.
TJ Miller (02:06)
Yeah.
Chris Gmyr (02:08)
Even if it's like kind of nice out or you feel like you want to do anything, you just can't or you shouldn't because there's like no infrastructure. Like we have like a couple plows for like all of the Raleigh area and they don't even put down like salt or sand. It's just this like a salt mixture brine that they spray on the roads, which does a little bit, but doesn't do a great job. And because it gets a little bit warmer and sunnier during the day, everything melts and then it
chills off in the afternoon into evening and overnight and everything just freezes again. So we'll see how school works out. My son already has Monday off for like a teacher work day, but we're already assuming that it's probably going to extend to like Tuesday, if not Wednesday or more. So it might be kind of a crazy week next week. Yeah, we'll just see where it goes and hope for the best that we don't lose power. But we're doing a bunch of prep.
I have a generator, I out and got a bunch of gas and stuff like that the other day. Filling up water jugs, big cooler, charging battery packs for cell phones just to get us through so I don't have to run the generator all the time, especially overnight and stuff like that. So just a little prep like that. Hopefully we won't need it or use it, but always better to be safe than sorry. So yeah, lots of different adventures going on.
TJ Miller (03:02)
Yeah.
Yeah.
Yeah.
Yeah, for sure, man, for sure. No, that's that's crazy. We've had it's it's cold, very cold right now. Where where the feels like temperature is negative 11. So it's it's freezing here and we're staring at like single digits for the next week. I don't know if we're expecting any snow, but it's just going to be like bitter cold.
Chris Gmyr (03:49)
Yeah, Yep. So yeah, hopefully everyone stays warm this weekend and into next week and we'll see how it goes. But yeah, what's new in your world?
TJ Miller (03:53)
Yeah.
Yeah, man. Geez. ⁓
man, I feel like so much, but also not a lot. It's been the last two weeks since we recorded last have been just brutal personally, like battling a ton of health stuff with my wife and just like getting. Blow after blow of like not great news, so.
Personally, it's just been really tough. Code and work wise, I don't know. feel like I finally had a really rough week personally two weeks ago. And then this week, I've been able to get back in the groove with everything. So that's felt really nice to feel a lot more locked in with GeoCodeo stuff, is really good. And then I've been
not able to spend as much time as I would like to have spent on like Iris and Prism and stuff. But last, last Saturday I ended up doing a like three hour live stream and most of it was doing like open source maintenance and just like working through pull requests. One of the cool things was, as I was reviewing pull requests, a handful of the pull requests I was reviewing, the person
that opened those pull requests was in the live stream chat. So it was great to be able to like, yeah, like review that stuff, be able to like ask questions about it. Cause they were, um, some pretty in depth contributions. So it was nice to be able to kind of like walk through those live and everything. Um, but yeah, it was, it was like, let's start a live stream. I don't know what, I don't know what we're going to do. So yeah.
Chris Gmyr (05:10)
cool.
Yeah, well that's awesome
and I'm sure it feels a little bit better to clean some of that stuff up and clear some of that off your plate.
TJ Miller (05:36)
Yeah, I know I've got like a handful over the last two days, a pretty fair amount of pull requests have come through, but I've been buried in actual prism work and in like trying to keep Iris moving forward. I missed my newsletter last week, which was not what I wanted to do. And then this week I was hoping to have a blog post or two out about Iris stuff, but.
They're, I'm sorry, I'm getting like texts from my wife. Just making sure everything is okay. It's funny, we were just, I was having the same conversation with her. like, I put everything in Do Not Disturb, but your favorites and like emergency contacts can still get through it. At least the way I have mine set up. So I'm like, I have Do Not Disturb on, but it still coming through. So just making sure everything was okay.
Chris Gmyr (06:09)
Mm-hmm. Yep.
TJ Miller (06:16)
So I got a little distracted there, but like, I'm still trying to like, I, I missed some blog posts that I really wanted to do, just trying to keep the like hype train for Iris going. but I'm, I've got some features in Prism that I am like really trying to figure out how the heck to work out. but I did make, ⁓ we can talk about Iris in a little bit, but like, I did make some like pretty big changes in Iris, which, I'm happy with how they turned out. So.
That feels pretty good too. this last week was pretty much a total wash on getting anything done except for Saturday. And then this week has been feeling back to like most, most cylinders firing. So yeah, that's, that's what's been up. Just, you know, treading water, trying to, trying to stay alive and keep.
keep things moving forward as best I can.
Chris Gmyr (07:02)
Yeah, totally. Yeah, well, with Iris, I guess we can just transition into that. I don't have any new coffee things or I don't know, it feels like same beans, kind of same rotation, same sort of thing. no new recommendations. I haven't gone out to a coffee shop in a little bit. So hopefully have some new coffee conversations next time. But TBD on that.
TJ Miller (07:09)
Sure.
Same. Samezies over here.
Yeah, yeah, still needing to go out and get that Turkish coffee I was talking about in the last last time we talked. I'm I'm still craving it, you know, still got to go do it. But the place is like sort of on the it's it's in a place that I like. It's like in an area of town that I don't really go to and don't pass by very often. So it's like definitely an out of the way trip. And so it's just like I haven't.
Chris Gmyr (07:46)
Mm-hmm.
TJ Miller (07:53)
I haven't wanted it bad enough, I guess, to like make an out of the way trip just for a coffee. So maybe if I find myself back in that area, hopefully somewhat soon I shall be able to make that happen. But yeah, I don't know any any other place around here that would even be able to do that. I'm sure I'd ask them and they would just be confused.
Chris Gmyr (08:03)
Yeah, totally.
TJ Miller (08:10)
So yeah, so Iris. So I guess timeline-wise looking to launch, I really wanted to be launching this week. Losing a week to personal life and everything really put that behind. But I made some big progress this week. One of the big things that I wanted to do
do in prep for launching this and like putting it out there for people to buy and get access to is like, I didn't have a way for you to really modify or configure Iris in a way that still allowed you to easily get upstream like updates for me. So like, if you are on a like version of Iris that doesn't have this configuration stuff, like you're either like
You're modifying the Iris config file, or you're going in and manually adding prompts or classes in order to like, let's say you wanted to add your own custom tool. Well, you wanted to add a weather tool for your own Iris setup that I haven't shipped as part of Iris. That would involve you adding your tool, then updating this tool resolver class with
You got to update the array. But then now if I make changes in that file or something, now you've got conflicts in your local code base. You don't have a way to keep getting these updates easily. So what I landed on is a gitignore config file called irs-local.php. So you have a local config file. And what we do is we merge the config files together.
So anything you override, like you just add the same array path for the configuration file that automatically overrides the default configuration. So under the like memory configuration, if you wanted to set your tier one memories to have like 10 instead of five, you would just add like memory.
And then inside of the memory array, the tier one max. So you'd update that, right? And that just gets array merged in. So your overrides take precedent to the default config. Now, inside of the config file, we also now have prompts, tools, disabled tools, and provider tools. So new configuration options. And so with that, I overhauled everything to be class-based. ⁓
prompts are now class-based, tools are, were already class-based, but this really solidifies that. Disabling tools, you can now disable default tools. So one of the weird things that I landed on was I wanted them to merge differently based on what you were adding. So if you, by default, Iris ships with two
two like a split system prompt, one that's cached and one that's dynamic with all the like dynamic data inside of it. So those are what's registered in the default iris config. If you want to like add props, we replace it. So like whatever you put in your props array inside your local config file overrides all the prompts. So if you want to take advantage of like the default prompts, you have to add those back into the array.
If you wanted to add custom tools, you would just add the fully qualified class name to the tools array, and those are appended to the default tools. So it makes it easy for you to extend. And then to disable tools, you just add the fully qualified class name to the disabled tools list. Provider tools are handled similarly.
And so...
The tricky bit was refactoring everything to use prompt classes that can be self-contained, that can manage their own context. So what I did is each prompt gets resolved out of the IOC container, so you get all of your dependency injection. So you can inject whatever you want inside the constructor.
And then we have like two abstract, well, we have like an abstract and an overrides method. So you have like an abstract for your prompt. you're like, let's say you want to do like a weather context prompt, right? So you've got like a weather, like you want to like hit an API request to get the weather and then add those results to the prompt so that Iris just like knows what the current weather is for your location.
What you would do is probably inject some sort of class, like weather service. And so you put that in your constructor. And then you would also add request context to your constructor. And that's a custom bound class that has the current user, any tools that were registered. It just got the context for the current request. And so you can use that to scope by the user ID, scope by an API, user's API key.
whatever like preferences. And then there's like a provider options, which you can add like cash control and stuff like that. But like getting to the place where you have these self-contained prompt classes is was really nice. I think it's a really great refactor. And now like
I think it really feels like in a solid place for like users to be able to customize their own instances of Iris and like still be able to take advantage of any work that I'm doing on it in the future. Cause I continue to plan on working on this, adding more tools, refining things, refactoring stuff. So now you can like be able to pull in those upstream changes and hopefully avoid, you know, hopefully avoid like.
conflicting local files and everything.
Chris Gmyr (13:49)
Yeah, yeah. I think that's a good way to handle it, at least for right now. Because I guess, depending on how many people that you get into Iris, I could see there being almost Iris plugins that you just install once it's live. And then you won't have to worry about the underlying code implementation. Or you could put up your own.
and then be able to install that through like a UI or I don't know, something like that, much, much later on, which would be pretty cool. But at least for right now, like keep it local and keep it a little bit easier to manage instead of like having to implement a huge like plugin infrastructure to it.
TJ Miller (14:34)
Yeah, yeah. I just like, I was thinking about it and like, there's a handful, there's a handful of people that already have access to Iris and have been like playing around with it. And like, as I've been working on it and like shipping features, like, man, like if anybody decided to customize this and like add their own stuff, like I'm going to be creating an absolute mess for them upgrading down the road. So like, I just wanted to have some way for people to be able to extend it in the ways that they want to.
Chris Gmyr (14:52)
Yeah.
TJ Miller (15:02)
without.
you know, yeah, without like having to build like a plugin system or build a whole like settings UI or something like that. Because like that's probably the next step would be to like have a settings UI. So like maybe the default config file holds like all the defaults and then like everything's overriding on the user level. I don't know. But that's that's been.
That's been the biggest thing that I've shipped with Iris. The other thing, I don't know, did we talk about?
We talked about multi-generational memories last time, I think, right? So did we talk about the bug I discovered in that?
Chris Gmyr (15:40)
so now.
TJ Miller (15:41)
Yeah, so I discovered a bug in memory consolidation and like the multi-generational memory stuff. What I found out was I queue the jobs in like a batch. what this does is like there's, so over the course of time,
The Iris agent creates memories. have a background job that extracts memories from conversations. And you're not like creating all of these like facts, right? It's pretty common to have like duplicate memories. Like it just is between the two systems. Like Iris might store memory in the front end, the backend like system like thinks, yeah, this is something that should be stored as memory too. Like obviously. So it does that. So now we have like duplicate memories.
⁓ well, what this like background process does for memory consolidation is it, some, it groups together, semantically similar memories and then like consolidates similar memories. Well, it has, can consolidate the memories together, or it might say these memories don't belong together. There are like distinct events maybe. So don't combine.
⁓ or for some reason, like the memories, whatever, for a number of reasons, it may like reject the consolidation or it might approve the consolidation. So,
What I found was happening were, was the job, like everything was completing like really pretty quickly. And I was like, great. Like this is working awesome. And I happened to be just streaming the logs at that time. And I realized I was getting a bunch of, rate limiting exceptions from Anthropic. And I couldn't quite like, it just, it seemed like a smell to me. So I like dug a little deeper.
So what was happening was there was some code that said, the request for, there's like a structured output request for approving or denying memory consolidation. And if that failed, just auto, like auto said, do not consolidate memories to like just preserve the individual memories instead of like soft deleting them and consolidating them.
So like, if there was any exception, like bail out with don't consolidate and move on. And so that's what was happening with like the vast majority of these memories is it was bailing out because I was hitting rate limit exceptions. So I went in to find a rate limiter for like a rate limiting middleware for the job. And then basically
added some logic in there, like Prism throws a specific rate limiting exception. So I'm able to catch that and then just like put the job like back on the queue for another time with like a bit of a delay and there's like backoffs defined and stuff. So I also had it set to a fixed number of attempts. So like I defined the tries variable.
Chris Gmyr (18:46)
Mm-hmm.
TJ Miller (18:47)
And so those were actually like, once I did that change, those were then failing because they would try and like either hit the rate limit again or something else. And so I ended up needing to take a different approach and instead of defining a fixed number of tries, I defined a fixed window of time. So like, then you define the like retry until method. I think it is what it is.
Chris Gmyr (19:14)
Mm-hmm.
TJ Miller (19:14)
And then I like add in like a, I think I put like a two hour window or something in there for it. So it actually works out like super well now, but it also takes forever to run, at least on my, conversation. So like the full, I ran a memory consolidation job against, all of my conversations and all the, like all the memories because
I have a like, let me look at my current stats.
Currently my conversation with my instance of Iris is like 2,800 messages long and I have like 990 memories. like it was running against all 990 memories that had never been consolidated before. And it ended up taking.
Chris Gmyr (19:56)
Mm-hmm.
TJ Miller (19:58)
I think it ended up taking like almost two hours to run because I just was hitting rate limits. that memory consolidation job does actual two LLM queries. It makes a structured output request to either consolidate or not consolidate. And then if it does consolidate, we then make a request to opening I to generate embeddings.
Chris Gmyr (20:06)
Yeah.
TJ Miller (20:23)
So I don't think I'm hitting the rate limit for embeddings. I'm definitely hitting the Anthropics rate limit for the structured output request. So it can take a little while to get through that job. But.
It works now. Like it actually works. And so the cool thing was like, took way longer, but then like going back through the memories or like looking at the logs as it was consolidating stuff and like seeing it actually make like really intelligent calls about whether to consolidate something or not was like so satisfying to see of like, yeah, these are like, do not consolidate these because while they're semantically similar, they're distinct events.
don't consolidate. The problem is, the problem that I like just sort of realized the other day was that it doesn't make the distinction about
Chris Gmyr (21:10)
Yeah, nice.
TJ Miller (21:19)
individual memory. So let's say it clustered five semantically similar memories together for consolidation, but it only decides that like two of those are distinct events. It's actually going to say not consolidate all of them. What I need to get in there and do is like say, well, consolidate these three, but leave these two as distinct events because they're distinct events.
So, I think that's a refinement that I need to make, but.
Anyhow, very in the weeds about all of that. Found a big bug in how I had the jobs configured and they weren't, you know, re-queuing. They weren't like, yeah, retrying based on rate limit exceptions, which like, that's the whole reason I think to do them as a queue job is so that you can get these like automatic retries if there are easily retryable things like you just hit a rate limit, right? You know?
Chris Gmyr (22:17)
Yeah, yeah. Queue jobs and rate limits and all that is definitely tricky. know back at Curology, we had so much stuff going on a queue for third party services and like circular sinks for different things going on. And yeah, we had to like, we probably implemented like 90 % of the queue options available to us, depending on like what.
type of job that we were running or third party service that we had issues with. So yeah, and a lot of source diving with that. ⁓ Because when we implemented the retry and toll, that actually takes precedence over some of the other options in there. So yeah, just even source diving how the actual queue system works in Laravel was super handy to figure out what options that we should be using.
And then once we did that and a couple more tweaks, it was perfectly fine moving forward. And this was hundreds of thousands of jobs over a few hours in chunks of the day. So tons of queues.
TJ Miller (23:24)
Yeah. And it was, I remember it being like so confusing and like we had conflicting options set at times where we had like retry until, but then also a fixed number of tries and like they were race conditioning each other. And yeah, I remember that being just so confusing and I still don't remember half the things we figured out when we were like deep diving it, you know.
Chris Gmyr (23:32)
Mm-hmm.
Yep,
yep, totally. It's been a little while now. But yeah, that's a good Iris update. I think the memory management is super interesting. And I can definitely see lots of potential for expanding on that. just like what you were saying, tweaking just the memory system and the consolidation system with that.
Do you think as you continue to adjust the system, you'll need more backfills to run that process again? Or is it something that the installees would just move forward with in the future?
TJ Miller (24:28)
Yeah, so like new users, like, there's actually a process already built in to do all of this to like, kind of, it will like automatically backfill. So the consolidation is a job, but it's kicked off by a command. So the command is actually scheduled in two ways. There's a daily at like 3 a.m.
Daily at 3 AM does a consolidation pass of the previous three days of memories, just to kind of like catch any newer memories that need to be consolidated and like consolidates them. And then there's a weekly pass on Sundays at I think like 4 AM that does a full memory consolidation run against all of your memories.
So that's the like big consolidation process. So if it's never been ran before, like mine was, it's going to take a while because it's going to create like a ton of clusters and like go from there. You'll get less clusters as things are like consolidated over time. So like that job won't be as big. It depends on how much you how many memories you create and how much you're talking to Iris. But
There's like that kind of like backfill is already kind of built into the weekly schedule.
Chris Gmyr (25:47)
Nice. Very cool.
TJ Miller (25:49)
Yeah. A big thing I got to figure out is like running this on Laravel cloud. Like my, my production instance of Iris is running on Laravel cloud right now. And it's just using a singular like Q work process. So.
I don't know how long that like, don't have like real visibility into the queue. So like.
that feels problematic. So I think I'm going to switch it over to horizon soon so that I can get like at least visibility into the queue and make sure that the systems are working correctly.
Chris Gmyr (26:18)
Yeah, and I know we'll get into it, but my new side project, I started off with just the app instance and running the Q work command, but like the lack of visibility into what's actually happening. It's like, OK, yeah, I need to set up Horizon. But that automatically needed a much larger instance to even just run Horizon.
TJ Miller (26:37)
Yeah.
Chris Gmyr (26:43)
and things like that. So might be an option.
Maybe a couple options there. Like have Horizon as an option for if you're using it a lot, like for your specific use case, you'd probably want Horizon to process the cues and handle this and get the insight a lot quicker and more efficiently because you're like actually working on the system. For someone who's just like using it almost as is.
Then probably just having the queue like in the background on the same app instance is probably fine. So maybe having like different install options for depending on like what you want to do with it. Yeah, could be a couple of different options there.
TJ Miller (27:24)
Yeah, yeah. mean, I can always at least make Horizon available in the code base. And if you choose to run Qwork in the database driver or something instead, then that's totally valid if you want to run Horizon. At least it's there. And yeah, so it's interesting. Yeah, I was going to try running Horizon on the starter, their smallest instance. And I haven't tried that yet.
So you're saying that I probably would need to like bump up my instance size to run Horizon.
Chris Gmyr (27:54)
Yeah, I think I had to get the starter plan, just the $20 a month just to use the bigger allowances for cloud. And then the worker cluster, started off at, I think I tried the $5 one and it bailed out instantly, basically. It ran a little bit on the $7.
I think it's like one CPU, one gig of RAM and it kind of limped along. So now I'm bumped up to like the $14 one, which is one CPU and two gigs of RAM for Redis. But I'm also running probably about five different queues in the background too. So it kind of depends on like the jobs and how much memory you're taking and things like that. The jobs that I'm running.
did end up taking a lot of memory. So it all kind of depends on what Iris actually needs. So you might be able to tinker with that a bit too.
TJ Miller (28:56)
Yeah, I to play around with it. I'm on the one CPU 512 RAM, like the $5 a month instance. So.
Yeah, I don't even know if my background job, that's the problem without having that visibility. Like best thing I can do is like go into the logs and like try and find, go into the logs and like look for the logs of like jobs running and like searching for that, which doesn't feel great. So, um, I just, I need.
Chris Gmyr (29:24)
Yeah, it's kind of
TJ Miller (29:27)
At least I want some visibility into the cues to make sure everything is running, things are running correctly. So to get through the big batch, what I ended up doing was I backed up a copy of my production database, loaded it locally, booted up Horizon, and just chunked through everything locally, and then just pushed the database back up to production.
worked, but like that's not super feasible. want everything to run, you know, I'd like everything to run on the server, you know, and just like it, it work. So.
Chris Gmyr (29:56)
Yeah.
Yeah,
yeah, yeah. yeah, I think horizon is a good idea. Definitely tinker with it. Might need a little trial and error with that. But yeah, I think that's a good call, especially for your side and just have it as an option in the background too.
TJ Miller (30:07)
I'll play with it.
Yeah. Yep. Cool, man. moving on from Iris to another topic we added on here is ⁓ like NASA's and Plex setups. And I think that's I think it's pretty cool topic. Like I've definitely toyed with this several times in the past. I don't currently have anything set up, but we'd love to we'd love to hear more.
Chris Gmyr (30:32)
Yeah.
Yeah, I think this goes back to some conversations that my wife and I had about like consolidating services, you know, saving a little bit of money on subscriptions, utilizing like the media that we already have. And we have like a pretty decent like music collection between the both of us and also movies. And like we weren't really able to play them.
Or like we could but it's like the boxes were like stored away and when we moved down here we basically got rid of like all the DVD and like music CD like boxes and cases and just moved everything into the little plastic and paper sleeves, you know, so we have like three very dense Consolidated boxes of like movies and music I did
TJ Miller (31:23)
Yeah.
Chris Gmyr (31:30)
⁓ Make sure like all the music was copied before we moved but like nothing was really done with the movies and it's like well Yeah, I know we have this movie but I got to go through like the closet because it's like kind of buried away because we don't really take out the discs like all that often and it's just I don't know a couple movies though We ended up just buying on Amazon over time because it's like ⁓ I just want to push play and be done with it You know, so it's like and that's probably not like the best way to go because you don't really like own them, right? You just like
TJ Miller (31:53)
Yep, for sure.
Chris Gmyr (32:00)
at them to have the permission to stream them basically. Like you can't really do anything else with them. So I was like, well, this is kind of lame. And like the kids especially like wanna watch certain like movies or we have some of the Christmas and like holiday movies just like in the Christmas stuff. So we can't really watch them unless we like unpack everything. And.
Some of the apps like Amazon actually limit you to the amount of downloads you have even across devices. So like loading up both of their iPads for trips, you could only have like 25 downloads across your account basically. And some of these like kids shows and like episodes, they're like 10 minutes long. So you're gonna go through that like limit. Yeah, yeah, exactly.
TJ Miller (32:35)
Yeah.
Yeah, man. Just usually rip through bubble guppies like
Chris Gmyr (32:45)
And it just going to be gone. was like, well, you can't have like all these, you can have like three, but let's pick some like longer shows and like one or two movies to least make the downloads worth it. And just this whole like rigmarole that we have to go through on like longer trips or just like wanting to get our stuff. So talk to someone at work. They're like, yeah, like, plucks this, plucks that. Like, what is that? You keep on talking about like movies and whatever sharing, you know, your
TJ Miller (33:00)
Yeah.
Chris Gmyr (33:13)
Library, it's like, you know, tell me more because I haven't really like came across that or even if I did like I didn't really realize it He's like, yeah I just have like an old computer and you know hooked up to the internet and I put all my movies on there and can stream it, know in my house or if I'm traveling or whatever have access to my movies and music and Whatever else that you want to put on there. I'm like, ⁓ that's really cool idea But I also don't want it on my laptop or having my laptop running all the time. So started looking into
network-contact storage devices and looked at a bunch of reviews and also looked at a Plexmor. Long story short, pulled the trigger, found one device on Amazon that had a 4-bay and came with four drives of like 8 terabytes each. And RAID 5, I get like 21 terabytes of data, or a little bit over 21 terabytes of space.
And talking with Claude of how to do this and calculate the music and movies that we have in the disk, it's like you're not even going to come close to the 21 terabytes. I'm like, OK, cool. Let's do it. I had to get a little bit of software to do it. And then Flax has this ⁓ lifetime pass that you can stream to multiple devices. You can invite your family.
TJ Miller (34:17)
Yeah. Yeah.
Chris Gmyr (34:32)
You can download offline content, especially good for iPads and the kids who traveling. So basically got this set up before the holidays just on my laptop for just starting off and did all the Christmas movies so we could download those on the iPad so they could watch those as we were traveling and stuff like that. And then ordered the NAS when we came back and then got that set up. So I've been in the midst of
ripping movies like every day like on the side or most days or on the weekend and stuff like that. And then I have like still like two boxes to go through. And it's just like it just takes forever. But it's like, this is going to be cool. And feel like last Saturday I ripped like, I don't know, 25, almost 30 movies. like, it's just cool because Plaques has like a very similar like streaming service ⁓ UI. You can search through things. You can
TJ Miller (35:06)
Yeah.
Chris Gmyr (35:26)
Everyone has their different profiles so I can mark something that I watch as watch but like you won't see it as a watch and you can like rate things you can put it in like categories you can do all sorts of things Downloaded for like offline use all the iOS apps and Apple TV apps are fantastic So yeah now it's just a matter of going through all the movies and stuff like that and ripping them and getting them on there
And we also have all of our music on there too. So you can download music and have shared playlists across different libraries. Because I wanted to keep my library and her library separate. But we wanted the kids to have access to some of those things. We can make playlists that span across our libraries. And the kids can download them and listen to them on the iPads when they are traveling and have access to them. So yeah, it's just a cool little.
TJ Miller (36:15)
That's cool.
Chris Gmyr (36:22)
side project and journey with like, I don't know, trying to use our own media and eventually like cut down on some of the services and some of the, you know, ownership and lease, you know, issues for like media and stuff like that. So, yeah.
TJ Miller (36:27)
Yeah.
Yeah, I used to have
a pretty sick, sick setup of downloading and streaming, like, not my stuff through Plex. So like,
Yeah, acquiring data and movies and music. Because I don't have like a big disc collection or anything, but like digitally, I can like definitely get access to stuff online. So I was like download. had like such a sick setup of like I could like queue stuff up to get downloaded. It download automatically, like download and get moved over into Plex and then Plex would pick it up automatically. And it was like super sick. But the little like the old computer, I had it running on.
did not have a very big hard drive. So like I ran into a space issue with all of it. So like long-term I've always wanted to like put together a NAS and Plex set up and like get that whole thing set up again. But I just haven't like, haven't pulled the trigger on it. Like I just, I just committed myself to getting my, like my sleeve redone, tattoo wise. So like I, all my fun money is accounted for for the next few months.
Chris Gmyr (37:41)
Yep, yep, totally.
Yeah, it'll be like an ongoing experiment and see how it works out. But also thinking of like, man, how could we actually get more movies and going to Goodwill? Or when we're up in New York visiting family, bringing my external disk drive and be like, hey, let me grab that movie real quick.
TJ Miller (37:47)
Yeah, it's super cool.
Yeah, we just get this movie from
you.
Chris Gmyr (38:05)
Yeah, and also, you know, hopefully more money goes back to like, you know, the people who like produced it and, you know, actors and musicians for, you know, music and stuff like that. Hopefully they get, you know, more money from buying actual media compared to like streaming it and stuff like that. So, yeah, hopefully it'll be a little bit beneficial to everyone involved.
TJ Miller (38:26)
Yeah, man, I think that's really sick. I would love to get that set up again. and I'm sure like Plex has got even so much better than the last time I've used it. And then like it was so solid then too. Yeah.
Chris Gmyr (38:43)
It's really good out
impressed from something like this. I'm like, man, this is actually a thing. It's like, actually, it seems like a very good thing.
TJ Miller (38:50)
Yeah, yeah, no, and that was always like a bit of the gap too, is I refused to pay Plex for anything. So I was always using like their free accounts. And that was kind of limiting to the experience. But if I was like, yeah, invest in it again, I think I would, I'd go all in on it for sure.
Chris Gmyr (39:07)
Yeah, because I definitely have to do like the Plex Pass like and they have like a lifetime thing so it's only like a one time like 250 bucks and that covers like the entire family you can do like offline downloads you can stream from other people's Plex instances and then I think they have like a two dollar a month one like bare minimum that you can it opens up the streams to like other people's libraries because I think if I invited you I don't think it'd be
I don't think it'll allow you to stream it unless you have like a PlexPass. You can stream your own media, but I don't think you could tell like other people's. Yeah, I'll have to check out and let me know. Right now there's just a bunch of kids movies on there. slowly getting into the adult movies and some of the like the Marvel stuff and all that that we like had. Yeah, it'll it's it's going to take me a long time to go through these, but.
TJ Miller (39:41)
I see what you're saying.
Yeah.
Chris Gmyr (40:02)
It'll be good, I think, in the end. It'd be pretty cool. So yeah, that was one of the main side projects over the holiday break that we didn't get to chat about last time. And I know we're up on time or getting a little bit late on time. But I guess I'll just kick off this next one. The other side project that I've been working on is called Fine Print Hound. Just fineprinthound.com.
have a waiting list and like landing page up and available. People want to check it out. But basically it's a website that will track and eventually alert you on services and sites that you use that change their privacy policies, terms of service, any legal or usage type policy. Because those change like all the time. There's a lot of like data.
Issues and usage out there. it's just like, wow, this is a lot to actually ingest and figure out what actually means anything. And so many companies do it. And not that many alert you of changes, even though they're supposed to. Especially big companies, too. It's just hard to manage all this stuff. And usually, signing up for a new service or site, which is like, yeah, just blindly accept it.
TJ Miller (41:10)
Yep, that's always
me. Yep, yep, accept. Just let's go.
Chris Gmyr (41:13)
Yep, just let me through. And that's just what people do. It's no real fault. I don't think anyone really reads them. But that's what the service is for. It's like it'll scan through and it'll continually check and update any sort of changes that happen over these sites and policies. And it'll eventually alert you. You sign up. You select Amazon.
you know, whatever, eBay and Meta, all the sites that they have. So you can basically sign up for all the different services that you want, and then you'll get email alerts, and you can always see that in your dashboard eventually. And eventually, I want to put in AI rankings to that. So it'll basically say, oh, this is not a big deal, but hey, this other change, this is a big deal. You should check this out.
And it's not necessarily saying you should keep the service or get rid of the service. It's just for your own information. ⁓
TJ Miller (42:15)
Just making you
like bringing visibility and awareness to like what's what's happening. Yeah.
Chris Gmyr (42:19)
Yeah.
Yeah, yeah, totally. So yeah, it's something that I've been ideating for a while and did a bunch of chats with Claude as well as like, could this even be a thing that people want or pay for? And there's some different avenues of B2C and also B2B for actual contracts that people get and tracking all that stuff too, like PDFs and.
All sorts of things like that. But I'm just starting off as the B2C end of it, because that's my personal usage of it as well. And that might be getting people a little bit more interested in. So we'll see. But I got it up and working. It's live. I have Filament as the admin. Got a bunch of cues set up, like I mentioned before, processing all this stuff. Ran into a bunch of
TJ Miller (42:52)
Yeah.
Yeah.
Chris Gmyr (43:11)
like bugs and checking issues that I've worked through. So we can get into all that next time. But yeah, the link will be in the show notes if anyone wants to check it out or talk privacy and data and whatever. can just ping me. Yeah.
TJ Miller (43:27)
Yeah, that's so cool, man. I
think it's a great idea. It's not anything that like I personally have like a lot of care for, but I know a lot of people that do. And I think.
I think part of the reason like I've never really cared a whole lot was because it, it is just too difficult. And so like having a tool that makes that easier, like might lower that barrier to entry and like make it easier for me to care about, know, cause I think, I think it does matter. And like, there are things that change that do matter. And I do, I do care about data privacy and data like independence and all of that stuff.
So yeah, that's a really neat idea, man. I'm like, I'm stoked you're building it. That's great.
Chris Gmyr (44:10)
Thanks.
Yeah, so I have lots of things to share on future episodes and tinkering with it like all the time. So once I get it kind of in a spot that I want, then I'll open it up to people who are like interested in it and probably just start for free and figure out like how to work in like AI in the future and like what the costs are for that. And but at least that'll be like some like ongoing like free tier like, you know,
pick five services or five policies or something like that that you care about or TBD on all that. But yeah, it's looking pretty sick so far.
TJ Miller (44:45)
Yeah dude, that's awesome.
Cool dude. Well, on that note, I know we're running a little long. You want to wrap things up? Cool. So thank you all so much for listening to the slightly caffeinated podcast show notes, including all the links in social channels are down below and they're also available at slightly caffeinated.fm. If you have any questions for us or have content suggestions, go to the ask a question page on our site and we'll feature them in an upcoming episode. So thank you all so much for listening. We'll catch you next week.
Chris Gmyr (44:51)
Yeah, let's wrap it up.
Creators and Guests
