— All Play
Podcast
Newsletter
023 — Hacking the Starter Packs
Show Notes
So, what do you do when you start to run into walls, or slow downs, on the project you’re working on? I feel like I am at, or approaching one of those slow downs, and am trying to get ahead of it.
Since my last update when I announced Starter Packs, I have been busy continuing to build the logged out experience of the site. Focusing on gathering as many references as possible to the Starter Packs on Bluesky, and coming up with ways to make the firehose consumption more resilient, while baking in some features into the site that will allow me to capture more Starter Packs instances as people explore the site. So far things have been going great, but I am feeling the resistance creeping in and I am trying to resist it.
Where I am at now is that I pretty much has the explore experience dialed in. You can search for Starter Packs, along with Profiles, on the site, and freely explore packs and the people in them, along with being able to explore profiles, the Starter Packs they have created, along with the people they follow, and those who follow them. All in all, I am pretty stoked with where the site has come over a couple of weeks of working on it, and still pretty excited on where I can take it, but I am kind of slowing down a bit due to hesitancy on a few things, and I am not liking it.
Where I am slowing down is on the integration of OAuth’ing into the site to allow for authenticated actions to be performed, like following everyone in a Starter Pack, or following individual profiles. In the early days of the project, I created a quick (which actually turned into a multi-day) proof of concept of getting the ATProto OAuth setup working, but I haven’t really touched it since. Fortunately, it looks like it still works, but now I am trying to pair it with my own account handling and authentication and I don’t feel like I have crafted a setup that I am fully confident in, which has made me lose a bit of steam.
So, with that said, I am publicly committing to getting OAuth integrated into the site, and having all the following functionality added in over the next couple of days, so I can at least get it out there and then evaluate what I like, or don’t like, about the setup and then adjust. My concern about launching something I am not confident in is due to the higher than normal amount of traffic the site is getting, and I really don’t want to roll something out that ultimately ends up breaking, but I guess I will just have to cross that bridge when it comes.
For now, I am committed on getting the OAuth out, expanding the actions that people can perform while authenticated, and continuing to build some of the features behind the scenes that I would ultimately want to charge people a subscription for, but more on that at a later time.
To check out the current status of the site, check out https://www.starterpacks.net. You can follow along for updates on both the Starter Packs Bluesky account, @starterpacks.net, along with my personal account on Bluesky, @ryanhefner.com. Let me know what you think, and if there are any other features you would like to see added to the site and I will try to work those in.
To follow along, you can find me at ryanhefner.com, follow me on Bluesky @ryanhefner.com and keep up with the show on allplay.fm and @allplay.fm.
Help yourself, while supporting the show, by trying some of the services that I use, and highly recommend:
Transistor FM
Fathom Analytics
Transcript
00:00 - 00:15
Hey. How's it going? I'm Ryan Hefner, and this is the All Play podcast. So, again, it's been a couple weeks since my last, episode. I'm gonna use Thanksgiving falling in there as an excuse on why I did not get the an episode up.
00:16 - 00:42
Last week, I was up in Ohio hanging out with my family and having a good time. And still trying to keep busy, but, also didn't bother packing the mic or any of the other stuff. I was traveling with my daughter, and her and I were having a good time. So yeah. So I actually had to go back and listen to the last episode so to even understand where I was then and where I am now.
00:42 - 01:22
Over the last couple weeks, you know, I, I announced the fact that I was working on starter packs. You can find that at starter packs dot net. It's the new project that I started working on the last couple weeks, and so far so good. I've added more features to the site and, basically, kind of, like, worked on the whole, like, exploring the starter packs, kinda worked on getting search in there, tried to figure out ways to acquire and basically, like, backfill my, starter packs catalog a bit more. I think right now, we're up to about let's see here.
01:24 - 01:57
Up to a 165,000 starter packs and going. I know that's not all of them, but, I've also set up ways in the site to where essentially the more that people browse it and come across starter packs that aren't in my system, those those will get added as people browse. So hopefully, as more and more people use the site, it actually just kind of continues to flesh out and, build up that catalog. So it is kind of like an all encompassing reflection of all the starter packs that exist on Bluesky . And, yeah.
01:57 - 02:39
And actually to my surprise, I didn't realize how kind of popular or it was gonna gonna start to get I mean, it's not through the roof, but it definitely is probably the most traffic site that at least I own, that I've worked on. And, you know, it's it's been live for about let's see here. I mean, I guess I I guess I kinda had a early version up, but I think that was mostly newsletter kinda holding page for a few weeks there in, early November. But probably had the first experience up. I'd have to go back to GitHub and see what it is.
02:39 - 03:21
But since the site's been live, about 34, almost 35,000 people have checked it out, and about 93,000 page views. So, it seems like it's doing the job, and actually Google seems to be indexing it very fast. I mean, faster than, than I've had any of my other sites get indexed, which is pretty cool. So with that, obviously, you know, I'm trying to make that experience better, but it's it's nowhere near where I wanted to to be and that's kind of where I'm at And at least what I'll be talking about today is how do you, how do you get yourself unstuck? And I wanna say that I'm necessarily stuck.
03:22 - 04:26
It's just more of a you know, there's those times when you can when you're moving forward and you're feeling confident and you know you know you have a good idea of the next move and as it kinda comes together, it's kind of like lining up with what that vision is that you have for it. So I feel like during those times is, like, when I can really move fast and and get energized. But as soon as there's that little point in time when, you know, you have a little bit of, like, hesitation or you start to doubt yourself or, like, the way that you wanna implement it, that's where I feel like it's just like this opportunity for, like, you know, like, the resistance to kinda creep in and and and set up some, like, artificial roadblocks in your mind to try to, prevent you from getting to that next phase. And I feel like I'm kind of almost there right now. I'm trying to trying to jump over as many of these roadblocks as I can, but it really comes down to, you know, I have this kind of unauthenticated experience.
04:27 - 05:22
Obviously, I'm gonna try to make it better. Actually, I I I I I'm using Postgres as the DB, and I'm trying to use it. It's full text search. I think there's an extension or 2 that I can I can add to Postgres to maybe make the fuzzy search a little bit better, but I just don't think it's gonna quite get to where I want it to get it? So I probably will end up, spinning up, like, a typesense instance or something like that and feeding all of the data from the database into that types typesense collection and really, harnessing the power of that to give better results as well as do more, like, better ranked results as far as potentially the number of people that are in the packs, the the popularity of the packs, all this other different kind of stuff that I can use to kind of help that kind of explore experience, but I'm not quite there yet.
05:22 - 05:55
You know, right now, or at least when I first started, working on this project, the one the one of the bigger things the biggest thing that I wanted to make sure that I could do was that I had OAuth figured out. And I put together a quick POC, and, you know, I was able to basically go through, you know, set my state. It'd go out to, Blue Sky. They'd authenticate, come back, and I would have a active session. So I've had that actually almost since the since, like, day 1 or day 2 of working on the project.
05:56 - 06:23
It definitely actually, it wasn't day 2. It it actually took me a few days to kinda figure it out and find us some examples of of good working, basically, some examples that worked to to figure it out because I wasn't quite getting there on just documentation alone. But I was able to get that working within the 1st couple days, and then that kind of put a little, like, you know, alright. Got that. Move on to the next thing.
06:24 - 07:14
So I did that, and now I'm kinda coming back to auth. And I'm realizing that, you know, since, that first POC, the scope and, like, the kind of the structure of the app has kind of changed. So I have the API, which is I basically added, which is a nest a nest s t, nest JS app. I have the firehose, which is also a separate nest, service that I have running that's basically just sitting there feeding off of, WebSocket connection, trying to, ingest as much, starter pack information as it can right off the fire hose. And, actually, I'm probably gonna be expanding that out to, be consuming a little bit more.
07:14 - 07:43
It's just with the fire hose stuff, I mean, it's like if you don't get it early, you don't got it. So you gotta figure out these ways of being able to catch up, and that's that's where, I added some a little bit of logic so that the more people that visit the site, it'll kinda catch up there. So I have that going. I I've I've built out the next, n e x t, site more so that you can actually browse and browse starter packs, browse profiles. You know, it's like you go to a starter pack.
07:43 - 08:21
You can see all the people that are in it. You can go to a profile, see the starter packs that that person has created as well as the people that they follow and that follow them. So I'm really trying to build out the whole make this like the ultimate blue sky community exploring experience. And and, really, the next step there is you know, I have most of it. I'm gonna be adding some more stuff, so I'm gonna have to spin up some workers that are then now gonna start going through all those starter packs, all 165,000 of them, and start associating them to the people that are in those packs.
08:22 - 08:54
I did see that there's, a few other services now that are kinda doing something similar. Again, that's why I feel like there's this urgency to get it out there. Not this necessary, like, beat anyone, but, you know, I just wanna try to keep some momentum around the project. And so OAuth is the thing that's really gonna unlock the things that I can do with this. So once I have the o auth, you know, it's basically gonna instantly open up the ability to not only follow profiles, but obviously follow all the people that are in the starter packs.
08:55 - 09:45
It's gonna allow me to do other stuff around starter packs. You know, the, the current editing or adding and removing people to starter packs is a little bit clunky. I'm hoping that actually having this, like, really rich, well crafted, explorer experience, being able to find people easy, be able to add or remove people from starter packs, make it really easy and straightforward, right, through just, you know, a one click button ideally, will help, you know, get people to use starter packs a little bit more. And then, you know, obviously, being able to surface some of this stuff that Blue Sky doesn't surface naturally on the site. So, essentially, me being able to see all the starter packs that I'm in and people also being able to see those from my profile.
09:47 - 10:25
So that's kind of the whole vision. Now where things kinda get a little bit murky is the way that I have the OAuth stuff set up is I have, like, 2 call you know, 2 tables in this database, and one holds this session. Now I need to figure out how can I basically take that session, map it, not only to a user, but to an account because I have some future future stuff that I'm thinking about? And, you know, in the past, the way that I've structured out my apps is a user is really just the authentication. So it's like the email address, password, maybe a name, but that doesn't really apply here.
10:25 - 10:53
So I started looking at, well, who does, you know, social integrations well? So I started looking at Laravel and the socialite package for that. Looking at that, it actually seems like they just keep extending onto the user model, and I could be wrong. I need to do some more digging. But looking at the, the GitHub example, it looks like they're just kinda adding, like, a GitHub ID onto the user.
10:56 - 11:40
And that's not really the way I wanna go. I think, I think I might even end up rethinking my original structure where, you know, a user has a username, you know, like a username or email address and password and maybe make, like, a user, one canonical thing that then can have multiple authentication approaches. So, they could have an email address and a password, but they could also authenticate via Blue Sky, and that would work as well. And those are relationships maybe to that user. I think that's similar to how auth 0 does it where you can essentially a single person can have an SMS off a magic token or an email password.
11:42 - 11:59
So I I don't know. I'm I'm kinda playing there, but at the same time, I'm not trying to overthink it. Then that's where I'm getting a little bit held up. So I'm I'm gonna make the public commitment right now that within the next few days, I'm planning on having this resolved. I'm gonna get it out there.
11:59 - 12:26
I'm gonna have the follow buttons working, and then I'm gonna keep jamming, trying to get all the other extra value ads integrated into the site. But, yeah, that's kind of where I'm at, and, you know, we'll see how it goes. I'm hoping it'll be good. And and, yeah, that's that's just where it at. So I'm trying to get out of my head.
12:26 - 12:48
I'm trying to I'm making this public commitment right now so that way I have some accountability. And anyone who wants to can call me out in the next couple of days and be like, yo. Where's that where's that OAuth feature on starter packs? But, if you want to check it out, it's at starter packs.net. Obviously, OAuth isn't there, but browse around.
12:49 - 13:20
I know that the, the search, I'm gonna try to make that a little bit better. I did try to to optimize the the pagination and stuff. It is definitely a little tricky. Like, there's a lot of updates that are kinda coming into the catalog of starter packs. So to make, like, a reliable search that, is getting, like, the proper results page to page, and also based on the fact that I'm just using Postgres kind of full text search, which doesn't seem the most reliable.
13:20 - 13:37
Again, I'm gonna try to swap that out probably at some point, but it does the job right now. So I'm I'm just gonna use it, and I can always optimize it later. But, yeah, check it out. You can also follow Starter Packs, on Bluesky . It's @starterpacks.net .
13:38 - 13:56
I'll be posting some more updates there as I, continue to work on the the product. And you can also follow me on bluesky @ryanhefner.com. Obviously, check out my website at ryanhefner You know, at the URL, ryanhefner.com, if you wanna see what I'm up to. Yeah.
13:56 - 14:29
I'm gonna leave it there. So, this has been All Play, the All Play podcast with me, obviously, Ryan Hefner. You can check out the show and more episodes at allplay.fm, and also allplay.fm on bluesky. I don't I haven't been using Twitter too much actually since getting into bluesky, but I am over there both at ryanhefner and at all playfm. So, yeah, I'm gonna leave it there, and I'm gonna get to coding and trying to get this OAuth stuff in.
14:29 - 14:33
So alright. Have a great one. Later.
More Episodes
Subscribe to the newletter
Get updates when new episodes are posted, and other fun stuff that I am into.