Nicholas Perez 27:20 All right, we're about to begin our lightning rounds of the afternoon of our last day of the conference. 27:26 Um, first up we have Nick Perez with the design philosophy of BookHive. 27:31 So they'll be very fast rounds, 8 minutes, with a few minutes for questions and changeover. 27:36 So I'll pass it off to you, Nick. Speaker B 27:39 Hi. 27:41 Pleasure to be here. 27:43 So yeah, like the president— so yeah, this talk is going to be about the design philosophy behind BookHive. 27:52 So it's not actually like design in terms of like UI design, although I did do a redesign last week, released it, all that. 28:00 So you can enjoy the website now. 28:03 But this is going to be more about the philosophical aspects of this. 28:08 So I think that what we have here with AT protocol is really a trend reversal. 28:16 Sorry. 28:18 We have a trend reversal in terms of the web started as being open, and then we slowly saw this being clawed back by these systems, these large social networks. 28:32 You know, there was things like Twitter used to have an open API, Reddit used to have an open API. 28:40 They slowly crawled that back from us. 28:42 And I think that what we have with AT protocol is we're right now running into user agency at an all-time low. 28:53 So what this means is that like We're constantly being forced to do these Windows updates. 29:01 We've all been sunsetted by some sort of application and just essentially screwed over. 29:09 And we have no other recourse. 29:11 These APIs are closing down and we increasingly with AI now, data is seen as a moat. 29:17 So there's only more incentive and pressure to close down these APIs. 29:22 Whereas HTTP protocol, as we all know, is, is meant to be open. 29:29 So when the web first came out, there was this idea of a user agent that I think that we just kind of forgot about. 29:37 Like, it used to be that the idea of a user agent was meant to be that when you're looking at a document or something, you might have some preferences. 29:49 We're all different people, we all have different preferences. 29:53 Why are we all looking at the exact same interface? 29:56 It doesn't make sense. 29:58 You know, something as simple as the font size or your font family. 30:05 So the idea of this user agent largely just didn't pan out. 30:12 But we're all trying to do something better. 30:15 And I think that's what AT protocol is all about. 30:19 So my little slice of this is working on something called BookHive. 30:24 It's an alternative to Goodreads. 30:26 So you can track your books, organize shelves, and all of that data is stored in the user's PDFs. 30:37 So when I was designing what to store in for Bookhive when you could imagine this sort of system, all that it really needs is some identifier for a book, whether the person has actually read the book or not, when did they do it. 30:53 That's all that you really need to store to the user system. 30:56 So you could literally just store this and that would be enough to render the Bookhive UI. 31:02 But what does this give the user? 31:05 It's just some random identifier. 31:07 It's absolutely useless to them. 31:09 They can't do anything with this data. 31:12 So this is what I actually store. 31:15 I give the people their book. 31:18 They, they want to know the book's title, the author, the actual cover art. 31:22 I actually upload it to your PDFs as a blob and all these other data. 31:28 There's also, particularly with books, there's no real standard identifier for a book. 31:34 It's open problem. 31:36 Everybody— every dataset has this different identifier for a book. 31:42 So I give you everything that I know about the book. 31:44 Anything that I have, I try to give it to the user. 31:48 It's all about giving the user what's maximally useful to them. 31:54 So we have an opportunity to build social software where data actually belongs to people. 32:01 Let's not waste it by giving people just these random identifiers that they can't do anything with. 32:09 The PDS is not just a database. 32:12 So you normally think of a database as trying to store like the minimal representation. 32:19 It's not about efficiency, it's about agency. 32:27 So there's a little bit of a thought experiment that you can take with this sort of thing. 32:32 If Bookhive went down, which it does all the time— it runs in my living room— is the data in your PDS actually useful to you? 32:44 And I'll get back to that as well, because I forgot to reorder these slides. 32:48 So one way that I handle this is with a central data store. 32:54 So what this means— that's on protocol. 32:58 So normally centralization is a bad thing, but in this case what I'm doing is I did, as I said before, and I give each user their data in their PDS. 33:09 But I also have this one little URI that it uploads— it makes a link to the Bookhive Buzz account as like a service account. 33:20 And this makes a central point of knowing all of the data. 33:27 Not everything that you need to store into the user's PDS. 33:32 They might not care about a book description or I can't make an update to a book if there's ever some sort of amendment. 33:41 But we can— everybody can reference this and we can all talk about the same book. 33:46 Using these URIs. 33:48 And there's an interesting opportunity here for doing things like backlinks. 33:52 Honestly, I haven't really explored this that much. 33:55 It's only been out for a week now. 34:00 So here's some proof that this user agency and that the data is actually useful. 34:07 PopFeed. 34:08 PopFeed actually is able to interoperate with Bookhive. 34:12 They're able to display all of the book data because they have all of the book data. 34:19 Another example is Book Explorer, which was made by Tice. 34:23 Tice actually, he wanted to be able to manage his books in a different application. 34:31 So he made this table view, and you can completely use a different frontend. 34:39 It doesn't have to be Bookhive. 34:40 This is real interop. 34:46 The only reason that all of this works is about— is because Bookhive stores the maximally useful data in service of the user. 34:57 So there's some takeaways here for builders since everybody here is related on the building side. 35:06 Store what's useful to the user, not just what's useful to you. 35:10 You may only need those identifiers, but give the people their data. 35:15 It's theirs. 35:19 Wherever possible, try to use standard identifiers. 35:23 And I'm actually out of data— out of time. 35:30 Alright. 35:31 Empower users. 35:33 Be their agents. 35:34 Open data. 35:36 Open source. 35:38 Thank you very much. Nicholas Perez 35:44 Thank you so much, Nick. 35:45 Unfortunately, we do not have time for another— for any questions, but— oh, sorry. 35:50 Yes. 35:51 Actually, we have time for one question. 35:52 You're right. 35:53 Yes. 35:53 In total, there's 10 minutes. 35:55 Does anybody have a question? 35:56 A question. 35:58 Yes, let me bring this to you. 36:03 I don't know if it's much of a question, but my comment, and I said this to you before, I like that this is a good low-hanging fruit for people to migrate from Goodreads away. 36:15 That's what I tell my friends. 36:15 It's like, this is one of these apps that you can already use, whereas with social media, it's a little more difficult. 36:21 People like, oh, private groups and stuff. 36:23 It's like, well, that's not working with App Proto. 36:25 But for Goodreads, I think as an alternative, it's really great.