<rss
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      version="2.0"
    >
      <channel>
        <title><![CDATA[tests]]></title>
        <description><![CDATA[Testing nostr sites]]></description>
        <link>https://www.nostrapps.org/tag/nostr/</link>
        <atom:link href="https://www.nostrapps.org/tag/nostr/rss/" rel="self" type="application/rss+xml"/>
        <itunes:new-feed-url>https://www.nostrapps.org/tag/nostr/rss/</itunes:new-feed-url>
        <itunes:author><![CDATA[brugeman]]></itunes:author>
        <itunes:subtitle><![CDATA[Testing nostr sites]]></itunes:subtitle>
        <itunes:type>episodic</itunes:type>
        <itunes:owner>
          <itunes:name><![CDATA[brugeman]]></itunes:name>
          <itunes:email><![CDATA[brugeman]]></itunes:email>
        </itunes:owner>
            
      <pubDate>Fri, 10 Mar 2023 09:20:59 GMT</pubDate>
      <lastBuildDate>Fri, 10 Mar 2023 09:20:59 GMT</lastBuildDate>
      
      <itunes:image href="https://nostr.build/i/p/nostr.build_4fb6accf6b24cdb58be127d9a509c3acd3e859bbe24b5c194b82bf30bc1e511a.jpg" />
      <image>
        <title><![CDATA[tests]]></title>
        <link>https://www.nostrapps.org/tag/nostr/</link>
        <url>https://nostr.build/i/p/nostr.build_4fb6accf6b24cdb58be127d9a509c3acd3e859bbe24b5c194b82bf30bc1e511a.jpg</url>
      </image>
      <item>
      <title><![CDATA[Nostr Data Apps]]></title>
      <description><![CDATA[A framework for building APIs on top of Nostr, useful for aggregation layer and other stuff.]]></description>
             <itunes:subtitle><![CDATA[A framework for building APIs on top of Nostr, useful for aggregation layer and other stuff.]]></itunes:subtitle>
      <pubDate>Fri, 10 Mar 2023 09:20:59 GMT</pubDate>
      <link>https://www.nostrapps.org/post/naddr1qqqqygpn2m0xrvukg7f3e69jzs9jh2ur0cypps8029dmayk7qfyqgzutm5psgqqqw4rs394k44/</link>
      <comments>https://www.nostrapps.org/post/naddr1qqqqygpn2m0xrvukg7f3e69jzs9jh2ur0cypps8029dmayk7qfyqgzutm5psgqqqw4rs394k44/</comments>
      <guid isPermaLink="false">naddr1qqqqygpn2m0xrvukg7f3e69jzs9jh2ur0cypps8029dmayk7qfyqgzutm5psgqqqw4rs394k44</guid>
      <category>nostr</category>
      
      <noteId>naddr1qqqqygpn2m0xrvukg7f3e69jzs9jh2ur0cypps8029dmayk7qfyqgzutm5psgqqqw4rs394k44</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>Suppose we want to get the number of replies to a post. </p>
<p>We could do <code>COUNT</code> (same as <code>REQ</code> but returns a counter) as is proposed by <a href="https://github.com/nostr-protocol/nips/pull/144">NIP-45</a>. </p>
<p>Problems:</p>
<ul>
<li>you can't query several counts at once, the way clients need it to fill counters for the scrolled feed</li>
<li>hard-ish to implement optimally - relays need to become smarter</li>
<li>smart relays/aggregators become single points of failure (SPOFs)</li>
</ul>
<p>What if counters were themselves nostr events, published by some <code>data app</code>? It could have it's own special-purpose relay and could generate these events on the fly when requested with REQ, or it could be a background process that does the calculations and then just publishes results on it's own off-the-shelf relay. </p>
<p>Benefits:</p>
<ul>
<li>relays stay dumb</li>
<li>many counters can be requested with one <code>REQ</code></li>
<li>counters can be cached/forwarded between relays and the data app is less of a SPOF </li>
<li>yet cached/forwarded counters can't be tampered, they're signed and timestamped</li>
</ul>
<p>Cool! </p>
<p>Here is the next issue. I want to get top profiles by some 'popularity' metric for user discovery.</p>
<p>Options:</p>
<ul>
<li>download all user profiles from a relay and sort on the client - too expensive</li>
<li>rely on a third-party non-nostr api - not cool </li>
<li>add some modifier to <code>REQ</code> to override the default sorting by <code>created_at</code> - also bad (tried it):<ul>
<li>can't do pagination, because the only pagination that can be done with <code>REQ</code> is using <code>until/since</code></li>
<li>relay has to be very smart - SPOF</li>
</ul>
</li>
</ul>
<p>What if the promising idea with generating counters as nostr events could be extended to support any computation, not just counting? </p>
<h2>Generic Nostr Data App Framework</h2>
<p>Let's solve for 'counters' first, where the result of a computation is small (does not require pagination).</p>
<p>There are <a href="https://github.com/nostr-protocol/nips/blob/master/33.md">NIP-33</a> parameterized replaceable events, where the <code>d</code> tag is used as an identifier, so that a newer event with the same <code>kind</code>, <code>pubkey</code> and <code>d</code> tag replaces the older event. It seems to fit nicely: we could pass a list of parameters as a <code>d</code> tag, and each invocation of our computation with the same parameters would produce a new event that replaces the previous one.</p>
<p>Let's use <code>kind:33333</code>. Here is how a client that wants a counter of likes of event 'E' from a data app 'A' could request it from the data app's relay:</p>
<p><code>["REQ", "", {"authors":[A],"kinds":[33333],"#d":["m=count&amp;k=7&amp;e=E"]}]</code></p>
<p>Notice that <code>d</code> tag contains parameters: <code>m=count</code> (method name), <code>k=7</code> (kind=reactions) and <code>e=E</code> (our target event 'E').</p>
<p>And the result for such a request, whether generated by A's smart relay on the fly, or pre-calculated and published on A's dumb relay, is:</p>
<p><code>{"id":I,"pubkey":A,"kind":33333,"created_at":T,"tags":[["d","m=count&amp;k=7&amp;e=E"]],"content":"{\"count\":100}","sig":"..."}</code></p>
<p>What if the counter changes? Our data app A would publish a new event with an updated counter, and all clients that are still subscribed to the same <code>kind/author/#d</code> filter will receive it!</p>
<p>What if client wants to fetch several counters at once? It would just specify several <code>#d</code> tag filters, and would fetch those counters as they're published by the data app.</p>
<p>What if people don't want to depend so heavily on the data app's relay? They can fetch some counters and forward them to their own relay, and then use it as a fallback if the data app is down. The events are signed and timestamped, so clients can verify who produced some computation, and how stale it is. </p>
<p>Sounds good so far.</p>
<h2>Pagination</h2>
<p>Suppose I want the list of top profiles, <code>kind:0</code> events ordered by some popularity metric. The results are potentially huge, we can't put it all into a single result event, so we need pagination.</p>
<p>To keep the same logic of parameterized replaceable events, the simplest thing seems to be to just add an extra parameter that specifies the page number, i.e. <code>&amp;page=0</code> for the first page, <code>&amp;page=1</code> for the second etc. This way the new pages would replace the older ones, and clients could query several pages with one <code>#d</code> filter. </p>
<p>Here is how our request for top profiles could look like:</p>
<p><code>["REQ", "", {"authors":[A],"kinds":[33333],"#d":["k=0&amp;sort=popular&amp;page=0"]}]</code></p>
<p>Here is the first page of results, an event with 3 links:</p>
<p><code>{"id":I,"pubkey":A,"kind":33333,"tags":[["d","k=0&amp;sort=popular&amp;page=0"]],"created_at":T,"content":"\[E1,E2,E3\]"}</code></p>
<p>Note that the list of event ids is encoded in the <code>content</code> field, not in <code>tags</code>. This is to make sure that<br>these events are only query-able using the <code>d</code> tag, and to avoid forcing dumb relays to index these lists. Plus,<br>this is a generic framework, so results can be anything, not just links to events or pubkeys.</p>
<p>To signify the end of pages, the data app should use some flag in the content of last page. </p>
<p>If the list changes, the data app A would publish a new set of events (pages) with same set of <code>d</code> tags to<br>replace the previous results.</p>
<p>One issue here is that if old results had more pages than the new results, some old pages would be left un-replaced. I haven't figured out a proper solution here, so your suggestions are welcome.</p>
<h2>Parameter Normalization</h2>
<p>One issue with using <code>d</code> tag to pass parameters and replace old results is that the same set of parameters can be encoded in different ways and produce different <code>d</code> tags. I suggest applying some normalization: convert all params into percent-encoded form, then sort params as strings, and only then concatenate them into a query string. This would ensure that the same set of params produces the same <code>d</code> tag.</p>
<h2>The First Nostr Data App (Ndapp)</h2>
<p>A working implementation of this concept can be found at <np-embed url="https://data.nostr.band"><a href="https://data.nostr.band">https://data.nostr.band</a></np-embed>. Please also comment on the <a href="https://github.com/nostr-protocol/nips/pull/344">proposed NIP</a> for this.</p>
<p>Nostr.Band is an aggregator, so if this approach is supported by the community, and if other aggregators decide to build their own ndapps, we could then standardize some set of <code>aggregation layer</code> methods. This way clients could switch between aggregators, without having to rely on non-nostr custom APIs.</p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>Suppose we want to get the number of replies to a post. </p>
<p>We could do <code>COUNT</code> (same as <code>REQ</code> but returns a counter) as is proposed by <a href="https://github.com/nostr-protocol/nips/pull/144">NIP-45</a>. </p>
<p>Problems:</p>
<ul>
<li>you can't query several counts at once, the way clients need it to fill counters for the scrolled feed</li>
<li>hard-ish to implement optimally - relays need to become smarter</li>
<li>smart relays/aggregators become single points of failure (SPOFs)</li>
</ul>
<p>What if counters were themselves nostr events, published by some <code>data app</code>? It could have it's own special-purpose relay and could generate these events on the fly when requested with REQ, or it could be a background process that does the calculations and then just publishes results on it's own off-the-shelf relay. </p>
<p>Benefits:</p>
<ul>
<li>relays stay dumb</li>
<li>many counters can be requested with one <code>REQ</code></li>
<li>counters can be cached/forwarded between relays and the data app is less of a SPOF </li>
<li>yet cached/forwarded counters can't be tampered, they're signed and timestamped</li>
</ul>
<p>Cool! </p>
<p>Here is the next issue. I want to get top profiles by some 'popularity' metric for user discovery.</p>
<p>Options:</p>
<ul>
<li>download all user profiles from a relay and sort on the client - too expensive</li>
<li>rely on a third-party non-nostr api - not cool </li>
<li>add some modifier to <code>REQ</code> to override the default sorting by <code>created_at</code> - also bad (tried it):<ul>
<li>can't do pagination, because the only pagination that can be done with <code>REQ</code> is using <code>until/since</code></li>
<li>relay has to be very smart - SPOF</li>
</ul>
</li>
</ul>
<p>What if the promising idea with generating counters as nostr events could be extended to support any computation, not just counting? </p>
<h2>Generic Nostr Data App Framework</h2>
<p>Let's solve for 'counters' first, where the result of a computation is small (does not require pagination).</p>
<p>There are <a href="https://github.com/nostr-protocol/nips/blob/master/33.md">NIP-33</a> parameterized replaceable events, where the <code>d</code> tag is used as an identifier, so that a newer event with the same <code>kind</code>, <code>pubkey</code> and <code>d</code> tag replaces the older event. It seems to fit nicely: we could pass a list of parameters as a <code>d</code> tag, and each invocation of our computation with the same parameters would produce a new event that replaces the previous one.</p>
<p>Let's use <code>kind:33333</code>. Here is how a client that wants a counter of likes of event 'E' from a data app 'A' could request it from the data app's relay:</p>
<p><code>["REQ", "", {"authors":[A],"kinds":[33333],"#d":["m=count&amp;k=7&amp;e=E"]}]</code></p>
<p>Notice that <code>d</code> tag contains parameters: <code>m=count</code> (method name), <code>k=7</code> (kind=reactions) and <code>e=E</code> (our target event 'E').</p>
<p>And the result for such a request, whether generated by A's smart relay on the fly, or pre-calculated and published on A's dumb relay, is:</p>
<p><code>{"id":I,"pubkey":A,"kind":33333,"created_at":T,"tags":[["d","m=count&amp;k=7&amp;e=E"]],"content":"{\"count\":100}","sig":"..."}</code></p>
<p>What if the counter changes? Our data app A would publish a new event with an updated counter, and all clients that are still subscribed to the same <code>kind/author/#d</code> filter will receive it!</p>
<p>What if client wants to fetch several counters at once? It would just specify several <code>#d</code> tag filters, and would fetch those counters as they're published by the data app.</p>
<p>What if people don't want to depend so heavily on the data app's relay? They can fetch some counters and forward them to their own relay, and then use it as a fallback if the data app is down. The events are signed and timestamped, so clients can verify who produced some computation, and how stale it is. </p>
<p>Sounds good so far.</p>
<h2>Pagination</h2>
<p>Suppose I want the list of top profiles, <code>kind:0</code> events ordered by some popularity metric. The results are potentially huge, we can't put it all into a single result event, so we need pagination.</p>
<p>To keep the same logic of parameterized replaceable events, the simplest thing seems to be to just add an extra parameter that specifies the page number, i.e. <code>&amp;page=0</code> for the first page, <code>&amp;page=1</code> for the second etc. This way the new pages would replace the older ones, and clients could query several pages with one <code>#d</code> filter. </p>
<p>Here is how our request for top profiles could look like:</p>
<p><code>["REQ", "", {"authors":[A],"kinds":[33333],"#d":["k=0&amp;sort=popular&amp;page=0"]}]</code></p>
<p>Here is the first page of results, an event with 3 links:</p>
<p><code>{"id":I,"pubkey":A,"kind":33333,"tags":[["d","k=0&amp;sort=popular&amp;page=0"]],"created_at":T,"content":"\[E1,E2,E3\]"}</code></p>
<p>Note that the list of event ids is encoded in the <code>content</code> field, not in <code>tags</code>. This is to make sure that<br>these events are only query-able using the <code>d</code> tag, and to avoid forcing dumb relays to index these lists. Plus,<br>this is a generic framework, so results can be anything, not just links to events or pubkeys.</p>
<p>To signify the end of pages, the data app should use some flag in the content of last page. </p>
<p>If the list changes, the data app A would publish a new set of events (pages) with same set of <code>d</code> tags to<br>replace the previous results.</p>
<p>One issue here is that if old results had more pages than the new results, some old pages would be left un-replaced. I haven't figured out a proper solution here, so your suggestions are welcome.</p>
<h2>Parameter Normalization</h2>
<p>One issue with using <code>d</code> tag to pass parameters and replace old results is that the same set of parameters can be encoded in different ways and produce different <code>d</code> tags. I suggest applying some normalization: convert all params into percent-encoded form, then sort params as strings, and only then concatenate them into a query string. This would ensure that the same set of params produces the same <code>d</code> tag.</p>
<h2>The First Nostr Data App (Ndapp)</h2>
<p>A working implementation of this concept can be found at <np-embed url="https://data.nostr.band"><a href="https://data.nostr.band">https://data.nostr.band</a></np-embed>. Please also comment on the <a href="https://github.com/nostr-protocol/nips/pull/344">proposed NIP</a> for this.</p>
<p>Nostr.Band is an aggregator, so if this approach is supported by the community, and if other aggregators decide to build their own ndapps, we could then standardize some set of <code>aggregation layer</code> methods. This way clients could switch between aggregators, without having to rely on non-nostr custom APIs.</p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[Still using RSS readers? Great news…]]></title>
      <description><![CDATA[Still using RSS readers? Great news for you :)

There is now a way to turn #Nostr posts into an RSS feed. You can follow a specific profile, hashtag or a keyword. Check it out here: 

It's very basic now, will improve based on your feedback.…]]></description>
             <itunes:subtitle><![CDATA[Still using RSS readers? Great news for you :)

There is now a way to turn #Nostr posts into an RSS feed. You can follow a specific profile, hashtag or a keyword. Check it out here: 

It's very basic now, will improve based on your feedback.…]]></itunes:subtitle>
      <pubDate>Fri, 20 Jan 2023 15:47:22 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note1dhvcec2z66a86e98rrduh33um05y8pht0vczh4vxt32ezwc9xglqdf2fsc/</link>
      <comments>https://www.nostrapps.org/post/note1dhvcec2z66a86e98rrduh33um05y8pht0vczh4vxt32ezwc9xglqdf2fsc/</comments>
      <guid isPermaLink="false">note1dhvcec2z66a86e98rrduh33um05y8pht0vczh4vxt32ezwc9xglqdf2fsc</guid>
      <category>nostr</category>
      
      <noteId>note1dhvcec2z66a86e98rrduh33um05y8pht0vczh4vxt32ezwc9xglqdf2fsc</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>Still using RSS readers? Great news for you :)<br><br>There is now a way to turn <a href='/tag/nostr/'>#Nostr</a> posts into an RSS feed. You can follow a specific profile, hashtag or a keyword. Check it out here:&nbsp;<np-embed url="https://rss.nostr.band/"><a href="https://rss.nostr.band/">https://rss.nostr.band/</a></np-embed><br><br>It's very basic now, will improve based on your feedback.</p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>Still using RSS readers? Great news for you :)<br><br>There is now a way to turn <a href='/tag/nostr/'>#Nostr</a> posts into an RSS feed. You can follow a specific profile, hashtag or a keyword. Check it out here:&nbsp;<np-embed url="https://rss.nostr.band/"><a href="https://rss.nostr.band/">https://rss.nostr.band/</a></np-embed><br><br>It's very basic now, will improve based on your feedback.</p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[Update on  - trending #nostr posts are…]]></title>
      <description><![CDATA[Update on  - trending #nostr posts are now on the homepage! Plus, minor fixes:


trending people section shows the number of followers a person gained in the last 24 hours
trending hashtags now group different CaSeS under the most popular variant
it got faster…]]></description>
             <itunes:subtitle><![CDATA[Update on  - trending #nostr posts are now on the homepage! Plus, minor fixes:


trending people section shows the number of followers a person gained in the last 24 hours
trending hashtags now group different CaSeS under the most popular variant
it got faster…]]></itunes:subtitle>
      <pubDate>Mon, 16 Jan 2023 15:01:34 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note1hmxk037kjsnweh5l9h56pfacy22sqs0tfk0vzk76j9a3h7n0j0jqv9ylxd/</link>
      <comments>https://www.nostrapps.org/post/note1hmxk037kjsnweh5l9h56pfacy22sqs0tfk0vzk76j9a3h7n0j0jqv9ylxd/</comments>
      <guid isPermaLink="false">note1hmxk037kjsnweh5l9h56pfacy22sqs0tfk0vzk76j9a3h7n0j0jqv9ylxd</guid>
      <category>nostr</category>
      
      <noteId>note1hmxk037kjsnweh5l9h56pfacy22sqs0tfk0vzk76j9a3h7n0j0jqv9ylxd</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>Update on <np-embed url="https://nostr.band"><a href="https://nostr.band">https://nostr.band</a></np-embed> - trending <a href='/tag/nostr/'>#nostr</a> posts are now on the homepage! Plus, minor fixes:<br>- trending people section shows the number of followers a person gained in the last 24 hours<br>- trending hashtags now group different CaSeS under the most popular variant<br>- it got faster</p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>Update on <np-embed url="https://nostr.band"><a href="https://nostr.band">https://nostr.band</a></np-embed> - trending <a href='/tag/nostr/'>#nostr</a> posts are now on the homepage! Plus, minor fixes:<br>- trending people section shows the number of followers a person gained in the last 24 hours<br>- trending hashtags now group different CaSeS under the most popular variant<br>- it got faster</p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[#Nostr usage isn't growing :(]]></title>
      <description><![CDATA[#Nostr usage isn't growing :(



There are 2-3k new pubkeys daily, and yet the number of real daily active users is flat at 2k/day (active == wrote an event). Even if you include "low-quality" pubkeys (no followers, no reactions/replies from others) we're still flat around 4.…]]></description>
             <itunes:subtitle><![CDATA[#Nostr usage isn't growing :(



There are 2-3k new pubkeys daily, and yet the number of real daily active users is flat at 2k/day (active == wrote an event). Even if you include "low-quality" pubkeys (no followers, no reactions/replies from others) we're still flat around 4.…]]></itunes:subtitle>
      <pubDate>Fri, 13 Jan 2023 11:53:21 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note17s8a8zr73wem2cm069hesgr0gvdn09jfrg2hfsx72lpa22m9sjls3t6emd/</link>
      <comments>https://www.nostrapps.org/post/note17s8a8zr73wem2cm069hesgr0gvdn09jfrg2hfsx72lpa22m9sjls3t6emd/</comments>
      <guid isPermaLink="false">note17s8a8zr73wem2cm069hesgr0gvdn09jfrg2hfsx72lpa22m9sjls3t6emd</guid>
      <category>nostr</category>
      
        <media:content url="https://nostr.build/i/3962.jpeg" medium="image"/>
        <enclosure 
          url="https://nostr.build/i/3962.jpeg" length="0" 
          type="image/jpeg" 
        />
      <noteId>note17s8a8zr73wem2cm069hesgr0gvdn09jfrg2hfsx72lpa22m9sjls3t6emd</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p><a href='/tag/nostr/'>#Nostr</a> usage isn't growing :(<br><br><a href="https://nostr.build/i/3962.jpeg" class="vbx-media" target="_blank"><img class="venobox" src="https://nostr.build/i/3962.jpeg"></a><br><br>There are 2-3k new pubkeys daily, and yet the number of real daily active users is flat at 2k/day (active == wrote an event). Even if you include "low-quality" pubkeys (no followers, no reactions/replies from others) we're still flat around 4.5k daily users.&nbsp;<br><br>That's not great, I guess? Is it just that Damus testflight is full? Any ideas?<br><br>Source <np-embed url="https://nostr.band/stats.html"><a href="https://nostr.band/stats.html">https://nostr.band/stats.html</a></np-embed></p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p><a href='/tag/nostr/'>#Nostr</a> usage isn't growing :(<br><br><a href="https://nostr.build/i/3962.jpeg" class="vbx-media" target="_blank"><img class="venobox" src="https://nostr.build/i/3962.jpeg"></a><br><br>There are 2-3k new pubkeys daily, and yet the number of real daily active users is flat at 2k/day (active == wrote an event). Even if you include "low-quality" pubkeys (no followers, no reactions/replies from others) we're still flat around 4.5k daily users.&nbsp;<br><br>That's not great, I guess? Is it just that Damus testflight is full? Any ideas?<br><br>Source <np-embed url="https://nostr.band/stats.html"><a href="https://nostr.band/stats.html">https://nostr.band/stats.html</a></np-embed></p>
]]></itunes:summary>
      <itunes:image href="https://nostr.build/i/3962.jpeg"/>
      </item>
      
      <item>
      <title><![CDATA[New search filters on…]]></title>
      <description><![CDATA[New search filters on 


stop-words: use 'minus' -word to exclude posts containing the word
language: use lang:en to filter English-only
an 'advanced search' button to simplify building your query
search now suppresses potential spam by default, switch 'Include low-quality content' checkbox to remove the filter

What…]]></description>
             <itunes:subtitle><![CDATA[New search filters on 


stop-words: use 'minus' -word to exclude posts containing the word
language: use lang:en to filter English-only
an 'advanced search' button to simplify building your query
search now suppresses potential spam by default, switch 'Include low-quality content' checkbox to remove the filter

What…]]></itunes:subtitle>
      <pubDate>Wed, 11 Jan 2023 11:24:09 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note1h3uccmm7sdndu2g72rz637wdm63dgl0jvem26lmssudmm0dez40qwdxa6g/</link>
      <comments>https://www.nostrapps.org/post/note1h3uccmm7sdndu2g72rz637wdm63dgl0jvem26lmssudmm0dez40qwdxa6g/</comments>
      <guid isPermaLink="false">note1h3uccmm7sdndu2g72rz637wdm63dgl0jvem26lmssudmm0dez40qwdxa6g</guid>
      <category>nostr</category>
      
      <noteId>note1h3uccmm7sdndu2g72rz637wdm63dgl0jvem26lmssudmm0dez40qwdxa6g</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>New search filters on <np-embed url="https://nostr.band"><a href="https://nostr.band">https://nostr.band</a></np-embed><br>- stop-words: use 'minus' -word to exclude posts containing the word<br>- language: use lang:en to filter English-only<br>- an 'advanced search' button to simplify building your query<br>- search now suppresses potential spam by default, switch 'Include low-quality content' checkbox to remove the filter<br><br><br>What other filters would you like to have for <a href='/tag/nostr/'>#nostr</a> ?<br><br><br>Also, check out search bots: <np-embed url="https://sb.nostr.band"><a href="https://sb.nostr.band">https://sb.nostr.band</a></np-embed> :)<br><br></p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>New search filters on <np-embed url="https://nostr.band"><a href="https://nostr.band">https://nostr.band</a></np-embed><br>- stop-words: use 'minus' -word to exclude posts containing the word<br>- language: use lang:en to filter English-only<br>- an 'advanced search' button to simplify building your query<br>- search now suppresses potential spam by default, switch 'Include low-quality content' checkbox to remove the filter<br><br><br>What other filters would you like to have for <a href='/tag/nostr/'>#nostr</a> ?<br><br><br>Also, check out search bots: <np-embed url="https://sb.nostr.band"><a href="https://sb.nostr.band">https://sb.nostr.band</a></np-embed> :)<br><br></p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[Introducing: Search Bots for Nostr]]></title>
      <description><![CDATA[Introducing: Search Bots for Nostr

Want to follow a hashtag or a keyword?

Go to , create your bot and follow it.

Examples: #[0] and #[1]

Idea by #[2], thank you!

How is that for a #nostr micro-app?

(This is new stuff, expect bugs, reports are welcome)…]]></description>
             <itunes:subtitle><![CDATA[Introducing: Search Bots for Nostr

Want to follow a hashtag or a keyword?

Go to , create your bot and follow it.

Examples: #[0] and #[1]

Idea by #[2], thank you!

How is that for a #nostr micro-app?

(This is new stuff, expect bugs, reports are welcome)…]]></itunes:subtitle>
      <pubDate>Wed, 11 Jan 2023 10:52:45 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note1z4uknyaw7a7vhl7z6c055xe0xgnem05pu240u8ly3k588j6u2kcqpuh9up/</link>
      <comments>https://www.nostrapps.org/post/note1z4uknyaw7a7vhl7z6c055xe0xgnem05pu240u8ly3k588j6u2kcqpuh9up/</comments>
      <guid isPermaLink="false">note1z4uknyaw7a7vhl7z6c055xe0xgnem05pu240u8ly3k588j6u2kcqpuh9up</guid>
      <category>nostr</category>
      
      <noteId>note1z4uknyaw7a7vhl7z6c055xe0xgnem05pu240u8ly3k588j6u2kcqpuh9up</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>Introducing: Search Bots for Nostr<br><br><br>Want to follow a hashtag or a keyword?<br><br><br>Go to <np-embed url="https://sb.nostr.band"><a href="https://sb.nostr.band">https://sb.nostr.band</a></np-embed>, create your bot and follow it.<br><br><br>Examples: #[0] and #[1]<br><br><br>Idea by #[2], thank you!<br><br><br>How is that for a <a href='/tag/nostr/'>#nostr</a> micro-app?<br><br><br>(This is new stuff, expect bugs, reports are welcome)<br><br></p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>Introducing: Search Bots for Nostr<br><br><br>Want to follow a hashtag or a keyword?<br><br><br>Go to <np-embed url="https://sb.nostr.band"><a href="https://sb.nostr.band">https://sb.nostr.band</a></np-embed>, create your bot and follow it.<br><br><br>Examples: #[0] and #[1]<br><br><br>Idea by #[2], thank you!<br><br><br>How is that for a <a href='/tag/nostr/'>#nostr</a> micro-app?<br><br><br>(This is new stuff, expect bugs, reports are welcome)<br><br></p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[So it seems like I haven'…]]></title>
      <description><![CDATA[So it seems like I haven't shouted loud enough about #nostr search at . It searches among people and posts, shows trending links, people and hashtags, and has cool stats with nice graphs. Would you give it a try?…]]></description>
             <itunes:subtitle><![CDATA[So it seems like I haven't shouted loud enough about #nostr search at . It searches among people and posts, shows trending links, people and hashtags, and has cool stats with nice graphs. Would you give it a try?…]]></itunes:subtitle>
      <pubDate>Sat, 07 Jan 2023 16:42:15 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note18gww6wg7dtt28hha0zm0tffpx9ynfjffppe8h5dj3f3ra2tmvlrs68z92v/</link>
      <comments>https://www.nostrapps.org/post/note18gww6wg7dtt28hha0zm0tffpx9ynfjffppe8h5dj3f3ra2tmvlrs68z92v/</comments>
      <guid isPermaLink="false">note18gww6wg7dtt28hha0zm0tffpx9ynfjffppe8h5dj3f3ra2tmvlrs68z92v</guid>
      <category>nostr</category>
      
      <noteId>note18gww6wg7dtt28hha0zm0tffpx9ynfjffppe8h5dj3f3ra2tmvlrs68z92v</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>So it seems like I haven't shouted loud enough about <a href='/tag/nostr/'>#nostr</a> search at <np-embed url="https://nostr.band"><a href="https://nostr.band">https://nostr.band</a></np-embed>. It searches among people and posts, shows trending links, people and hashtags, and has cool stats with nice graphs. Would you give it a try?</p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>So it seems like I haven't shouted loud enough about <a href='/tag/nostr/'>#nostr</a> search at <np-embed url="https://nostr.band"><a href="https://nostr.band">https://nostr.band</a></np-embed>. It searches among people and posts, shows trending links, people and hashtags, and has cool stats with nice graphs. Would you give it a try?</p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[Lots and lots of empty twitter…]]></title>
      <description><![CDATA[Lots and lots of empty twitter accs verifying their nostr keys, someone is building a twitter-verified bot farm  #nostr #bots…]]></description>
             <itunes:subtitle><![CDATA[Lots and lots of empty twitter accs verifying their nostr keys, someone is building a twitter-verified bot farm  #nostr #bots…]]></itunes:subtitle>
      <pubDate>Sat, 31 Dec 2022 09:14:24 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note198uen7vy0eeghwtjk99dtultv7xp8tnycggcasfg5tqlnjac2alsh0lzmd/</link>
      <comments>https://www.nostrapps.org/post/note198uen7vy0eeghwtjk99dtultv7xp8tnycggcasfg5tqlnjac2alsh0lzmd/</comments>
      <guid isPermaLink="false">note198uen7vy0eeghwtjk99dtultv7xp8tnycggcasfg5tqlnjac2alsh0lzmd</guid>
      <category>nostr</category>
      
      <noteId>note198uen7vy0eeghwtjk99dtultv7xp8tnycggcasfg5tqlnjac2alsh0lzmd</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>Lots and lots of empty twitter accs verifying their nostr keys, someone is building a twitter-verified bot farm&nbsp;<np-embed url="https://twitter.com/search?q=nostr&amp;src=typed_query&amp;f=live"><a href="https://twitter.com/search?q=nostr&amp;src=typed_query&amp;f=live">https://twitter.com/search?q=nostr&amp;src=typed_query&amp;f=live</a></np-embed> <a href='/tag/nostr/'>#nostr</a> <a href='/tag/bots/'>#bots</a></p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>Lots and lots of empty twitter accs verifying their nostr keys, someone is building a twitter-verified bot farm&nbsp;<np-embed url="https://twitter.com/search?q=nostr&amp;src=typed_query&amp;f=live"><a href="https://twitter.com/search?q=nostr&amp;src=typed_query&amp;f=live">https://twitter.com/search?q=nostr&amp;src=typed_query&amp;f=live</a></np-embed> <a href='/tag/nostr/'>#nostr</a> <a href='/tag/bots/'>#bots</a></p>
]]></itunes:summary>
      
      </item>
      
      <item>
      <title><![CDATA[Want a fancy short NIP05 name…]]></title>
      <description><![CDATA[Want a fancy short NIP05 name at nostr.band ? I'd like to give some cool handles to early birds at 1000 sats price. Reply here or DM. #nostr #nostrich…]]></description>
             <itunes:subtitle><![CDATA[Want a fancy short NIP05 name at nostr.band ? I'd like to give some cool handles to early birds at 1000 sats price. Reply here or DM. #nostr #nostrich…]]></itunes:subtitle>
      <pubDate>Sat, 31 Dec 2022 08:48:00 GMT</pubDate>
      <link>https://www.nostrapps.org/post/note16nw98unyemf8n3czxykjtxc4yeqdflj4mz0enqpq0j0k8ezpqz6sn8r6xm/</link>
      <comments>https://www.nostrapps.org/post/note16nw98unyemf8n3czxykjtxc4yeqdflj4mz0enqpq0j0k8ezpqz6sn8r6xm/</comments>
      <guid isPermaLink="false">note16nw98unyemf8n3czxykjtxc4yeqdflj4mz0enqpq0j0k8ezpqz6sn8r6xm</guid>
      <category>nostr</category>
      
      <noteId>note16nw98unyemf8n3czxykjtxc4yeqdflj4mz0enqpq0j0k8ezpqz6sn8r6xm</noteId>
      <npub>npub1xdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30wscmntxy</npub>
      <dc:creator><![CDATA[brugeman]]></dc:creator>
      <content:encoded><![CDATA[<p>Want a fancy short NIP05 name at nostr.band ? I'd like to give some cool handles to early birds at 1000 sats price. Reply here or DM. <a href='/tag/nostr/'>#nostr</a> <a href='/tag/nostrich/'>#nostrich</a></p>
]]></content:encoded>
      <itunes:author><![CDATA[brugeman]]></itunes:author>
      <itunes:summary><![CDATA[<p>Want a fancy short NIP05 name at nostr.band ? I'd like to give some cool handles to early birds at 1000 sats price. Reply here or DM. <a href='/tag/nostr/'>#nostr</a> <a href='/tag/nostrich/'>#nostrich</a></p>
]]></itunes:summary>
      
      </item>
      
      </channel>
      </rss>
    