my blog https://overreacted.io

twk

+12 -8
+12 -8
public/a-social-filesystem/index.md
··· 990 990 991 991 This syncs everyone's repo changes to my database so I have a snapshot that's easy to query. I'm sure I could write this more clearly, but conceptually, it's like *I'm re-rendering my database*. It's like I called a `setState` "above" the internet, and now the new props flow down from files into apps, and my DB reacts to them. 992 992 993 - I could delete those tables in production, and then use [Tap](https://docs.bsky.app/blog/introducing-tap) to backfill my database *from scratch*. I'm just caching a slice of the global data. And everyone building AT apps also needs to cache some slices. Maybe different slices, but they overlap. So [pooling resources](https://constellation.microcosm.blue/) becomes more useful. Or at least there's more shared tooling. 993 + I could delete those tables in production, and then use [Tap](https://docs.bsky.app/blog/introducing-tap) to backfill my database *from scratch*. I'm just caching a slice of the global data. And everyone building AT apps also needs to cache some slices. Maybe different slices, but they overlap. So [pooling resources](https://constellation.microcosm.blue/) becomes more useful. Or at least there is more shared tooling. 994 994 995 - I have another example I really like. 995 + --- 996 + 997 + There's another example that I really like. 996 998 997 999 Here is a [teal.fm Relay demo](https://teal-relay-production.up.railway.app/) made by [`@chadmiller.com`](https://tangled.org/chadtmiller.com) that show the list of everyone's recently played tracks, as well as some of the overall stats: 998 1000 ··· 1007 1009 But this doesn't matter! 1008 1010 1009 1011 All you need to start scrobbling is to put records of the `fm.teal.alpha.feed.play` lexicon into your repo. 1012 + 1013 + Let's see if anyone is doing this right now: 1014 + 1015 + <RecentPlays /> 1010 1016 1011 1017 The lexicon isn't published as a record (yet?) but it's [easy to find on GitHub](https://github.com/teal-fm/teal/blob/25d6d8d1d9a2bb2735c74fb4bab5d35f808d120e/lexicons/fm.teal.alpha/feed/play.json). So anyone can build a scrobbler that writes these. I'm using one of those scrobblers. 1012 1018 ··· 1018 1024 1019 1025 To be clear, the person who made [this demo](https://teal-relay-production.up.railway.app/) doesn't work on teal.fm either. It's not an "official" demo or anything, and it's also not using the "teal.fm database" or "teal.fm API" or anything like it. It just indexes `fm.teal.alpha.feed.play`s. 1020 1026 1021 - I wonder if people are playing anything right now: 1022 - 1023 - <RecentPlays /> 1024 - 1025 - Speaking of [this demo](https://teal-relay-production.up.railway.app/), it uses the new [`lex-gql`](https://tangled.org/chadtmiller.com/lex-gql) package which is another of [`@chadtmiller.com`](https://tangled.org/chadtmiller.com)'s experiments. You give it some lexicons, and it lets you run GraphQL on your backfilled snapshot of the relevant parts of the social filesystem. 1027 + For the data layer, this demo uses the new [`lex-gql`](https://tangled.org/chadtmiller.com/lex-gql) package which is another of [`@chadtmiller.com`](https://tangled.org/chadtmiller.com)'s experiments. You give it some lexicons, and it lets you run GraphQL on your backfilled snapshot of the relevant parts of the social filesystem. 1026 1028 1027 1029 If you have the world's JSON, why not run [joins over products?](https://tangled.org/chadtmiller.com/lex-gql/blob/main/examples/relay/src/TrackItem.tsx) 1028 1030 ··· 1048 1050 1049 1051 ![](./21.svg) 1050 1052 1051 - Here's one last example that I thought was interesting. 1053 + --- 1054 + 1055 + There's one last example that I wanted to share. 1052 1056 1053 1057 For months, I've been complaining about the Bluesky's default Discover feed which, frankly, doesn't work all that great for me. Then I heard people saying good things about [`@spacecowboy17.bsky.social`'s For You](https://bsky.app/profile/spacecowboy17.bsky.social/feed/for-you) algorithm. 1054 1058