Share what you learned today. Click here
March 20, 2024

What Activity Streams Could Enable in Podcasting

What Activity Streams Could Enable in Podcasting

Dave is out on this episode, and Sam Sethi from joins Daniel to geek out on Activity Steams and Activity Pub and break it down to find the pros and cons.  "The holy grail of podcasting is cross-app comments. The idea of being able to make a...

Dave is out on this episode, and Sam Sethi from Truefans.fm joins Daniel to geek out on Activity Steams and Activity Pub and break it down to find the pros and cons. 

"The holy grail of podcasting is cross-app comments. The idea of being able to make a comment in one app and then have a comment in another app, and then they synchronize over a single episode."— Sam Sethi 

Your Hosts

Find Dave at schoolofpodcasting.com

Find Daniel at theaudacitytopodcast.com

 Find Sam at truefans.fm (a great way to get access to ALL the 2.0 features)

Mentioned In This Episode

Evan Prodromou on ActivityPub; Gretchen Smith on Ad Results Media

https://weekly.podnews.net/1538779/14700579-evan-prodromou-on-activitypub-gretchen-smith-on-ad-results-media 

 Activity Pub Book by Evan Prodromou

https://www.oreilly.com/library/view/activitypub/9781098162733/ 

Activity Streams 2.0

https://www.w3.org/TR/activitystreams-core/ 

The Audacity to Podcast

School of Podcasting

TrueFans.fm 

Podgagement

Chapters

00:00:51 - Activity Stream Vs Activity Pub 
00:04:31 - Daniel's Translation
00:05:02 - What's the Potential
00:07:30 - Playback and Completion
00:10:50 - Understanding Mastedon
00:14:45 - Different Servers?
00:16:14 - TLV Records
00:18:57 - Privacy Concerns
00:22:33 - Centralized and Decentralized Performance
00:27:13 - Publishing and Pushing
00:28:32 - Comment Moderation
00:35:26 - Are Boostagrams Public?
00:36:27 - Lightbulb Moment
00:38:11 - Separating Data and Payments
00:41:37 - Just Ditch RSS?
00:42:31 - Truefans and Podgagement
00:44:01 - Because It is a Standard
00:48:01 - Yes, Sam Built Them All
00:49:53 - Progressive Web App
00:52:27 - Daniel is On Board
00:53:12 - Different Types of Streams
00:55:58 - You Won't Have to Learn This
00:57:08 - Sam's Challenge

FOLLOW THE SHOW ON A MODERN PODCAST APP

Castamatic Podverse  Listen on the Fountain App

 

Chapters

00:51 - Activity Stream Vs Activity Pub

04:31 - Daniel's Translation

05:02 - What's the Potential

07:30 - Playback and Completion

10:50 - Understanding Mastodon

14:45 - Different Servers?

16:14 - TLV Records

18:57 - Privacy Concerns

22:33 - Centralized and Decentralized Performance

27:13 - Publishing and Pushing

28:32 - Comment Moderation

35:26 - Are Boostagrams Public?

36:27 - Lightbulb Moment

38:11 - Separating Data and Payments

41:37 - Just Ditch RSS?

42:31 - Truefans and Podgagement

44:01 - Because It is a Standard

48:01 - Yes, Sam Built Them All

49:53 - Progressive Web App

52:27 - Daniel is On Board

53:12 - Different Types of Streams

55:58 - You Won't Have to Learn This

57:08 - Sam's Challenge

59:14 - 100,000 Sats

Transcript

Daniel J. Lewis [00:00:00]:
What activity streams could enable in podcasting? Strap in because this is a long episode, and we get deep in the technical weeds.

Daniel J. Lewis [00:00:22]:
Get your geek on because we've kicked out Dave Jackson for this episode, and this could end up being a little bit nerdy. It's just me, Daniel j Lewis with a special guest, Sam Sethi from truefans.fm, formerly known as Pod Fans. And we are going to talk about something that has some really awesome potential for podcasting 2.0 and several other cool things as well as siloed into specific apps, especially like what you're going to learn that Sam has been able to do with True Fans. So, Sam, here's my first question. Activity stream

Sam Sethi [00:00:56]:
Mhmm.

Daniel J. Lewis [00:00:56]:
And activity pub. Mhmm. What is the difference?

Sam Sethi [00:01:01]:
Very simple. Thanks. Good question. Okay. So a little bit of a walk down memory lane. RSS dot 2 dot o, Dave Weiner froze it and gave it over to Harvard. So the IETF created this thing called the Atom Feed which was a competitor to RSS. And the Atom Feed's core function was the extensibility that it had within it.

Sam Sethi [00:01:27]:
And as we now know, you know, Daniel, there's a name space extensibility to RSS as well, so it was very odd. But in the day, there was a battle between RSS and Atom, and I'd have no idea. Betamax versus VHS. No idea what the difference is. Or or

Daniel J. Lewis [00:01:45]:
for the more modern kids, Blu ray versus HD

Sam Sethi [00:01:48]:
Thank you very much.

Daniel J. Lewis [00:01:49]:
Or DVD HD. What was it? HD DVD. Yeah. That's where it was.

Sam Sethi [00:01:53]:
Bring that one up to date. Now what happened was Atom morphed into something called the activity stream, and what is an activity stream? So a couple of very clever people, Christmas Cena, Jason Snell, and Evan Prodimo said, look. Wouldn't it be cool with social networks where you could basically track the activity of people into an XML file and that was a structured piece of data. And so it started off with a very simple structure. It was called active verb object. Actor Daniel played object podcast. So the name of the podcast, future podcasting. And you can record that as an entry.

Sam Sethi [00:02:33]:
That's very simple. And there were more verbs that you could use. So you can extend those verbs to be follow, like, share, whatever. And what that gave you was a nice structured piece of data, XML based, that wasn't a set of activities that were carried out by the chapters, in this case, you. And I could then read that file and I could then pass it. I could do other things with it. So I like to liken it to a user generated RSS feed. That's the best way I like to talk about it.

Sam Sethi [00:03:06]:
Now activity pub is the protocol over which you deliver activity stream. So think of TCP IP and then RSS is the data and TCP IP is the transfer protocol. So in the same way, you have an activity stream and you then send it to over an activity pub protocol to a client like Mastodon or whatever. And so in that client, they can then read the activity stream and then pass it out and then display whatever's in there. So a good example is Dave Jones has created something called the activity bridge. I don't know if you've seen this yet. So you can go into podcast index, look up in our, feed or a podcast. Sorry.

Sam Sethi [00:03:52]:
It has a unique ID number. You put that ID number with atap.podcastindex, and boom, it suddenly appears in your Mastodon as the podcast, and you can follow it. And so what you've got is the activity stream is a set of, data based on users' activity in a social network. In this case, it could be Truefans. It could be or another third party client. It could be, you know, if if Twitter supported it, you could have it in there as well. And then you deliver that over the activity pub to a activity pub client such as Bastogon. That's it.

Daniel J. Lewis [00:04:30]:
So trying to simplify this as well as understand it. Because some of this stuff I'm learning too along with our audience and also wanting to Yeah. Make some of this a little more plain English. So activity stream is basically how the data is stored. Yep. Is that correct? And then activity pub is how it's delivered.

Sam Sethi [00:04:49]:
Correct.

Daniel J. Lewis [00:04:50]:
Okay. You

Sam Sethi [00:04:51]:
should've said you should've done this for me. It was much easier.

Daniel J. Lewis [00:04:55]:
No. See, that simple understanding came from the complex explanation. Right. Thank you. So what is some of the potential with this? First, let's jump to what you're doing with activity stream on truefans.fm.

Sam Sethi [00:05:11]:
Yeah. So we built Truefans, with activity streams at the core of it. So we said that as a user, I can log in, and we will then give you your personal activity stream of all the things you do while using Truefence. So I could go in, and I can see how many, episodes I've played, how many people I've followed, how many times I've created a clip, how many times I've boosted, how many times I've zapped. So we've created 30 verbs within Truefans that enable us to track the activity of all users. Now what we wanted to do and have done is make sure that that activity is private if the user wants it to be. So you can go into the user settings and say hide activity and the only person who will see that activity is you, the user. Or you can say, actually, I wanna make everything public.

Sam Sethi [00:06:05]:
No problem. And anyone can then go to your profile and see what activity you've done or converse the 3rd way, which I think is the best way is we've made all the 30 verbs available. So you just tick the ones that you want public, and the ones you want private are then hidden. And see, I might say, I just want to show my plays and boost, I don't wanna show the show to people I follow or any other activity I make. So, yes, so we create the activity stream for each user. And because we've got a social network element, I can follow Daniel, Value can follow me. Because we have that model, you can then go and see my profile and see my activity. And therefore, you might say, oh, what what was Sam listening to yesterday? Or what did he boost just now? Or what did he clip? And, again, that might be a signal for you to go and listen to a podcast or listen to a clip because you can see my activity.

Daniel J. Lewis [00:07:04]:
Okay. So where I want to switch this around a little bit is when we're thinking about the future of podcasting. And we've got a lot of things in development with podcasting 2.0. And my impression, the more I understand activity stream, the more it seems like this could be used for a lot of things inside of podcasting 2 point o. Like, I'm thinking years ago, it feels like now, I proposed a webhook idea where podcast apps could report back play information to some central server or something. And that's how we could then get the playback and completion rates from an app, and an app developer could report that kind of information back. Can can activity stream do that kind of thing?

Sam Sethi [00:07:53]:
Yeah. So what we've done is, apart from the verbs, we've also attached things like time listened, percent completed, and value paid. So if you play the future of podcasting, I might have time listened 88 let's say, 28 minutes, which might be 60% of the show and I gave you 10,000 cents. Right? All of that's interesting data metric as well that gets attached to your activity stream. What we're missing right now is the ability to centrally aggregate all of that into a single point. So the next step for Truefans is that we're gonna allow users on Truefans to publish their activity stream to an activity pub client. So you might say, I want to publish, all the things I play automatically. Or anytime I make a a clip, just let me have the option to click it and then share it on an activity pub client in the fediverse.

Sam Sethi [00:08:52]:
So that's a good second step to what we wanna do. I aggregate all my activity and then I share the bits I want with my social network, and that's good. And then that's a signal to my social network maybe to come and listen to another podcast or whatever. But the core bot part, and and I think the holy grail of podcasting is cross app comments. The idea of being able to make a comment in one app and then have a comment in another app, and then they synchronize over a single episode, let's say. So the way to do that would be I would create an activity stream in Truefans, somebody want to create 1 in Podverse, someone creates 1 in Fountain. Because we've got this unique GUID, this, and the feed item, which is a a unique identifier for a podcast and an episode, we could aggregate everything around that single core ID ID. And so Fountain would publish the activity stream for Daniel from fountain with your permission.

Sam Sethi [00:09:53]:
And then if you use true funds again, that would happen. So you could actually aggregate all of your activity from any apps you use or it might be Dave the apps could just listen to updates from the central database repository and pull down the additional comment or pull down additional data. It doesn't have to be comments. It could be, for example, on fountain, you followed Adam, and then, we don't need you to follow Adam again on Truefence. Why would you want to replicate that social graph? So the point is we would see that activity and then we could replicate that activity in all the other apps as well. So when you went into the alternative app, guess what? You're following Adam.

Daniel J. Lewis [00:10:50]:
So when we're talking about this, especially, like, with the cross app comments because that's the like you said, that is the holy grail. That is something that I wish we had solved by now. And it feels like it's not so much a data storage issue, but an interoperability and a, both the whole cross app aspect of this. Because what I've seen that's frustrated me so far, and before, maybe as recent as before a month ago, I didn't know there was a difference between ActivityStream and ActivityPub because every time people were talking about ActivityPub, I thought Mastodon. But Mastodon is just an Activity Pub client. Yes. Right?

Sam Sethi [00:11:34]:
Think of Activity Pub and Nosta. The same they're a protocol. That's all.

Daniel J. Lewis [00:11:39]:
Okay. Well and I know nothing about nosta either. But, so these are protocols to be able to access the activity pub. So, like, when I think about cross app commons Mhmm. One of the frustrations I faced is the understanding of just how, like, Mastodon works. How there is no one central server, but these multiple instances or multiple servers can connect with each other. And so you can follow people who are on a different server. Mhmm.

Daniel J. Lewis [00:12:11]:
And you can bring in content from another server into your own server.

Sam Sethi [00:12:16]:
Yep.

Daniel J. Lewis [00:12:17]:
Where I see some complications with this, performance is a big thing that I'm worried about. Because the first time I saw cross app comments using activity pub implemented, it was dead slow

Sam Sethi [00:12:32]:
Yeah.

Daniel J. Lewis [00:12:32]:
To load just a single episodes comment stream. And there were not a lot of comments. There were only under a dozen, I think. How do we solve that with what we're talking about here? Or is that

Sam Sethi [00:12:45]:
Let's take a step back. Right? You use email. I use email. Right? You don't need to know the underlying structure of the email, whether it's pop 3, IMAP 4, whatever. Right? I just need to know you're danieljlewis@someserver.com somewhere. And conversely, you just need to know mine. Right? You click a button, the email goes off and you don't think about it twice. That's a federated network.

Sam Sethi [00:13:08]:
Right? That is a federated network of email And we we are used to that and we know it works and, you know, that's it. It has its own, foibles. Sometimes email doesn't get go out, but fundamentally, it works 99.999 percent of the time. The social network, Mastodon, Plex, and all the others are federated servers of, Activity Pub. And again, you have an address. I have, Sam Sethi at Sam Sethi at podcast index dot social. Right? That's my Mastodon address. And if you wanna follow me, that's how you find me.

Sam Sethi [00:13:46]:
You go to it it basically finds that address like you would an email, and then you just type something out to that address and boom, it appears in my inbox. And in fact, activity pub clients are fundamentally an inbox and outbox. That's all they are. Very, very simple. Your inbox is the stream of information you're reading, and your outbox is the messages you write that appear in somebody else's inbox. That is as fundamentally simple just like email. And that's why I think it will work and it will scale because we know that we can scale email that's gone and done for 20 plus years. And what we're seeing with the Fediverse is more developers are putting time and energy into it and fixing some of those bugs and those slowness and those issues.

Sam Sethi [00:14:32]:
So I think, you know, again, give it give it another year. I think all of that's gone. So your your problem around scalability and your problem about speed, I think, are just short term road bumps on the road to where we need to get to.

Daniel J. Lewis [00:14:46]:
Okay. Because as I understand it, like, even with the metaphor of an email inbox, when I get my email in my mail app, it is downloading the messages and I've got that on my computer there. You don't if you send me an email, you don't have access to all of my emails. I don't have access to all of yours. We are sending one thing directly to the other JSON, but not making that whole conversation thread visible to a third party.

Sam Sethi [00:15:19]:
Mhmm.

Daniel J. Lewis [00:15:19]:
Whereas cross app comments, we want it all to be visible to everyone else. So, what it seems like and please correct me if I'm wrong here. I hope I'm wrong. What it seems like the way that it has to work now is that there is a a root post that is basically the episode post. Is this is episode 5, and that's the thing that everyone is commenting on that or replying to each other. But when they're replying to each other, there's still the it's just a downward tree or a cascading of all of these connections and replies and relationships across each other. It seems like every one of those individual messages could potentially be on a different server. Is that true?

Sam Sethi [00:16:08]:
Yep. It could be on a potential different server. It could be a federated index that we're looking at.

Daniel J. Lewis [00:16:13]:
Again So that's the nightmare.

Sam Sethi [00:16:15]:
Yeah. We haven't, to be honest with you, Daniel, this last part of the leg, the step 3 hasn't been really finished. I was I was interviewing Evan Prodimo. I was talking about cross app comments and there is a server based capability where you can publish your activity streams to, but it's not quite, you know, fully baked out. And so I think there's still another step. So I think what I've been trying to do is say to the community, look. Here's a w three c open standard. This is not some something.

Sam Sethi [00:16:48]:
I I asked actually, I asked the Mastodon group, you know, all of the guys you you're involved in it as well. I put out a message. What does TLV record stand for and who created it? Oh, my god. It wasn't very clear. And I think Dave Jones eventually said it was somebody from Sphinx who created it many years ago. And then Steven Bell said, well, actually, the TLV record which is this, payment record of what's been paid on a podcast is an activity stream. But it's a proprietary activity stream devised by somebody that we don't really know anymore who's not involved in the community. It's got 4 verbs in it which is stream, boost, auto, and reply.

Sam Sethi [00:17:30]:
That's the 4 verbs. And within those 4 verbs, the stream verb, for example, you will put payments, you will put sender, you'll put receiver, you'll put, podcast episode, all sorts of data will go into that one bit of information. But that's just an activity stream, but we've created this TLV record activity stream fundamentally by by by chance, I think. What's happened was somebody started off this idea, and I then think Dave Jones created helipad for Adam to be able to read them. And then we've sort of gone and followed this whole concept of the TLV record, but nobody's actually really understanding how we expand it, how we extend it, and what's the value of it. And and cross out comments won't come from the TLV record. So Adam is doing something that I find, a little frustrating. The TLV record which is a, basically, it's the whenever you listen to a podcast and you make a payment, a stream, or a boost, it creates a like a receipt.

Sam Sethi [00:18:35]:
Okay? Think of it as like a receipt and telling you Sure. What you've paid and who you paid it to. Right? That's private to you and the person who receives it. So if you paid me, a a 1,000 boost a 1,000 sat as a boost, I receive that. But if I then decide to put James Cridland in the split, James now sees that TLV record. Yeah. If I put 15 people in the split, all 15 people will see the split.

Daniel J. Lewis [00:19:01]:
And that is right there, that's a, I've raised this concern as well. That is a major privacy concern because the person listening may not know who all is going to receive this message. And some people in a boostagram, they may say upfront, please don't share this on the podcast, but I wanna send you this gift because I was gonna commit suicide last night, but I listened to your episode, and it stopped me from pulling the trigger, and that's why I'm sending you this they do not want the world to know that message.

Sam Sethi [00:19:30]:
And now, everyone in the splits will get to know that message.

Daniel J. Lewis [00:19:33]:
Right. And there could be even worse scenarios than that. So that does create a problem. One of the things I would love to see is this activity stream idea be used for more than cross op comments. And, we can get back to cross op comments. But, like, for the boostograms, which you and I both see boostograms as basically comments

Sam Sethi [00:19:56]:
With payments. Yeah. That's it.

Daniel J. Lewis [00:19:58]:
Yeah. So we could write boostergrams to the activity stream as well, or has that have that as some kind of option.

Sam Sethi [00:20:07]:
We do that now anyway.

Daniel J. Lewis [00:20:09]:
On. True fans are doing that? Okay. Yeah. And then the maybe that could even be an an option to the person sending the boostagram where there is that toggle that is, like, make this public. And if they say yes, then it goes into the And,

Sam Sethi [00:20:25]:
again, we have done that. So in your user settings, you choose which verbs you wanna meet private and fit which verbs are public, and that is it. Nobody you know, if you want everything to be private, you set it to private and no one sees your activity. Set it to fully public and everyone sees it or set that intermediary. I choose the verbs I want to be public. Now we talk about cross app comments, but what about cross app clips?

Daniel J. Lewis [00:20:51]:
Right? Yeah.

Sam Sethi [00:20:53]:
Or, you know, we we've got other things that we've got planned that would allow you to have interoperability between apps. So I think what I'm trying to do and I'm I I I don't know if I'm failing, but I'm I'm still knocking this door very hard, is saying to people, look. We are very good as a community of saying RSS is the, you know, the truth of feed a feed of truth. Right? Right? It's an XML structure piece of data, and we're adding tags into it. Think of those tags as verbs. They're just the same wording. Right? We're just using a different word in RSS, but they are just verbs. Right? So the person tag, the transcript tag, they're verbs in the RSS feed.

Sam Sethi [00:21:36]:
And then we know what we do with them. In the same way with a user generated feed, the activity stream, we just have verbs and we can extend those verbs to as many verbs we want. You know, things that we haven't thought about now we can add as a new verb. And so, what I'm trying to say is, the top end we've got RSS with a a structured piece of data. At the bottom, we've got activity team with a structured piece of data. And that our activity stream just in its basic format as I said earlier, can you can just say, I just wanna publish it to my Mastodon client. And so everyone can see who's in my social network, who follows me what I'm doing. And that's one simple way of sharing.

Sam Sethi [00:22:15]:
And then the other one, as I said, is to aggregate it around an episode. And then, yes, maybe we start with cross that comments, but then we end up with cross that clips. Maybe we end up with other things that we haven't developed yet that can be interoperable between apps, but you've got structured data which means it's possible. It's totally possible.

Daniel J. Lewis [00:22:34]:
I know that some of the complication with building things in the modern web and with podcasting 2.0 is we've got in podcasting, we have a combination of centralized and decentralized. The the data for a podcast, from a podcast Mhmm. The podcast itself is centralized. The consumption is decentralized. So like the RSS feed, there is 1 or there should be only 1 RSS feed Yes. For a podcast. There should not be hundreds of feeds and mirrors and all of these proxies you have to worry about. There is 1.

Daniel J. Lewis [00:23:08]:
Mhmm. So that's centralized. There are other aspects of podcasting. Like, there is one media file. Yes, it does get syndicated across a CDN or a content distribution network. But still, that's super easy for the publisher when they upload a new file or replace it that then all of that gets flushed out and then refreshed with a new file. It's still centralized. The podcaster themselves is in control.

Daniel J. Lewis [00:23:30]:
The decentralized asset aspect is the consumption of all of JSON, And that's where we have hundreds of apps that people can use to consume centralized information but consume it in a decentralized way. So looking at activity stream, one of the ways that I could see this working out for cross hop comments, for a lot of things, for the webhook or, John Spurlock came along and also proposed a similar idea calling it the events tag. Same thing. Webhook events. Same thing. But all of this could go into a central activity stream that the podcaster controls or owns in some way, whether that's through their podcast hosting provider, some service that they run themselves or pay for, whatever. But it's a centralized service, centralized location. And then all of these other activity pub clients built into apps or other, systems can read that centralized information.

Daniel J. Lewis [00:24:33]:
And maybe the solution to this performance problem is that whatever is hosting that centralized activity stream is responsible to go out and find everything that was federated, that was networked with it and sent back into it, And then pull that in whenever one of those apps, like, sends that ping into that activity streams inbox. And please correct me if I'm, like, saying something incorrectly. I'm along the way here, but

Sam Sethi [00:25:03]:
What you've got to think of is, if I write a boost in Truefans, in my activity stream, that's now my outbox. Okay? And then I publish it. That gets published, then we where it get published to today is the question. Right? That's what we're trying to figure out that part, that that last part. But wherever that gets published to, fountain will then have an inbox, which is the boost section of that episode where that will then appear as a message into that section. So my boost that I wrote in True Fans gets published. Fountain listens for that episode, and there's a new piece of data in there, like, think of it as an email, and it gets then published down to Fountain. Right? So fountain is an inbox in this case because it's getting data from another app.

Sam Sethi [00:25:56]:
And I'm an out box because I created it in Truefence. Conversely, if you were using fountain and you created a clip or a boost in fountain and then published it, That's then goes out of Fountain's outbox for Daniel, and I then listen for that, and then I bring it into the inbox, which is the episode where it then gets aggregated with any other comments made by Truefans people. So you then get a mixture of Truefans comments and you get a mixture of Fountain and Podverse and, podcast guru. And that's how you get cross outcomes. This concept of an inbox and an outbox is fundamentally critical to understanding how activity pub works and how activity streams are just messages. So activity streams are just messages, but they happen to be richer than an email message, which is a single verb. It happens to be multiple verbs. And so I'm creating fundamentally a boost in email message if you wanna think of it.

Sam Sethi [00:26:58]:
I'm then putting in my outbox in Truefans that then gets published, and that could be published to my Mastodon or to a central location. And then others are listening for it just like they would on an email, and then gets dragged into the inboxes of those applications.

Daniel J. Lewis [00:27:14]:
So that whole publishing aspect and the other apps listening, that is something where when you publish, you're sending it to those listening services. Right? It's a it's a push. Yes. Okay. So they could receive that push. They don't have to be running a server that is pulling p o o or p o l l Yeah. I n g. That is pulling these other services.

Daniel J. Lewis [00:27:38]:
They don't have to do that. They can just have a listener webhook endpoint, whatever. Ping. Yep. And it can receive that and then publish it to the centralized activity stream that belongs to the podcaster. Yep. And by belongs to, I mean, is in their control. It might be on the podcast hosting provider server, but it's in their control.

Daniel J. Lewis [00:27:58]:
And then one of the other problems, haven't mentioned yet in this episode, a big thing that I see is the need for moderation. Not in the sense of what the world is talking about with content moderation, but in the sense of the podcaster wants to be able to moderate content and control what content is seen with their content. So, a practical example here is maybe I have a clean podcast designed for kids and someone comes JSON, and they make a comment that's laced with profanity and sexual content, whatever. Yep. And I might not be able to block their whole activity pub server because maybe they're using an open server that's used by a lot of other people. But I need to be able to either remove that comment completely or maybe it's a genuinely valuable comment, but they just didn't realize, oh, this is to an audience of children. I probably shouldn't use this profanity. So, I would want the ability to then just edit out, censor that profanity so that the value they're giving in the comment could still be there, but it would still be appropriate for being alongside my podcast.

Daniel J. Lewis [00:29:11]:
So that's why I think that there is the need for a centralized storage of the activity stream.

Sam Sethi [00:29:17]:
Yeah. So so two parts to that. 1 is how do you moderate comments? I mean, look. We've we've all had this problem across the web. Right? I mean, look at look at YouTube's comments. Look at, you know, every time that Facebook has comments, there's a whole bunch of issues. Right? So, with Boost right now, we have no moderation in the sense of keyword lookups or keywords that we don't want. Right? That hasn't been built.

Sam Sethi [00:29:44]:
But what we have done again in true fans is got a flagging system and a moderation system. So for example, in your admin dashboard for the future of podcasting, if I made a profane boost, right? And somebody reported it, you don't have to see you you don't have to do it yourself but you can read all of your own comments that people are making. And you might say, right, flag that one, delete that one, get rid of that. As the owner of the podcast, you will get a flag notification and then you can read it and go, you know what, Sam? That wasn't very clever. I'm gonna delete it or I'm gonna send you a message which says, by the way, Sam change that. Take those words out and I'll I'll let it be published again. So we've built that in already as well. That moderation.

Sam Sethi [00:30:30]:
That was built day 1 fundamentally because my wife used to run MSN UK and they had to close down all of the community, sites because of all of the pedophiles and the dodgy content that was going. So I've had that drilled into me from day 1. And I think we haven't even thought about that in the podcast community yet, about cross app comments and the whole of what you just said. We, you know, we we know that, YouTube commerce is a cesspool of commentary half the time, and we haven't seen that yet because guess what? There isn't enough, usage of boosts to make that a worry. The hope is that because a boost has a micropayment with it that that trolls won't leave, you know, crappy comments. That's what we're hoping, but that's not true. I've seen advertising comments. I've seen other comments that are, you know, one sat sort of made a micropayment but they put up total rubbish.

Sam Sethi [00:31:28]:
And I remember from my days in, WordPress. You know, we had, something called a pingback, which was a great idea. Yeah. Right? Which was, you know, somebody's made a comment that's referenced you. You get a notification, blah blah blah. Well, of course, the the the spam has worked out that you could use pingbacks to go and do all sorts of other things, and we had to close that down. So I think we have got some challenges in the future, but, they're not there yet. And I think, you know, just make being able to do first level moderation flagging and deleting, I think, is the thing we have to look at.

Daniel J. Lewis [00:31:59]:
Yeah. And I think that the the solution for that is if that activity stream can be centralized that the podcaster has control over, and that is then seen as the source of truth Yeah. For that podcast. So the podcast apps would default to loading from that even though that comment would still exist somewhere out there in the fediverse. Mhmm. It would not be in my comment stream, in my activity stream because I've removed it. And so when a podcast app loads the cross app comments from my podcast, it would be loading from my activity stream, and therefore, it would not show that comment.

Sam Sethi [00:32:36]:
I think again, you know, let's go back to basics. Right? So an activity stream now, now that we've discussed it a little bit, is basically a set of activities of a user on a podcasting app. Daniel played feature of podcasting. Sam played podcasting 2 dot o. Daniel boosted Daniel clip. Right? That becomes a stream of activity that you own that is your data that you can have hidden for privacy or public. The bits that we know is that that can be published to your activity pub client like a Mastodon, so I can choose what I want my social network on Mastodon to know about what I'm doing or not. And then the final part is how we publish it to a central repository that will then allow cross app comments, cross app clips.

Sam Sethi [00:33:29]:
And that third part is still being developed or thought through and and is not finished. Right? So let's be clear that part isn't. But my worry is what we're doing in the podcasting 2 dot o community right now is we're using the TLV record as a proxy for an activity stream with 4 verbs, and we're creating, as you said rightly, a privacy issue that the person who's receiving the money can create splits and then multiple people get that TLV record without the user who made the payment knowing where that record went to. And I don't think it's scalable because, you know, as I said, it's 20 podcast apps. Right? So Adam today puts 1% in for the boost to gram bot on fountain. What if Podverse has a boost to gram bot? What if I have a boost to gram bot? Does he have to put 3 splits in now? What if all 20 of us have a boost to gram bot? Is there 20 splits in Adam's wallet so that we can all see that TLV record? That is not a scalable solution. That is a hack, and it needs to stop.

Daniel J. Lewis [00:34:36]:
Yeah. And one of the things that I brought up before, and I'll I'll mention what shot it down in a moment, but I I brought up a proposal of what if we have on the value tag for whatever split that you were putting in there. Now we have to think about also the time based splits, but for whatever split, you could have a flag on there that is basically like do not send messages with this. For for Podverse or for whatever. If we've got them in the split, then they do not get whatever message someone is sending, but they do get the split of the this booster grant or the, the sats that are being sent with them. One of the things that was used to shoot that down though was saying that all Boostagrams are already public. Is that true? Like, on the blockchain sort of public or what?

Sam Sethi [00:35:33]:
Yeah. I mean, if you go to Olby, and you go to a product they've called Saturn, you can see pretty much most streams that are coming through. I can see so anyone who's sending stuff to True Fans, I can go and see. Right? But because it's

Daniel J. Lewis [00:35:47]:
But you can only see it because it's being sent to True Fans. You can't there is no public record.

Sam Sethi [00:35:52]:
And which is why you put somebody in the splits to make them available so that they can see that same TLV record. And I just think you know, let's be brutally honest. I think the idea of value for value is great. I love the idea of the micropayments. I love the idea of wallets and splits. I think that's a brilliant model. Don't wanna change that. But I think the data mechanism of how we record those activities around payments boosts streams, replies shouldn't be done through a TLV record.

Daniel J. Lewis [00:36:28]:
Okay. So I just had this light bulb moment that all this time when you've been saying that, like, dissing on the whole 20 different splits in a single podcast episode and saying the activity stream solves this, all this time I was thinking, how in the world so for anyone else that was there with me wondering how does this solve the splits, this was the light bulb moment that finally I realized is when you're adding like a Podverse or an OP3 or whatever in there, the only reason that many podcasters are putting that in there is so that those apps get access to the data. Yeah. So that they get access to the activity. Yes. Not so they get a portion of the fee. Although, I'm sure some of the people

Sam Sethi [00:37:08]:
And they will get a portion of the fee as well. They'll get a 1% portion of the fee.

Daniel J. Lewis [00:37:12]:
So what you're saying that we could do with this and the activity stream and everything is so that those services that only need to be able to track the activity could instead use the activity stream as long as the apps, whenever they send a boost to gram, also send that data over to the activity stream.

Sam Sethi [00:37:30]:
And to your point, I could then say, yes. I want John Spurlock in o p 3 to have access to my activity, but, no, I don't want I can't think of anyone. Facebook on threads, which is an activity pub client to have access to my activity stream. Right? So I could choose where my activity stream is public when it's published, who has access to that published data. That's the point. And the problem is I, as the user, can set my permission levels on what I want public and private and access levels on who should get access to my data that I have published.

Daniel J. Lewis [00:38:11]:
So then you would be splitting right now it's data and payment is together. Mhmm. So you would be splitting it so that you only put who you want to receive a payment in your value time splits or your value splits. But data would be completely separate from that.

Sam Sethi [00:38:28]:
It can be. It doesn't have to be. It can be. So as I said very earlier, the activity stream structure is active verb object. The object is fundamentally the episode, but we can extend the object to be the timeless and the value paid and the percent completed. We can extend objects to be multiple objects. It doesn't just have to be the episode name. Right? So what what did Value, the actor, do? He played the object.

Sam Sethi [00:38:57]:
And what happened with that object? It had these extra attributes on it, value, time, and etcetera. That's data. That's just we've done it. We've seen this structured data. Right? You know? So that's data that that can be read. I could then, as a user through apps, choose what verbs are published. But once I've published that, I can then choose who has access to that as well. And so you aren't, separating payment from data.

Sam Sethi [00:39:28]:
Sorry to be clear. But what you are doing is separating the for people to access the data I choose to publish because they have to have my permission to access my data. And that's all it is. So Fountain would request access to it and I go, yeah, I love Fountain. Yeah. I love Podverse wants it. Yeah. Go.

Sam Sethi [00:39:47]:
You go for it. OP 3 fantastic. Meta, nah. I'm not giving you my data. That's it. That's a simple Sure. Thing. And I don't think look.

Sam Sethi [00:39:56]:
It it takes a little bit of thinking and time, but but you start off small and you can build it. So as I said in True Fans, we we create your activity stream around 30 verbs. We're going to step 2, allow users to publish that to chapters Don clients over activity pub, and then we're gonna work on a model for centralization of activities around a central repository. And when people say, oh, you can't centralize things. I go, isn't the podcast index a central repository? You know, I I won't say who told me that. And then I said, strange that, isn't it?

Daniel J. Lewis [00:40:33]:
And you know one of the cool potentials I'm realizing with this is right now we already have a great model of a way something like this is being used. Whenever you connect one App to another App, often there are certain permissions that you're giving. Certain apps require certain permissions, but you have control sometimes over those permissions. Like, you might say that for this app, I'm giving it permission to read Mhmm. All my data from this other app, but not to write to it.

Sam Sethi [00:41:01]:
Exactly.

Daniel J. Lewis [00:41:02]:
Or like here in the activity stream aspect, where maybe it's Saturn taps into your activity stream, and then you're saying, I am giving Saturn permission to read all of the value of my satoshis I've received, but not the messages Yes. That came in from it. So, like, whatever that server is that's hosting the central activity stream could then handle that authentication, creating the different API endpoints, or all of that. That's all developer stuff that they can take care of. The podcaster themselves and the audience don't have to worry about that. That's pure developer stuff, but that's possible with this activity stream idea.

Sam Sethi [00:41:41]:
Yes.

Daniel J. Lewis [00:41:41]:
Why don't we just switch why don't we just ditch RSS completely and switch to activity stream?

Sam Sethi [00:41:45]:
Well, boy, don't don't don't No.

Daniel J. Lewis [00:41:47]:
No. No. Don't do not. I didn't say that, Adam.

Sam Sethi [00:41:51]:
Yeah. That takes us back to RSS versus Atom. That's where that the whole discussion started. Look, I think what it is, I I I don't know whether we'll we'll get activity streams, if I'm honest, to to be adopted by everybody. I don't Because I think there's a lot of people who are invested into the TLV record and the way it works. So I think it could be the inertia of people saying, I'm not even gonna bother to look at what's going on elsewhere with an open standard. I'm gonna keep this proprietary standard that we have within our community because there's too many people invested into that proprietary standard.

Daniel J. Lewis [00:42:31]:
Well, one of the things that I've noticed with podcasting 2.0 is what catches an idea is when it can be shown that it's working and also the actual code shown like this is how easy this is to integrate with this thing or the other thing. And it has me thinking like with Podgaugment, Sam and I are both developers here and we are developing on very similar code stacks even. Mhmm. But it has me thinking where I want to go with Podgagement, all about engaging your audience with a podcast, I want it to support cross app comments and I will build that in whenever we figure out how that's possible. But I'm kind of wondering, maybe I should just start trying to work with you on what can I get from true fans and bring it into Podgave already? Yep. And then we can show that to the world to say, look. Here are 2 apps working together, and look how fast they're working because the activity stream is centralized. And one of the things one of the big reasons why I think that the activity stream itself needs to be centralized as a source of truth that the podcaster can control is the portability of it.

Daniel J. Lewis [00:43:40]:
Mhmm. That's something that else is, I think, very important in the podcasting space. Because everything else about podcasting is portable too. The activity stream needs to be portable as well. So to the point that you could take that activity stream, export it from whatever tool is currently hosting it, import it into the other tool, and then you just pick right up Yeah. Where you let them know.

Sam Sethi [00:44:02]:
Guess what? It would contain your social graph and your podcast graph. So your social graph of people you follow and your podcast graph of the podcast that you JSON to. That's contained within the activity stream as well. So it's not just containing boosts and and and values paid and streams. It contains follows and, and, you know, we have we use the verb become a fan but that's subscribe. Right? That's fundamentally I subscribe to the future of podcasting. The minute that there's a new episode of the future of podcasting, I get a notification. Boom.

Sam Sethi [00:44:36]:
That's simple. We just call the verb become a fan but underlying, it's really subscribe. And if I follow Daniel in True Fans and Daniel happens to listen to a new podcast or or makes a boost or a clip, I get a notification that says Daniel made a boost or a clip. And so the activity can be linked to notifications, which is, like, fundamentally webhooks. And again, that aspect of it as well is is really interesting. But I think where we are as an industry, I think we need to think We're getting excited about activity pub and then we sort of go, yeah, but we're not gonna use that. We're gonna use this other thing. And I I worry.

Sam Sethi [00:45:17]:
That's where I am. I'm I'm very worried that we so I'm trying to find out if we could aggregate both activity streams and the TLV stuff together because all it means is I can take what I've got internally in Truefans, the verbs, and I can go to Dave Jones or I can go to Adam or whoever, Nathan. Say, hey, I've got an extrovert to add to the TLV record, follow or become a fan or subscribe or whatever. I don't even know who would make that decision to extend the TLV record with a new verb. I just don't know. It may be just down to Dave Jones, which is fine. I love Dave Jones. But I don't know, and it's not a standard that I could follow, whereas activity streams is a standard.

Daniel J. Lewis [00:46:01]:
Yeah. And what I like about it is how extensible it is. I think I've made a couple enemies in the Podcasting 2.0 space because Well,

Sam Sethi [00:46:08]:
I think I am as well, Daniel.

Daniel J. Lewis [00:46:11]:
I tend to come in with one of 2 things. Yes. Or it's a bonus if you get both of these things from me. One is, hey, the tag should be called this instead.

Sam Sethi [00:46:18]:
Yes. Yes.

Daniel J. Lewis [00:46:19]:
That's one of the things that I'm, to put it in British for you, I'm on about often. The other thing is I often think of the future. That's why I wanted so much to be involved with this podcast with Dave, the future of podcasting, because I keep trying to think about what is the potential for this? What are the things that we could foresee doing with this? So how can we build it now so that it supports these things in the future? And, I see that with activity stream so much that in a way, it's almost like this beautiful blank canvas that we can do almost whatever we want with it. We will need a structure to it, of course, and certain verbs and a set of these things. But it could be easily extensible to the point that app developers who build in support for activity stream and cross app comments, at some point we could say, alright. Here is the protocol or the spec for podcast consumption data. So, report the playback at every 5% mark or every 1% or whatever it is, every 10 seconds, 5 minutes, whatever. And whenever we come up with that standard, then the developers who are already supporting cross app comments through activity stream could know that, hey.

Daniel J. Lewis [00:47:37]:
I already know how to write to the activity stream. All I need to do is add an extra trigger into my App that will send this slightly different data that's in the same structure, just slightly different verbiage here and there in the data to the same destination. And now, boom, we've got this other new feature and easily populating it. That's what I love about this.

Sam Sethi [00:48:00]:
Yeah. And look, I think going back to what you said, I think, you know, post this, I'm very happy to sit down with you and show you how we've built the activity stream in True Fans and then how we can share that data, you know, with you. I can do it from my own activity stream, so I'm not asking for anyone else's permission. So before everyone goes, you're not giving all of your data to Daniel. I no. I can just do one. It doesn't have to be all. And Daniel can do his, so we've got 2 sets of streams and we can share that and we can cross that comment and we can do all sorts of different things with it.

Sam Sethi [00:48:32]:
And then once we've worked it out and and one of the jokes in the industry, Dan Daniel, you said one of yours is, you know, you always talk about certain things and people go, oh, Daniel Varian. You don't have to do that. What's the name of this tag? Mine is and I get it often. Oh, True Fans has built every name space tag, have they? Right? And the answer is yes. And why do I do that? I I do that because seeing is believing. I believe that so we implemented pod roles first. And and the reason why James Cridland did it and I did it was because we could show it working. Then we could give it out to everybody and go, look.

Sam Sethi [00:49:06]:
That's what it is. People then came back and said, you could tweak it here, comment there, blah blah blah. We did that, and now it's rolled out. Same happened with, you know, publisher feeds that we've been working on recently. Okay? Those are, you know, aggregated podcast feeds of, you know, so Wondery might have 50 podcasts. Right? How do you find the other podcast that Wondery has if you re if you just like 1? Well, there's a publisher feed. Now we built those and Dovidast did that with me and and we made it work and it's looking great. There's a couple of tweaks still left to be done.

Sam Sethi [00:49:42]:
But once those are done, that will be published as a standard. And so, yes, I'm a great believer in build fast, fix quickly.

Daniel J. Lewis [00:49:52]:
Yeah. And a a lot of potential. And I like that with since you're building a web app Mhmm. Where the cool thing these days is to call it a PWA, which I see that those three letters thrown around all this time and so many people don't even know what a PWA is. But progressive web app. But what is great and what I want other developers to understand is that you can be so agile with your development because for one thing, there is no gatekeeper for you. You're not waiting for Apple to approve your latest app and they're not homing through your code to make sure that your app update can be allowed onto the store. Like, look at Podcast Addict.

Daniel J. Lewis [00:50:33]:
Man, the problems that Xavier has faced with Google Mhmm. And Google is much more lenient than Apple is, but that he'll add a new feature and then Google will basically say, no. You can't do that. And so he runs into that problem. You don't have that problem. So you get to be agile, and you don't have to wait until True Fans 5 can launch to start thinking about podcasting 2 point o

Sam Sethi [00:50:58]:
No.

Daniel J. Lewis [00:50:58]:
Support. JSON. But you can just put in that feature right away and that's what's really neat about the web based development of this. And that that was really just a little tangent aside there. But what I would love to see then is more of these web based tools being this agile like this since we can. And so that's why I'm thinking, since I've got Podgageman, I wanted to have more Podcasting 2.0 support. I'm thinking, what can I do to demonstrate what's possible with ActivityStream? And there's just so much that we could do with it Mhmm. That could solve a lot of problems.

Daniel J. Lewis [00:51:41]:
And even I I was thinking too that you don't necessarily have to have a single activity stream for a podcast. No. You could potentially have multiples. Like this is the the comments activity stream. This is the playback consumption rate activity stream if they needed to be split apart like that. Because I know, I talk about episode metadata file, and some people hate me for that term, the chapters and all of that stuff. But what's cool about the way that we are doing chapters right now is that it can be split into a separate file and you can have other episode metadata in a separate file or you could merge these all into the same file. There's that same kind of potential with Activity Stream.

Daniel J. Lewis [00:52:24]:
So I love how this looks possible, and I am now an advocate of this. I know that here on the future of podcasting a few months ago, I was all gung ho about this proposal I had for Cross App comments of a way to do things. And, Basically, what I was describing, I was kind of reinventing Activity Stream but in a very clunky way and a not not backed by certain standards. Like, the activity stream is a W3C standard Yes. Which is the World Wide Web Consortium. Yep. So this is a standard of how to form this data and how to structure it, so it's not like we're making up something on our own. But it's a flexible standard.

Daniel J. Lewis [00:53:10]:
Yes. I like it.

Sam Sethi [00:53:11]:
The other thing that you you should be aware of, you mentioned, podcast streams and and and creator streams. So first the first stream that you as a user on Truefence see is your own personal stream. Right? Of everything you that you've done across if if you think about it multiple podcasts, so that's your view of the world. But when you go to a podcast site, let's say the future of podcasting, it will show an activity stream of any user that's interacted with that podcast. So so who played, who boosted, who clicked on the future of podcasting. And non fans and all of their activity. So and non fans and all of their activity. So then you get an aggregated view.

Sam Sethi [00:54:00]:
So Sam played my, latest episode, but he only played 70% of it and he gave me 6,000 sats. Right? That's an activity entry and then we can roll that up for that episode. So now you can roll up all of that activity and say, this podcast episode earned 27,000 sats. There were 16 listeners and the on average they dropped off at 44%, and it was 60% complete. Right? Whatever that so because that's just data from the individual that became aggregated at a podcast episode level and then rolled up again. Eventually, we will roll that up to a total podcast level. So you've got, I think, 35, 36 episodes of the future of podcasting. You will then see how many sets has that future of podcasting at, how many fans have they got, etcetera, etcetera.

Sam Sethi [00:54:51]:
There's so much you can do from the activity stream data just within the app itself, let alone sharing it cross app, let alone sharing it with analytics companies and whatever. So, yeah, there's a lot you can do with it because it's good structured data.

Daniel J. Lewis [00:55:09]:
Let's keep that, like all the bigger things, a little secret just between us and our audience for now just so we don't overwhelm everyone when we come back saying, Hey, we're all gung ho with Activity Stream. There's I'm excited about this and what we can do. I'm totally on board with this now, especially now that I understand a little bit better. And you listening right now, I hope I know we got in the weeds on some of the stuff we know.

Sam Sethi [00:55:32]:
Sorry. We probably lost everyone in that, unfortunately. I didn't mean to.

Daniel J. Lewis [00:55:37]:
Well, I I think the people who need to understand this most can probably figure this out. And we'll have put some links also, like, to the w three c standard and some more information. And there's also a book coming out Yep. About all of this. We'll have those links in the notes for this episode, number 39, on future of podcasting.net. So there is a lot of potential for this. And the nice thing is that the individual podcaster eventually will not have to learn this. Years ago, I gave a keynote at a podcasting conference, and the keynote was the future of podcasting.

Daniel J. Lewis [00:56:12]:
And one of my predictions was the technology will disappear in the aspect of the audience and the podcaster won't even have to worry about what's running it. They won't have to worry that it's activity stream. It will just work. Yep. That's when the technology disappears.

Sam Sethi [00:56:30]:
Nobody who's using Spotify or Apple Podcasts or YouTube, you know, the main big three, let's say, knows that the underlying delivery technology is RSS. They don't need to. Right? The fundamentally it ends up in the Apple Podcast and they play it. And that's it. End of story. They don't need to understand how it got there and what it was delivered by. Right. And it's the same with, I I just wanna know that there was a comment made on this app and it's over on this app, and now it's at the same they're aggregated together under one episode, and that's magically happened.

Sam Sethi [00:57:05]:
I don't need to know how it happened, and that's that's what we have to get to. So you set me a challenge on Macedon this week, which was I said, you know, I've put the best I can as version 1, a help system into this in into Truefans. And we use activity streams with gamification. So, when you, enable your wallet, that's a a verb, you know, and then we give you some sats for doing that 750 sats for enabling your wallet. When you do your first boost, we can give you sats. We can do that 10 times. So you're learning and earning at the same time. But then your 11th boost, we won't pay you.

Sam Sethi [00:57:44]:
Right? That's just a gamification model that we've attached to Verbs. And the thing about it is you said to me, well, don't do the videos because I'm in the middle of doing loads of videos just showing how it all works. And my my answer to you is yes. You're right. It shouldn't need videos and it shouldn't need extensive help files to make this work because complexity has failed simplicity. And, fundamentally, though, what we're struggling with is vocabulary. Yeah. Somebody on the Mastodon list said to me, I don't even understand the difference between a Zap and a boost.

Sam Sethi [00:58:19]:
So when I explained it to them very simply, a Zap is a a like with a payment and a boost is a comment with a payment. Why doesn't anyone ever say that to me? Right? I'm like, well, they probably have, but now they've got so far down the weeds of not having to re explain every time when they say the word zap and when they say boost because they expect everyone to understand it. And we have to remember people don't even know what those things mean, Let alone value time splits and wallet switching and everything else. Right? So there's a lot of complexity in what we're all doing. And, yeah, that vocabulary just needs to be common knowledge. And then I think a lot of it becomes easier to not have to explain how to do it with a video, but people think, oh, yeah. Oh, you wanna boost it? I've got a wallet. There's there's 50 sats done.

Sam Sethi [00:59:09]:
Right? It all becomes second nature. I just don't know when it'll become second nature.

Daniel J. Lewis [00:59:15]:
And speaking of boosts, we got a boost here that is, 100,000 It sounds bad person. It says great show, great episode. Please keep them coming. And am I back at the top of the leaderboard? And that came from Sam. Thank you so much.

Sam Sethi [00:59:35]:
You're very welcome. I was I was gutted when Dave Jackson said I was on top of the leaderboard. So I went, well, that's it. 100,000. Send that straight over. Let's see if that gets me back there. So I don't know if I am or who knows?

Daniel J. Lewis [00:59:47]:
Yeah. And just to be clear, that boost is not what got Sam onto this podcast. No.

Sam Sethi [00:59:51]:
Thank you.

Daniel J. Lewis [00:59:52]:
Sam and I have been wanting to have a conversation for a long time. It just worked out really cool to be able to thank you personally here on the podcast for that boost. So thank you so much. Anyone else who would like to send us a boost, please do send that inside of your podcast app, and recommend that your own audience, if you've got an audience of other podcasters or listeners, recommend that they check out a new podcast app over at podcasting2.org/apps. For Dave Jackson, I'm Daniel j Lewis, And Sam Sethi was our guest here from truefans.fm. Check him out. Thank you so much for listening.

Sam Sethi [01:00:27]:
Keep boosting and keep podcasting.