<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2025-11-20T21:48:15&#43;01:00</updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by Dan</title>
  <author>
    <name>Dan</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1gz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqa0zkqj.rss" />
  <link href="https://nostr.ae/npub1gz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqa0zkqj" />
  <id>https://nostr.ae/npub1gz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqa0zkqj</id>
  <icon>https://m.primal.net/NLaY.jpg</icon>
  <logo>https://m.primal.net/NLaY.jpg</logo>




  <entry>
    <id>https://nostr.ae/nevent1qqs2zfc5rqfcmphhmnwq9syl20pycz68qfv9mdqy4el2rgf6h654h3szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc3h9tya</id>
    
      <title type="html">Nothing quite as radicalizing as writing that final tax check for ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2zfc5rqfcmphhmnwq9syl20pycz68qfv9mdqy4el2rgf6h654h3szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc3h9tya" />
    <content type="html">
      Nothing quite as radicalizing as writing that final tax check for the year...  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-04-12T23:18:23&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvuj4rv3mkwsgy0p35pgj4gvukg5ylqn2z0m4d2edaujuctktslxgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc6l9vue</id>
    
      <title type="html">The invention of the Bitcoin protocol is not the invention of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvuj4rv3mkwsgy0p35pgj4gvukg5ylqn2z0m4d2edaujuctktslxgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc6l9vue" />
    <content type="html">
      The invention of the Bitcoin protocol is not the invention of digital money. It is the invention of digital laws of physics.&lt;br/&gt;&lt;br/&gt;The protocol&amp;#39;s significance is not that it specifically created a cryptocurrency. It is that, for the first time, it imposed physics-like constraints (scarcity, irreversibility, thermodynamic cost) onto a domain that previously had none. Digital space, prior to Bitcoin, was a realm of infinite and costless replication. Bitcoin changed the rules of that space for itself.&lt;br/&gt;&lt;br/&gt;It is only within a digitally constrained environment, one governed by its own *immutable* laws, that a truly digital commodity can emerge. And it is only from a genuine digital commodity that sound digital money can arise. &lt;br/&gt;&lt;br/&gt;You cannot have digital money without first having digital physics.&lt;br/&gt;&lt;br/&gt;#bip-110 &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-03-18T15:01:25&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2r7zvdrsrpplanukaj4ew2jsg2xhasfvk0edhmhnfu4ht5jpsn7qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcwarj6m</id>
    
      <title type="html">Some banks offer their own tap-to-pay apps afaik. For those, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2r7zvdrsrpplanukaj4ew2jsg2xhasfvk0edhmhnfu4ht5jpsn7qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcwarj6m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd6p0u05c6ucwuawsn0d8frjluf3wz9mfkszptd7mzt82x5ts95hcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhg8sx6s9&#39;&gt;nevent1q…x6s9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Some banks offer their own tap-to-pay apps afaik. For those, there isn&amp;#39;t anything inherently incompatible about graphene. But the big dogs (Google pay, Samsung pay,) all impose restrictions  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-02-06T13:18:48&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsv9775ym553mp3natpuz7zwqqe7arfqj6edp3wu3eukcamxcpf9rgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcny577g</id>
    
      <title>Nostr event nevent1qqsv9775ym553mp3natpuz7zwqqe7arfqj6edp3wu3eukcamxcpf9rgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcny577g</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsv9775ym553mp3natpuz7zwqqe7arfqj6edp3wu3eukcamxcpf9rgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcny577g" />
    <content type="html">
       &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqspeqx95z7ufqjs42xanpxjcz4jp97rz9nksuv03r939uv5sgstrrszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqcyqqqqqqgw7ckcj&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…ckcj&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt;  &lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsftate3p05ylrr4zzsav9q9psr3x5kxn9wg844cr83yt4eez8j2hcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqz97vwfe&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…vwfe&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/68986160533ee956dd3d1c24ca933dfac0b8ccf67b34414b4e06c823225287b7.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/504e9c2c15511e5daf1cb9a525f97dafe0b692ee33263632b38a8959fc80b267.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-01-03T18:21:45&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspeqx95z7ufqjs42xanpxjcz4jp97rz9nksuv03r939uv5sgstrrszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc72u3fp</id>
    
      <title>Nostr event nevent1qqspeqx95z7ufqjs42xanpxjcz4jp97rz9nksuv03r939uv5sgstrrszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc72u3fp</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspeqx95z7ufqjs42xanpxjcz4jp97rz9nksuv03r939uv5sgstrrszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc72u3fp" />
    <content type="html">
       &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsftate3p05ylrr4zzsav9q9psr3x5kxn9wg844cr83yt4eez8j2hcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqz97vwfe&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…vwfe&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt;  &lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsd8hxd0aq5l5vya4sxmj7xg5dtj32vpx9qp6dfef9mg7ckzdnww9qpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqzk0k4dq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…k4dq&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/aac3273293e9594e31c2bebdf808159eab2b5776f159493e164d02c5e1f86460.jpg&#34;&gt;  &lt;/blockquote&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/68986160533ee956dd3d1c24ca933dfac0b8ccf67b34414b4e06c823225287b7.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-01-03T17:53:01&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsftate3p05ylrr4zzsav9q9psr3x5kxn9wg844cr83yt4eez8j2hczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnd6q3y</id>
    
      <title>Nostr event nevent1qqsftate3p05ylrr4zzsav9q9psr3x5kxn9wg844cr83yt4eez8j2hczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnd6q3y</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsftate3p05ylrr4zzsav9q9psr3x5kxn9wg844cr83yt4eez8j2hczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnd6q3y" />
    <content type="html">
       &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsd8hxd0aq5l5vya4sxmj7xg5dtj32vpx9qp6dfef9mg7ckzdnww9qpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqzk0k4dq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…k4dq&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt;  &lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsghmgwv9f5elw3fe2hykm97p6wat2csgc0f246vadlr6n2tar7xfcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqzdzn0yu&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…n0yu&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/e6e50c152b921d6c28e7b0eea9a14ca199f1415c5d287359b1d11f755fa6bce5.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/aac3273293e9594e31c2bebdf808159eab2b5776f159493e164d02c5e1f86460.jpg&#34;&gt; 
    </content>
    <updated>2026-01-03T17:40:31&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd8hxd0aq5l5vya4sxmj7xg5dtj32vpx9qp6dfef9mg7ckzdnww9qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcejj353</id>
    
      <title>Nostr event nevent1qqsd8hxd0aq5l5vya4sxmj7xg5dtj32vpx9qp6dfef9mg7ckzdnww9qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcejj353</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd8hxd0aq5l5vya4sxmj7xg5dtj32vpx9qp6dfef9mg7ckzdnww9qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcejj353" />
    <content type="html">
       &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsghmgwv9f5elw3fe2hykm97p6wat2csgc0f246vadlr6n2tar7xfcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqzdzn0yu&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…n0yu&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt;  &lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqs0lvmjgyd2a3pmfmw346pyhfyd0hrnxr987f9fmlhn2zv6p592llqpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqzcqurfw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…urfw&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/f7ed78268f8aff5c7d3b8fa2efcf8df99265e7dc4c14e01f47a2e324aa15b389.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/e6e50c152b921d6c28e7b0eea9a14ca199f1415c5d287359b1d11f755fa6bce5.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-01-03T17:35:44&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsghmgwv9f5elw3fe2hykm97p6wat2csgc0f246vadlr6n2tar7xfczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcl6p8p0</id>
    
      <title>Nostr event nevent1qqsghmgwv9f5elw3fe2hykm97p6wat2csgc0f246vadlr6n2tar7xfczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcl6p8p0</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsghmgwv9f5elw3fe2hykm97p6wat2csgc0f246vadlr6n2tar7xfczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcl6p8p0" />
    <content type="html">
       &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqs0lvmjgyd2a3pmfmw346pyhfyd0hrnxr987f9fmlhn2zv6p592llqpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qgz7uczyg3kvdf8grlwfmllguc3kehrcc05yvnlypkjklptgql5kqxpqqqqqqzcqurfw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…urfw&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt;  &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/e2d333b60b7e63c477de4d2a1b8ed9a862c63131235f4652415d9b76969b2cbf.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/f7ed78268f8aff5c7d3b8fa2efcf8df99265e7dc4c14e01f47a2e324aa15b389.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-01-03T17:28:21&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0lvmjgyd2a3pmfmw346pyhfyd0hrnxr987f9fmlhn2zv6p592llqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8z4qx4</id>
    
      <title>Nostr event nevent1qqs0lvmjgyd2a3pmfmw346pyhfyd0hrnxr987f9fmlhn2zv6p592llqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8z4qx4</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0lvmjgyd2a3pmfmw346pyhfyd0hrnxr987f9fmlhn2zv6p592llqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8z4qx4" />
    <content type="html">
       &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/e2d333b60b7e63c477de4d2a1b8ed9a862c63131235f4652415d9b76969b2cbf.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-01-03T15:24:19&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8lmp37t4hrfqs8cfm3zc09ql639fr9mhuzqsjx557u8lhna3v77czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc28fc0t</id>
    
      <title type="html">Very cool 👇 https://clinkme.dev/</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8lmp37t4hrfqs8cfm3zc09ql639fr9mhuzqsjx557u8lhna3v77czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc28fc0t" />
    <content type="html">
      Very cool 👇&lt;br/&gt;&lt;a href=&#34;https://clinkme.dev/&#34;&gt;https://clinkme.dev/&lt;/a&gt; &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-18T15:02:45&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr8z894e4kpmgrqpk2nnxyq06u972asfaf4n28zsywtv9urhcge7gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcvk4x44</id>
    
      <title type="html">Primal web app*** Mobile is working fine</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr8z894e4kpmgrqpk2nnxyq06u972asfaf4n28zsywtv9urhcge7gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcvk4x44" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswfuw6u8jeq0uxu75jgyf4gmk4sw8s2qczkknea4jxrxcxulkme0cpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq256ed&#39;&gt;nevent1q…56ed&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Primal web app*** &lt;br/&gt;Mobile is working fine  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-18T13:46:15&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfrkte7dqddfnwr4pj3xlc8v5hlk4qlfazfap0nv92u4v3wykut5czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc0m4rkz</id>
    
      <title type="html">can&amp;#39;t believe it&amp;#39;s that time of year agai... oh wait, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfrkte7dqddfnwr4pj3xlc8v5hlk4qlfazfap0nv92u4v3wykut5czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc0m4rkz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvdh4dxqfnx6et0gfg3ulqp440g7cdqxnrja9s9pnqaef7znrkx3cpremhxue69uhkvet9v3ejumn0wd68ytnzv9hxgtmvv9hxwtm9dch3a3nx&#39;&gt;nevent1q…a3nx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;can&amp;#39;t believe it&amp;#39;s that time of year agai... oh wait, this isn&amp;#39;t a shitcoin...&lt;br/&gt;happy 95% day 🎉 
    </content>
    <updated>2025-11-18T02:10:32&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8cqhdq6gu3amhgmze9cp0e7a9gfqya6aufjs50fqvu99pf0a68lszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcaeza8e</id>
    
      <title type="html">Compatible with BIP444 🫠 #nevent1q…elt8</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8cqhdq6gu3amhgmze9cp0e7a9gfqya6aufjs50fqvu99pf0a68lszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcaeza8e" />
    <content type="html">
      Compatible with BIP444 🫠 &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsggl2ftevvhuh73rzz4z99g78aenvdejza6vf6j3w30yzghlvstdgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqcyqqqqqqgnselt8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…elt8&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;a href=&#34;https://github.com/taproot-wizards/ordiknots&#34;&gt;https://github.com/taproot-wizards/ordiknots&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Ordinal wallet for Knots&lt;br/&gt;&lt;br/&gt;We live in a simulation  &lt;br/&gt;&lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2025-11-17T19:07:19&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsggl2ftevvhuh73rzz4z99g78aenvdejza6vf6j3w30yzghlvstdgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcccr9ys</id>
    
      <title type="html">https://github.com/taproot-wizards/ordiknots Ordinal wallet for ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsggl2ftevvhuh73rzz4z99g78aenvdejza6vf6j3w30yzghlvstdgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcccr9ys" />
    <content type="html">
      &lt;a href=&#34;https://github.com/taproot-wizards/ordiknots&#34;&gt;https://github.com/taproot-wizards/ordiknots&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Ordinal wallet for Knots&lt;br/&gt;&lt;br/&gt;We live in a simulation  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-17T17:21:21&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2j7slgsdqp7wvuye4z2htryqeaxmkryp0d7kuzvxrhc9yzmnd03szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc55umw8</id>
    
      <title type="html">Ethereum&amp;#39;s 2025 ATH was 1.8% higher than it&amp;#39;s 2021 ATH ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2j7slgsdqp7wvuye4z2htryqeaxmkryp0d7kuzvxrhc9yzmnd03szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc55umw8" />
    <content type="html">
      Ethereum&amp;#39;s 2025 ATH was 1.8% higher than it&amp;#39;s 2021 ATH (not inflation adjusted). TMYK &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-14T18:16:29&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstqegmtctt0utt4vz2km2806zmlzy587ghsysn6dkz6pkqjadq99gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jctusmpv</id>
    
      <title type="html">Hey @nprofile…5jyy, when self hosting alby hub how persistent ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstqegmtctt0utt4vz2km2806zmlzy587ghsysn6dkz6pkqjadq99gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jctusmpv" />
    <content type="html">
      Hey &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsyv47lazt9h6ycp2fsw270khje5egjgsrdkrupjg27u796g7f5k0spzcs8wumn8ghj7un9d3shjtnyv9kh2uewd9hj7qguwaehxw309ahx7um5wgknztnwvfhjuctwvasku6fwvdhj78w5jyy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Alby&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…5jyy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, when self hosting alby hub how persistent does the nwc.db (or postgres) need to be?  Like if that DB happens to get deleted, but the rest of the work_dir survives, upon reboot would it just rebuild the nwc database?&lt;br/&gt;&lt;br/&gt;In my homelab persistent storage is provided by an NFS share. Right now the entire workdir is a share. But the sqlite queries are often pretty slow (likely from the NFS overhead. Trying to decided whether I externalize a postgres DB or just let the sqlite DB write to a truly local file on the computer node (where it would lose its persistence guarantees)  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-13T15:56:38&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0gd6sah3jfftk40pgrpd6m5lkpja9mlxghlfyd6lzulm9gv85e5qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcfp4e4z</id>
    
      <title type="html">Been about an hour since the last block was mined Estimated fee ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0gd6sah3jfftk40pgrpd6m5lkpja9mlxghlfyd6lzulm9gv85e5qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcfp4e4z" />
    <content type="html">
      Been about an hour since the last block was mined&lt;br/&gt;&lt;br/&gt;Estimated fee rate to be in the next block: ~4sat/vB&lt;br/&gt;&lt;br/&gt;Good morning, pura vida  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-13T13:56:35&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp90z47qh7sgcuxpqhwxusx3lsqy5vpfshtnxggu907yk8rlf37ugzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9al2sc</id>
    
      <title type="html">Sometimes I just go back and reread some of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp90z47qh7sgcuxpqhwxusx3lsqy5vpfshtnxggu907yk8rlf37ugzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9al2sc" />
    <content type="html">
      Sometimes I just go back and reread some of &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsxu35yyt0mwjjh8pcz4zprhxegz69t4wr9t74vk6zne58wzh0waycpzamhxue69uhkzarvv9ejumn0wd68ytnvv9hxgtcpzemhxue69uhk2er9dchxummnw3ezumrpdejz78f205a&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Gigi&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…205a&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&amp;#39;s older essays  &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsgysk5s5l676drxvx4gksxztpnzmw9psd7ey79j83z6c0mg65l88czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqcyqqqzvjsrhwxe9&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…wxe9&lt;/a&gt;&lt;/span&gt;  &lt;/div&gt; The problem with the internet is that&lt;br/&gt;information wants to be free. &lt;/blockquote&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qq28g6r994n8yet9v3hk6tt0vckhvctvw4jsygrwg6zz9hahfftnsup23q3mnv5pdz46hpj4l2ktdpfu6rhpthhwjvpsgqqqw4rszalgc9&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…lgc9&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;The internet has a problem. Few people know that this problem exists,
but hey, that\&amp;#39;s the nature of serious, non-obvious problems: they are
invisible until they aren\&amp;#39;t. The problem with the internet is that
information wants to be free. And if something wants to be free as in
freedom, given enough time, it will also be free as in beer.&lt;/p&gt;

&lt;p&gt;Let me explain.&lt;/p&gt;

&lt;h3 id=&#34;poisoning-the-air-2&#34;&gt;Poisoning the Air&lt;/h3&gt;

&lt;p&gt;We consume untold amounts of data every day. Every second of every
minute, bits and bytes are streaming through the series of tubes that we
all know and love: &lt;em&gt;the internet&lt;/em&gt;. We take it for granted, and most of
us take the current monetization model—as well as all the ills that
come along with it—for granted as well. We seldom stop and think about
the strange world of bits and bytes. How wonderful it all is, but also
how alien. How it already has transformed our lives, and how it will
continue to transform our future. Where do the zeroes and ones come
from? What makes it all work? And, most importantly: who is paying for
it?&lt;/p&gt;

&lt;p&gt;The bits and bytes that are zipping through our fiber-optic cables are
as invisible as the air we breathe. That\&amp;#39;s not a terrible metaphor, now
that I think of it. As long as we have no trouble breathing, we don\&amp;#39;t
need to stop and inspect every single molecule we inhale. Similarly, as
long as we don\&amp;#39;t have too much trouble creating and consuming digital
content, we don\&amp;#39;t need to stop and inspect all the various parts that
make our attention economy work.&lt;/p&gt;

&lt;p&gt;Attention economy. What a fitting description. As we should all know by
now, the stuff we consume isn\&amp;#39;t free; we are paying dearly for it: with
our attention, among other things.&lt;/p&gt;

&lt;h3 id=&#34;paying-attention-2&#34;&gt;Paying Attention&lt;/h3&gt;

&lt;p&gt;In the high-velocity world of today, to maximize profits, you have to
maximize attention. But it is a peculiar, shallow kind of attention. It
is not the focused kind of attention that deep thought and meaningful
conversations would require. I believe that this is, at least in part,
why many things are so broken. Why our societal discourse is so
fragmented, our politics so polarized, we so paralyzed, and our analysis
often as shallow as our desires.&lt;/p&gt;

&lt;p&gt;The attention economy has us neatly segregated into echo chambers of
personal truths. Ironically, the only truth worth pursuing in the
attention economy is how to keep the maximum amount of people maximally
outraged for the maximum amount of time. All while keeping participants
unaware that they are trapped in an algorithmic prison of their own
choosing.&lt;/p&gt;

&lt;h3 id=&#34;you-are-the-product-2&#34;&gt;You Are The Product&lt;/h3&gt;

&lt;p&gt;The idiom \&amp;#34;if something is free, you are the product\&amp;#34; can\&amp;#39;t be
repeated often enough. For one reason or another, we expect most things
to be \&amp;#34;free\&amp;#34; online. Of course, there\&amp;#39;s no such thing as a free
lunch. In the case of online services, your data is harvested and sold
to the highest bidder, which is usually an advertisement- or government
agency. Or both.&lt;/p&gt;

&lt;p&gt;Not only do all big data companies spy on you, but they will also use a
multitude of dark patterns and unethical practices to squeeze out every
last drop of data from your interactions. Whether it is the Facebook
Pixel, Google Analytics, or something else doesn\&amp;#39;t matter. You are
being tracked, surveilled, and cataloged. What you see, for how long, at
what times, how frequently, and what you\&amp;#39;ll see next is carefully
orchestrated by a profit-maximizing algorithm. Profit for the platform,
not for you.&lt;/p&gt;

&lt;p&gt;Of course, the idea is usually that everyone profits: users, creators,
advertisers, and the platforms alike. However, the evolutionary
environment that is set up by said incentive structures will often
select for shallow, attention-grabbing, and sensationalist snippets. As
of this writing—block 716,025—the epitome of such an environment is
TikTok, a video-based dopamine machine that will show you the motion
picture equivalent of heroin mixed with crack cocaine. Hard drugs for
the mind, custom-tailored to your particular likings. A truly cursed
app. Unfortunately, most platforms of this nature are just different in
degree, not in kind.&lt;/p&gt;

&lt;h3 id=&#34;allowed-opinion-2&#34;&gt;Allowed Opinion&lt;/h3&gt;

&lt;p&gt;\&amp;#34;It isn\&amp;#39;t so bad,\&amp;#34; we say to ourselves. \&amp;#34;Look at all the useful
information!\&amp;#34; we exclaim as we scroll through our feeds, inadvertently
feeding the machine that is feeding us dopamine hits in return.&lt;/p&gt;

&lt;p&gt;But make no mistake: the companies in charge are not in the business of
feeding us useful (or truthful) information. They are in the business of
tricking us into feeding the machine.&lt;/p&gt;

&lt;p&gt;How could it be otherwise? You are what you track, and you become what
you optimize for. From the platform\&amp;#39;s perspective, this is clicks, not
quality. At first, maximizing clicks and watch time might be an
innocuous thing. After all, you have to make money to survive. It\&amp;#39;s
just one ad. How bad can it get?&lt;/p&gt;

&lt;p&gt;Unfortunately, the problems that come with it all are invisible at
first. Just like cancer is invisible to the smoker who just smoked his
first cigarette and liver cirrhosis is invisible to the drinker who just
had his first drink, deplatforming, censorship, polarization, and
manipulation of public opinion are invisible to the prosumer who just
saw his first ad in a walled-garden ecosystem. We can probably agree
that we are past the first inning when it comes to these issues.
Censorship is the norm, deplatforming is cheered on, polarization is at
an all-time high, and public opinion is manipulated manually and
algorithmically like never before.&lt;/p&gt;

&lt;p&gt;The consensus is that you are too stupid to know what is good for you
and your public opinion is too outrageous to be voiced publicly. Even
worse, it shouldn\&amp;#39;t be your opinion in the first place. \&amp;#34;Here is why
you\&amp;#39;re wrong. Here is a source pointing to an allowed opinion. Here are
some experts that agree with us. Our smart and helpful algorithms did
all the thinking for you and they are never wrong. Neither are the
experts.\&amp;#34;&lt;/p&gt;

&lt;p&gt;This is the world we are already living in. You are not allowed to speak
freely. You are not allowed to think freely. You are not allowed to
express yourself freely. Your picture is offensive; thus, it has to be
removed. Your meme is too close to the truth or too criminally funny;
thus, we have to put you in Twitter jail for a week or two. You are
saying something that we don\&amp;#39;t agree with; thus, we have to ban you for
life—even if you are a &lt;a href=&#34;https://web.archive.org/web/20211223015539/https://www.nbcnews.com/tech/tech-news/twitter-permanently-bans-president-donald-trump-n1253588&#34;&gt;sitting
president&lt;/a&gt;,
mind you. You have said the wrong word in a video or played a
copyrighted song in the background; thus, we have to take away your
income. You have posted a picture of yourself without a mask; thus,
we\&amp;#39;ll have to ban you and report you to the authorities.&lt;sup id=&#34;fnref:irony&#34;&gt;&lt;a href=&#34;#fn:irony&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The fact that the sentence above is not purely in the realm of dystopian
science fiction anymore should have everyone worried. Removed from
cyberspace for wanting to breathe free. Strange times.&lt;/p&gt;

&lt;h3 id=&#34;evolutionary-pressure-2&#34;&gt;Evolutionary Pressure&lt;/h3&gt;

&lt;p&gt;How did it come to this? If I were forced to give a short answer, I
would give the following: We moved from protocols to platforms, and
platforms are only as good as their incentives.&lt;/p&gt;

&lt;p&gt;The incentive structure of the platforms we inhabit is the evolutionary
environment that dictates survival. Everything that wants to survive has
to align with it.&lt;/p&gt;

&lt;p&gt;Of course, this is true in all areas of business. Pick print magazines,
for example. For very human evolutionary reasons, if your magazine
doesn\&amp;#39;t sport a beautiful female face on the front cover, it won\&amp;#39;t be
bought as much as those who do. Thus, it won\&amp;#39;t be able to replicate
itself and, consequently, will die. Similarly, if your online news
outlet does not generate enough ad revenue, it will fail to replicate
and die. This is why every magazine has a beautiful female face on the
cover. And this is why every ad-based online news outlet devolves into
clickbait.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://dergigi.com/assets/images/bitcoin/2021-12-30-the-freedom-of-value/faces.png&#34; alt=&#34;&#34;/&gt;&lt;/p&gt;

&lt;p&gt;Similarly, this is why feed-based recommendation engines devolve into
slot machines for your dopamine receptors. The longer you stay glued to
your screen, the more ads you will see, the more revenue will be
generated for the platform. This is also why most YouTube channels
devolve into 7-15 minute snippets with thumbnails that portray the face
of someone who  &lt;a href=&#34;https://twitter.com/dergigi/status/1360168246545166337?s=20&#34;&gt;just stepped on a piece of
Legos&lt;/a&gt;.
Short enough to convince you to watch it, long enough to make you forget
what video you wanted to watch in the first place. Like rats pushing
buttons in hyper-personalized Skinner boxes, we are conditioned into
addiction cycles to maximize shareholder profits.&lt;/p&gt;

&lt;h3 id=&#34;maximizing-profits-2&#34;&gt;Maximizing Profits&lt;/h3&gt;

&lt;p&gt;Platforms are companies, and companies are incentivized to maximize
shareholder profits. There is nothing wrong with profits, and there is
nothing wrong with shareholders. However, I believe that the information
revolution we find ourselves in has split the evolutionary landscape
into two. Let\&amp;#39;s call these landscapes \&amp;#34;broad\&amp;#34; and \&amp;#34;narrow.\&amp;#34;&lt;/p&gt;

&lt;p&gt;To maximize profits via broad advertisements, controversies and extreme
opinions have to be minimized. Thus, just by catering to the lowest
common denominator, politics and censorship immediately enter the
picture. Conversely, if profits are made via narrow, targeted
advertisements, controversies and extreme opinions have to be maximized.
Thus, just by showing different pieces of information to different
sub-groups, polarization and fragmentation are continually increased.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://dergigi.com/assets/images/bitcoin/2021-12-30-the-freedom-of-value/polarization.png&#34; alt=&#34;&#34;/&gt;&lt;/p&gt;

&lt;p&gt;These two extremes are two sides of the same coin. It might seem like it
is Cable TV vs. the algorithmic news feed, but it actually is two
different approaches pursuing the same goal: to keep as many people
glued to the screen, so they watch more advertisements. The first is a
sedative, the second a stimulant.&lt;/p&gt;

&lt;p&gt;Granted, the above characterization might be an exaggeration, but the
problem remains: if we aren\&amp;#39;t paying for something directly, we will be
paying for it indirectly, one way or another. Always.&lt;/p&gt;

&lt;p&gt;The point is the following: free speech platforms can not exist. Only
free speech protocols can exist. If someone can control what is being
said, someone will control what is being said. If you can monitor,
filter, and censor content, you will monitor, filter, and censor
content.&lt;/p&gt;

&lt;p&gt;All platforms will run into this problem, no matter how pristine their
intentions. Even if you position yourself as a free speech platform at
first, you will be forced to step in and censor in the long run. After
all, if you can be squashed by the state for content you host or
transmit, you will be squashed by the state for content you host or
transmit.&lt;/p&gt;

&lt;h3 id=&#34;self-censorship-2&#34;&gt;Self-Censorship&lt;/h3&gt;

&lt;p&gt;However, long before state censorship will rear its ugly head, the
chilling effect of self-censorship will be felt. If others are
deplatformed and demonetized for voicing certain opinions, most people
will be very careful to voice said opinions. Consciously and
subconsciously, we slowly silence ourselves.&lt;/p&gt;

&lt;p&gt;When it comes to self-censorship, advertisements have a role to play
too.&lt;/p&gt;

&lt;p&gt;After all, you wouldn\&amp;#39;t bite the hand that feeds you, would you? In the
worst case, advertisers and executives will tell you what can be said
and what is off-limits. They will tell you what opinions are inside the
Overton window and which ones are outside of it. And if they don\&amp;#39;t, you
will make an educated guess and adjust what you say accordingly.&lt;/p&gt;

&lt;h3 id=&#34;a-problem-and-a-paradox-2&#34;&gt;A Problem and a Paradox&lt;/h3&gt;

&lt;p&gt;Back to the original problem: why can\&amp;#39;t we sell information like a
regular good? Why does the simplistic approach—putting content behind
a paywall—produce such bad results? I believe there are two reasons,
which I will call the \&amp;#34;MTX problem\&amp;#34; and the \&amp;#34;DRM paradox.\&amp;#34;&lt;/p&gt;

&lt;p&gt;The MTX problem, with MTX being short for \&amp;#34;mental transaction,\&amp;#34; refers
to the problem of irreducible mental transaction costs inherent to every
transaction. Every time you hit a paywall, you have to make a conscious
decision: \&amp;#34;Do I want to pay for that?\&amp;#34;&lt;/p&gt;

&lt;p&gt;As Szabo convincingly argues, most of the time, especially if the cost
is tiny, the answer will be no. This is not for any technical reason but
for &lt;em&gt;psychological&lt;/em&gt; reasons. It turns out that the hassle of figuring
out whether this transaction is worth it or not—a process that is
happening in your head—is simply too much. If you have to think about
a micro-purchase, the chance that you will make said purchase diminishes
drastically. This is why flat rates and subscriptions are king: you only
have to think about them once.&lt;/p&gt;

&lt;p&gt;For the smallest of micro-transactions, this is even true from a
strictly economic standpoint. Using an hourly wage of $20 USD,
thinking, \&amp;#34;Is this worth 21 sats?\&amp;#34; for two seconds will cost you a
little over 1¢, which is more than the price of the microtransaction in
question.&lt;sup id=&#34;fnref:moscow&#34;&gt;&lt;a href=&#34;#fn:moscow&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; It is unfeasible, both psychologically and economically.
This, in a nutshell, is the MTX problem.&lt;/p&gt;

&lt;p&gt;But this isn\&amp;#39;t the only thing that is plaguing the monetization of
digital content. As mentioned above, there is also the DRM paradox.&lt;/p&gt;

&lt;p&gt;DRM, short for \&amp;#34;digital rights management,\&amp;#34; is a futile effort that
tries to prevent information from being copied. It should go without
saying that non-copyable information is an oxymoron, but, alas, in the
age of NFTs and plenty of other nonsense, I\&amp;#39;m afraid this needs to be
spelled out explicitly. So, let me spell it out for you: You can not
create information that can\&amp;#39;t be copied. Period. Or, in the words of
Bruce Schneier: \&amp;#34;trying to make digital files uncopyable is like trying
to make water not wet.\&amp;#34;&lt;/p&gt;

&lt;p&gt;The nature of information is such that if it can be read, it can also be
copied—with perfect fidelity. No amount of trickery or artificial
restrictions will change this fact. This is why digital artifacts such
as movies and music will always be available for free. It is trivial for
someone who has access to said artifacts to copy said artifact—at
near-zero marginal cost, mind you—and make it accessible to others.
Thus, given enough time and popularity, every movie, every song, and
every document will be available to the general public for free. The
nature of information does not allow for another outcome. Hence the
saying: &lt;em&gt;information wants to be free&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Although trying to create something that can\&amp;#39;t exist—information that
can\&amp;#39;t be copied—is paradoxical in itself, this isn\&amp;#39;t what I mean by
the DRM paradox. What I mean is something more hilarious. It is again
psychological, not technical in nature. The paradox is this: content
will only stay behind a paywall if it is shitty. If it\&amp;#39;s good, someone
will set it free.&lt;/p&gt;

&lt;p&gt;We all know this. If an article is actually worth reading, someone who
is behind the paywall will screenshot it and post it to social media. If
the movie is worth watching, it will be available on various websites
that have pirate ships as their logos. If the song is worth listening
to, it will be available on streaming sites for free. It is only the
terrible articles, the most obscure movies, and the songs that make your
ears bleed that stay locked behind paywalls. Hence, the paradox: content
will only stay locked behind paywalls if it sucks. If it\&amp;#39;s good, it
will be set free.&lt;/p&gt;

&lt;p&gt;Personally, I believe that the MTX problem is a bigger deal than the DRM
paradox. The traditional solution to the MTX problem is the subscription
model, à la Netflix, Spotify, Amazon, and so on. The DRM paradox still
remains, but it turns out that this is not an issue if you make the
\&amp;#34;legitimate\&amp;#34; access to information convenient enough.&lt;/p&gt;

&lt;p&gt;The opportunity cost of downloading, storing, maintaining, and curating
a private collection of songs is simply too high for most people. The
more convenient solution is to pay for the damn Spotify subscription.&lt;/p&gt;

&lt;p&gt;That being said, we can already see one of the problems inherent in the
subscription model. The following comic describes it well:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://dergigi.com/assets/images/bitcoin/2021-12-30-the-freedom-of-value/piracy.webp&#34; alt=&#34;&#34;/&gt;&lt;/p&gt;

&lt;p&gt;The proliferation of streaming platforms forces you to get a Netflix
subscription, an Amazon Prime subscription, a Hulu subscription, a
Disney Plus subscription, a YouTube Premium subscription, and so on. And
that was just streaming video. The same subscription zoo exists for
music, books, games, newsletters, blog posts, etc.&lt;/p&gt;

&lt;p&gt;So, what is the solution?&lt;/p&gt;

&lt;h3 id=&#34;accept-the-nature-of-information-2&#34;&gt;Accept the Nature of Information&lt;/h3&gt;

&lt;p&gt;The solution begins with acceptance. Selling digital content in the
traditional, transactional way doesn\&amp;#39;t work, or at least doesn\&amp;#39;t work
very well. A transaction involving a digital photograph of an apple is
very different than a transaction involving a physical apple.&lt;/p&gt;

&lt;p&gt;George Bernard Shaw said it best: \&amp;#34;If you have an apple and I have an
apple and we exchange these apples then you and I will still each have
one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas.\&amp;#34;&lt;/p&gt;

&lt;p&gt;Because digital information behaves like an idea, there is no reason to
make it artificially scarce. This is not only true philosophically,
but &lt;em&gt;technically&lt;/em&gt;, too. Computers are copying machines. Always have
been, always will be. The only way to move information from one machine
to another is to copy it. This alone should make the futility of
treating information as physical objects blatantly obvious.&lt;/p&gt;

&lt;p&gt;When it comes to monetizing information on the open web, we have to
align our ways of thinking with the nature of information. As outlined
above, information is non-scarce, easily copied, easily modified, and
wants to be free.&lt;/p&gt;

&lt;p&gt;I believe that the right monetization model has to respect these values
and needs to have similar properties. It has to be open, transparent,
extensible, and, last but not least, completely voluntary.&lt;/p&gt;

&lt;p&gt;This model has a name: &lt;em&gt;value-for-value.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&#34;revivifying-busking-2&#34;&gt;Revivifying Busking&lt;/h3&gt;

&lt;p&gt;The idea is simple but sounds radical: you provide your content for
free, for everyone, without access restrictions. If people enjoy it, if
people get &lt;em&gt;value&lt;/em&gt; out of it, you make it easy for people to give value
back.&lt;/p&gt;

&lt;p&gt;It might sound outrageous in this day and age, but this model has worked
for thousands of years. It is the model of street performers, the model
of buskers, the model of voluntary giving. However, in cyberspace, we
don\&amp;#39;t run into the physical limitations of traditional busking. Digital
content scales in ways that performances in meatspace never will.&lt;/p&gt;

&lt;p&gt;The value-for-value model flips the traditional payment model on its
head. Traditionally, enjoyment follows payment. In the value-for-value
approach, payment follows enjoyment—voluntarily.&lt;/p&gt;

&lt;p&gt;You are free to listen to the street musician and walk on, but—and
this is something that the audience intuitively knows—if you want the
music to continue, you should throw a couple of coins into the hat.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  🎩⚡ Give Value Back
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;One beautiful thing about this model is that it re-aligns incentives.
You are not trying to maximize clicks, or view time, or any other of the
countless metrics. You will want to provide value for your audience, and
that\&amp;#39;s it. And if your audience got value out of it, a certain
percentage will give back. All you have to do is ask.&lt;/p&gt;

&lt;h3 id=&#34;a-valuable-alternative-2&#34;&gt;A Valuable Alternative&lt;/h3&gt;

&lt;p&gt;We are at the very beginning of this monumental shift. My hope is that
the value-for-value model will continue to emerge as a viable
alternative—an alternative to advertisements, censorship,
deplatforming, and demonetization.&lt;/p&gt;

&lt;p&gt;The value-for-value model removes the \&amp;#34;they\&amp;#34; from the equation. They
filter, they censor, they demonetize, they deplatform. It doesn\&amp;#39;t even
matter who \&amp;#34;they\&amp;#34; are. If a \&amp;#34;they\&amp;#34; exists, they will find a way to
fuck it up.&lt;/p&gt;

&lt;p&gt;Value-for-value removes \&amp;#34;they,\&amp;#34; and puts you in charge. You are the
ruler in the kingdom of one, solely responsible for your thoughts and
your speech. If we want to have liberation (and salvation) in
cyberspace, we need to put the individual in charge once more. As
always, freedom and independence
require &lt;a href=&#34;https://dergigi.com/2021/03/14/the-responsibility-of-adopting-bitcoin/&#34;&gt;responsibility&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the best of all worlds, creators are incentivized to do nothing but
create. Catering only to themselves and those who are interested in
their creations. No intermediaries. Directly, person-to-person,
value-for-value.&lt;/p&gt;

&lt;h3 id=&#34;what-lies-ahead-2&#34;&gt;What Lies Ahead&lt;/h3&gt;

&lt;p&gt;Granted, as of today, it isn\&amp;#39;t exactly easy to self-host your
infrastructure. It is intimidating to run your own node in order to
receive payments in a self-sovereign manner. But, not only will it get
easier, increasingly, it will be necessary.&lt;/p&gt;

&lt;p&gt;In addition to making it all easier, we need to be cognisant of the MTX
problem outlined above. Every step that manages to reduce the mental
transaction costs in the value-for-value ecosystem is a step in the
right direction.&lt;/p&gt;

&lt;p&gt;The value capability of &lt;a href=&#34;https://podcastindex.org/&#34;&gt;Podcasting 2.0&lt;/a&gt; is
such a step. It enables and automates payments by the minute, without
any additional interaction required by the user. Once you are set up,
your wallet will make payments automatically.&lt;/p&gt;

&lt;p&gt;I believe that further iterations of this idea can be integrated into
all media types, whether it be audio, video, images, the written word,
and so on. I believe that we are close to the protocol version of
Patreon: all the benefits of reducing the mental transaction costs to
zero, without the friction and the censorship inherent in a
platform-based solution. Whether it will come in the form
of &lt;a href=&#34;http://bolt12.org/&#34;&gt;BOLT12&lt;/a&gt; recurring payments or something else
entirely is yet to be seen. I am confident, however, that it will come
in time.&lt;/p&gt;

&lt;h3 id=&#34;conclusion-conclusion-2&#34;&gt;Conclusion {#Conclusion}&lt;/h3&gt;

&lt;p&gt;Not only is our fiat money broken, but the monetization model of the
internet is broken too. The advertisement-based platforms of this day
and age optimize for engagement via division and polarization, using
dark patterns and addiction by design. It won\&amp;#39;t be easy to break out of
the compulsion loops that are set up for us, but thanks to the
self-sovereign tech stack that is currently emerging, there is a viable
alternative: the value-for-value model.&lt;/p&gt;

&lt;p&gt;The \&amp;#34;busking\&amp;#34; monetization model has worked for many centuries in the
past, and thanks to Bitcoin and the Lightning Network, I am confident
that it will work for centuries into the future. We are almost there. We
just need to figure out how to position the hat correctly on the ground
and where the best places in town are to perform, so to speak.&lt;/p&gt;

&lt;p&gt;Value-for-value does away with the DRM paradox in its entirety and -
with the right amount of automation and sensible defaults—will solve
the MTX problem too. If we get this right, we might be able to free
ourselves from the evolutionary survival-of-the-richest environment of
platforms, allowing ourselves to step into the quasi-immortal realm of
protocols.&lt;/p&gt;

&lt;p&gt;There is &lt;a href=&#34;https://twitter.com/dergigi/status/1470520355710189571?s=20&#34;&gt;much to be explored&lt;/a&gt;, many tools to be built, and plenty of
pre-conceived notions to be shattered. There is a seismic shift
happening right in front of our eyes, and I\&amp;#39;m looking forward to riding
the waves with all of you. Onwards!&lt;/p&gt;

&lt;p&gt;—&lt;/p&gt;

&lt;h3 id=&#34;further-resources-further-resources-2&#34;&gt;Further Resources {#Further-Resources}&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://podcastindex.org/&#34;&gt;Podcast Index&lt;/a&gt; and  &lt;a href=&#34;https://podcastindex.org/podcast/920666&#34;&gt;Podcasting
2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to get started: &lt;a href=&#34;http://value4value.io/&#34;&gt;value4value.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;further-reading-further-reading-2&#34;&gt;Further Reading {#Further-Reading}&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://nakamotoinstitute.org/static/docs/micropayments-and-mental-transaction-costs.pdf&#34;&gt;Micropayments and Mental Transaction
Costs&lt;/a&gt; by
Nick Szabo&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/micropayments.html&#34;&gt;The Mental Accounting Barrier to
Micropayments&lt;/a&gt; by
Nick Szabo&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.humanetech.com/brain-science&#34;&gt;How Social Media Hacks Our
Brains&lt;/a&gt; by the Center for
Humane Technology&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Compulsion_loop&#34;&gt;Compulsion Loop&lt;/a&gt;,
Wikipedia&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.defectivebydesign.org/about_defectivebydesign&#34;&gt;DRM - Defective by
Design&lt;/a&gt; by
the Free Software Foundation&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/13748038-addiction-by-design&#34;&gt;Addiction by
Design&lt;/a&gt; by
Natasha Dow Schüll&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—&lt;/p&gt;

&lt;p&gt;Original cover image cc-by-sa &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:BrenoFernandesBusking.jpg&#34;&gt;Gonzalez85&lt;/a&gt;.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;This article first appeared on &lt;a href=&#34;https://dergigi.com/2021/12/30/the-freedom-of-value/&#34;&gt;dergigi.com&lt;/a&gt;.&lt;/p&gt;

&lt;div&gt;

&lt;hr&gt;

&lt;ol&gt;
&lt;li id=&#34;fn:irony&#34;&gt;The fact that I decided to include the sentence about masks (and, in some way, my opinion on the matter) in this paragraph will probably reduce the potential audience who will share this significantly. If I were to optimize for \&amp;#34;number of people who will read this,\&amp;#34; removing it would be the smart choice. The irony is not lost on me.&lt;/li&gt;

&lt;li id=&#34;fn:moscow&#34;&gt;Moscow time 21:09 @ 716,411.&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2025-11-12T14:10:44&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxfv8wc5csq0pchv0c429w6l8pl5cf2vgyc0rr7umugnt5lxnnvzqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqjhheu</id>
    
      <title type="html">I just obliterated 225 Nostr zombies from orbit using the NUCLEAR ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxfv8wc5csq0pchv0c429w6l8pl5cf2vgyc0rr7umugnt5lxnnvzqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqjhheu" />
    <content type="html">
      I just obliterated 225 Nostr zombies from orbit using the NUCLEAR OPTION in #PlebsVsZombies! ☢️🧟‍♂️🧟‍♀️&lt;br/&gt;&lt;br/&gt;💀 MAXIMUM CARNAGE ACHIEVED! 💀&lt;br/&gt;&lt;br/&gt;My Zombie Score™ was 18%! What&amp;#39;s yours?&lt;br/&gt;🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪🟩🟩🟩&lt;br/&gt;&lt;br/&gt;Follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1pvz2c9z4pau26xdwfya24d0qhn6ne8zp9vwjuyxw629wkj9vh5lsrrsd4h&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;plebsvszombies&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1pvz…sd4h&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and join the hunt at: 🏹&lt;br/&gt;&lt;a href=&#34;https://plebsvszombies.cc&#34;&gt;https://plebsvszombies.cc&lt;/a&gt;
    </content>
    <updated>2025-11-10T15:32:37&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9y5m4c4avrt29wmgh3qrjcs03fy8hxjd7pwapy72924uugjngdhgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jca0ex7t</id>
    
      <title type="html">Lightning is Bitcoin. Don&amp;#39;t be silly.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9y5m4c4avrt29wmgh3qrjcs03fy8hxjd7pwapy72924uugjngdhgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jca0ex7t" />
    <content type="html">
      Lightning is Bitcoin. Don&amp;#39;t be silly.  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-10T14:49:26&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrmmpdctf04yrf9qd72krrmjzfk4fs82lcqhfr9cad99d748w7whczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcr2enks</id>
    
      <title type="html">Respectfully, disagree. Bitcoin&amp;#39;s breakthrough was that you ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrmmpdctf04yrf9qd72krrmjzfk4fs82lcqhfr9cad99d748w7whczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcr2enks" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstms789laxgua7045cz4rt6hze9fh9qlmjrzrvt8p7pnzkvvpkfgcpr9mhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5dhc57w&#39;&gt;nevent1q…c57w&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Respectfully, disagree.  &lt;br/&gt;&lt;br/&gt;Bitcoin&amp;#39;s breakthrough was that you don&amp;#39;t have to trust *a central bank*. Bitcoins breakthrough is trustless scarcity. &lt;br/&gt;&lt;br/&gt;Hyper-bitcoinization does not imply trust is removed from every layer of our markets (financial or otherwise).  Markets necessarily require financialization, and financialization requires varying levels of consensual trust.  That consensual trust is GOOD and beneficial as long as the foundation is a sound money. &lt;br/&gt;&lt;br/&gt;It does not mean trust further up the stack will never be broken, of course it will.  But when that trust is built/broken on top of a sound money, the system can heal properly. &lt;br/&gt;&lt;br/&gt;Various market interactions will always trend towards centralization and trusted models, because they are inherently more efficient along the happy path. That&amp;#39;s a good thing (once coercion is removed!).  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-10T14:47:21&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvtljjuzg0xd6hxc66ds5uan52dnayyq9hjs387625h8urr0ynafgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7jgkgf</id>
    
      <title type="html">Someone want my minibits wallet dust? ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvtljjuzg0xd6hxc66ds5uan52dnayyq9hjs387625h8urr0ynafgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7jgkgf" />
    <content type="html">
      Someone want my minibits wallet dust?&lt;br/&gt;&lt;br/&gt;cashuBo2FteCJodHRwczovL21pbnQubWluaWJpdHMuY2FzaC9CaXRjb2luYXVjc2F0YXSBomFpSABQBVDwSUFGYXCBpGFhAWFzeEBiZmUxZGViMmJkYTU5NzU4OWFkMmI5ZmY2ZDkxMTJhZDc0MGQwY2U0ZmM0YzJkNzFiZDhiNjg5ZTEyNzUyYzM4YWNYIQL2j4ydS1pM1_0p0jcv2m_iRP2uM6h6nFmvfdZNsx9Sb2Fko2FlWCBzSV71ytrDwvJyVAWP1-cUx5i_7xdHVD7Xc0K90zzr4mFzWCB9M9wbQV1gvYxVoGfuNziwH_h_da9dONSOu0VAHTZZu2FyWCAv680dl0euJTL6GOP0QEXlCRqlN8CHJUKUCM7P0oYuKA
    </content>
    <updated>2025-10-27T14:39:04&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd00zrscl7en4hdw2r9hyc2rnzl08ctk20kmrlqka0mvsgahuevfszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcp96t06</id>
    
      <title type="html">New home connection is possibly overkill ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd00zrscl7en4hdw2r9hyc2rnzl08ctk20kmrlqka0mvsgahuevfszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcp96t06" />
    <content type="html">
      New home connection is possibly overkill&lt;br/&gt; &lt;img src=&#34;https://i.nostr.build/W3ENugAdPABAIPSG.jpg&#34;&gt; 
    </content>
    <updated>2025-10-27T14:28:55&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs866nef9jvvf8r6allgd6e2u0f5ftkgu4yc4ml4qwf332uauldvzgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9ww7yn</id>
    
      <title type="html">The news was so chipper back then ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs866nef9jvvf8r6allgd6e2u0f5ftkgu4yc4ml4qwf332uauldvzgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9ww7yn" />
    <content type="html">
      The news was so chipper back then &lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://v.nostr.build/OGDLCUo1WzXOaPeb.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2025-10-27T12:48:58&#43;01:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspg57adzm36kdj8am2ekkdwdl0xh9p3fwakc0u228pnyj0mmk98cszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcdjzcfm</id>
    
      <title type="html">Nice try Robinhood https://i.nostr.build/sUY90WTFGygYwSaz.jpg</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspg57adzm36kdj8am2ekkdwdl0xh9p3fwakc0u228pnyj0mmk98cszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcdjzcfm" />
    <content type="html">
      Nice try Robinhood &lt;br/&gt; &lt;img src=&#34;https://i.nostr.build/sUY90WTFGygYwSaz.jpg&#34;&gt; 
    </content>
    <updated>2025-10-24T18:30:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst83tc7jzuka4w30uep9tlyaqqttz2aj0zkqk3xf8c3v4k23y7wjczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc6f569q</id>
    
      <title type="html">What&amp;#39;s the most exciting thing happening in Nostr protocol ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst83tc7jzuka4w30uep9tlyaqqttz2aj0zkqk3xf8c3v4k23y7wjczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc6f569q" />
    <content type="html">
      What&amp;#39;s the most exciting thing happening in Nostr protocol development today?&lt;br/&gt;&lt;br/&gt;(Not client development)&lt;br/&gt;&lt;br/&gt;#asknostr
    </content>
    <updated>2025-10-15T20:56:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs96m83hltsceh9jqs40fspnw3qnyxjgsv59ap6ryh97ft6t7ayatszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9ajtv9</id>
    
      <title type="html">I just scouted my follows with #PlebsVsZombies! ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs96m83hltsceh9jqs40fspnw3qnyxjgsv59ap6ryh97ft6t7ayatszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9ajtv9" />
    <content type="html">
      I just scouted my follows with #PlebsVsZombies! 👁️🔍🧟‍♀🧟‍♀&lt;br/&gt;&lt;br/&gt;My Zombie Count is: 220&lt;br/&gt;&lt;br/&gt;My Zombie Score is 17%!&lt;br/&gt;🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪🟩🟩🟩&lt;br/&gt;&lt;br/&gt;Follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsqkp9vz32s779drxhyjw42khsteafun3qjk8fwzr8d9zhtfzkt60cpz9mhxue69uhkummnw3ezumrpdejz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uwchjhr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;plebsvszombies&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…hjhr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and join the hunt at: 🏹&lt;br/&gt;&lt;a href=&#34;https://plebsvszombies.cc&#34;&gt;https://plebsvszombies.cc&lt;/a&gt;
    </content>
    <updated>2025-10-12T17:49:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqg7scs6c5ng7tkvdr5608p9uceuusn8wre2ewvpg3uplcrkajrrgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc02sax9</id>
    
      <title>Nostr event nevent1qqsqg7scs6c5ng7tkvdr5608p9uceuusn8wre2ewvpg3uplcrkajrrgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc02sax9</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqg7scs6c5ng7tkvdr5608p9uceuusn8wre2ewvpg3uplcrkajrrgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc02sax9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9ur5d360595jynvthg3gjhl0ej2weeh0j0x4rvqqq8a6skj3n6wspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcafugrs&#39;&gt;nevent1q…ugrs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://hsph.harvard.edu/news/using-acetaminophen-during-pregnancy-may-increase-childrens-autism-and-adhd-risk/&#34;&gt;https://hsph.harvard.edu/news/using-acetaminophen-during-pregnancy-may-increase-childrens-autism-and-adhd-risk/&lt;/a&gt;
    </content>
    <updated>2025-10-04T03:09:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvlxasmzj03swkaluea5mccmn8xt4e5efl5g0cf9rrq4ccqmtxl6szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc648et9</id>
    
      <title type="html">Tylenol is incredible https://v.nostr.build/5axxjqcRiM78lMsX.mp4</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvlxasmzj03swkaluea5mccmn8xt4e5efl5g0cf9rrq4ccqmtxl6szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc648et9" />
    <content type="html">
      Tylenol is incredible &lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://v.nostr.build/5axxjqcRiM78lMsX.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2025-10-04T03:07:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsq5muzffzklcw2tnrhg9q7q0fessw9qpfzavt9ypefheq7rttqmxszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jckhrzv2</id>
    
      <title type="html">Are folks still working on nostr key rotation? Or is that a dead ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsq5muzffzklcw2tnrhg9q7q0fessw9qpfzavt9ypefheq7rttqmxszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jckhrzv2" />
    <content type="html">
      Are folks still working on nostr key rotation?  Or is that a dead end&lt;br/&gt;&lt;br/&gt;#asknostr
    </content>
    <updated>2025-10-01T14:12:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfrgdedaennlc749rx7jhp600380q5ad2a6tjr0sy8e32xjjlu2xqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcz2fy9y</id>
    
      <title type="html">Bitcoin isn’t just political--it’s one of the most powerful ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfrgdedaennlc749rx7jhp600380q5ad2a6tjr0sy8e32xjjlu2xqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcz2fy9y" />
    <content type="html">
      Bitcoin isn’t just political--it’s one of the most powerful political statements you can make today. &lt;br/&gt;&lt;br/&gt;Claiming Bitcoin’s apolitical just reveals your own self-doubt.
    </content>
    <updated>2025-10-01T13:27:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspaefy4fjyggcja2qaykz54qdrulhm0r65w766kkxuxy5hcr5ffmqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnvnlrh</id>
    
      <title type="html">Finally</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspaefy4fjyggcja2qaykz54qdrulhm0r65w766kkxuxy5hcr5ffmqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnvnlrh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqeuz8rxs9rn03tzuzs7tjvdx4erlhwc483ruqjpq530eqleutgrqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs6jdee3&#39;&gt;nevent1q…dee3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Finally
    </content>
    <updated>2025-09-27T21:50:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszm0a5zdva7lvvy8pxtul4eupvmehuzdxa6vf5gg7nxmmyadq96ugzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2tl4mg</id>
    
      <title>Nostr event nevent1qqszm0a5zdva7lvvy8pxtul4eupvmehuzdxa6vf5gg7nxmmyadq96ugzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2tl4mg</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszm0a5zdva7lvvy8pxtul4eupvmehuzdxa6vf5gg7nxmmyadq96ugzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2tl4mg" />
    <content type="html">
      Larry Ellison might be a bond villian
    </content>
    <updated>2025-09-27T21:50:07&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9lm7rf2hfh52frl24exjcl82aag9uelw4ng02mdwn4xpprzyv33czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9tvam6</id>
    
      <title type="html">🤣 @nprofile…zrw0 https://i.nostr.build/Uz9lmGgB8RKbFBTN.jpg</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9lm7rf2hfh52frl24exjcl82aag9uelw4ng02mdwn4xpprzyv33czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9tvam6" />
    <content type="html">
      🤣 &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsw0pnj8s3q675msw33sy4jthsmndqlun59wldup89uv2msxqgnqlcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcpypmhxue69uhkummnw3ezuetfde6kuer6wasku7nfvuh8xurpvdjj7qghwaehxw309aex2mrp0yhxz7n6v9kk7tnwv46z7mwzrw0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ethicalrecoverycompany&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…zrw0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://i.nostr.build/Uz9lmGgB8RKbFBTN.jpg&#34;&gt; 
    </content>
    <updated>2025-09-27T19:54:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8zqhugej3av322mr848m2wf6gzftpjlgmmd89fyvfp526zhy2ccczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc4cmad9</id>
    
      <title type="html">Decentralized toebeans</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8zqhugej3av322mr848m2wf6gzftpjlgmmd89fyvfp526zhy2ccczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc4cmad9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9m3kd5jgjupvx27hnxls29f5qmzr0f35qamcf6els83jzjef5c8qprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsj5dnr9&#39;&gt;nevent1q…dnr9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Decentralized toebeans 
    </content>
    <updated>2025-09-27T17:05:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsv6l94a4s05fwzue6u0mycyvuucudv04zr80tnsjvhpvu7c0r0x4czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcsksahe</id>
    
      <title type="html">Just a friendly PSA - if you find the UKs digital/biometric ID ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsv6l94a4s05fwzue6u0mycyvuucudv04zr80tnsjvhpvu7c0r0x4czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcsksahe" />
    <content type="html">
      Just a friendly PSA - if you find the UKs digital/biometric ID proposal reprehensible (you should!), you should probably opt out of TSA scanning your face the next time you fly 
    </content>
    <updated>2025-09-27T17:04:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9llwr0l4xhc8t63z3dawm3keu5qv00zrfa75ek98hr3vxg8tr38czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcvhuhst</id>
    
      <title type="html">Starting to lean that way as well</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9llwr0l4xhc8t63z3dawm3keu5qv00zrfa75ek98hr3vxg8tr38czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcvhuhst" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp52csyx99r3xx7ntpxhg7atuv520tsax99zf9vr95qz3xmu45g9qpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtc374msh&#39;&gt;nevent1q…4msh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Starting to lean that way as well
    </content>
    <updated>2025-09-27T16:58:27&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstseazqhpzpz4d3mvzznfny9x3h6q95lewa55egux9rgefqngnl7qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcap4jyr</id>
    
      <title type="html">@nprofile…u090 putting in some impressive work in opposition to ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstseazqhpzpz4d3mvzznfny9x3h6q95lewa55egux9rgefqngnl7qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcap4jyr" />
    <content type="html">
      &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsw79gu0guq7s98t473fyavx3akwaafmx6l5z4rehd50lrcl2mf4zcprfmhxue69uhkzer4d36zuvfcwpk82uewwdhkx6tpdshsz9mhwden5te0v96xcctn9ehx7um5wghxcctwvshsz9thwden5te0wfjkccte9ejxzmt4wvhxjme094u090&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;giacomozucco&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…u090&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; putting in some impressive work in opposition to &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsrkf8nywh9a8em7gsx4lvwsf4h4ndhz74k4a7jvvu0grjxjs7f23qpzamhxue69uhhyetvv9ujumn0wvh8xmmrd9skctc9yuphl&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;therage&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…uphl&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; article about Luke. &lt;br/&gt;&lt;br/&gt;I do not claim to be smart enough to fully grasp every angle of this debate (probably something more folks on both sides should acknowledge), but in any case it&amp;#39;s worth reading through his replies
    </content>
    <updated>2025-09-27T16:03:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszjwcgwrk2vag8cgm50m5tmdg0hjfvdsvwn8zjv0p349m0cvhjvnszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnpa37n</id>
    
      <title type="html">https://www.therage.co/leaked-luke-dashjr-bitcoin-hardfork/</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszjwcgwrk2vag8cgm50m5tmdg0hjfvdsvwn8zjv0p349m0cvhjvnszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcnpa37n" />
    <content type="html">
      &lt;a href=&#34;https://www.therage.co/leaked-luke-dashjr-bitcoin-hardfork/&#34;&gt;https://www.therage.co/leaked-luke-dashjr-bitcoin-hardfork/&lt;/a&gt;
    </content>
    <updated>2025-09-26T14:18:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd098ufwwy0gyhq8yf02lt4u4e04yrxw483tcc5u2jl5cz4t62nzqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2az605</id>
    
      <title type="html">bringing logic to an emotionally charged debate often pisses off ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd098ufwwy0gyhq8yf02lt4u4e04yrxw483tcc5u2jl5cz4t62nzqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2az605" />
    <content type="html">
      bringing logic to an emotionally charged debate often pisses off the most emotional  
    </content>
    <updated>2025-09-26T14:17:03&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsraq58vc9yemch4vkjpphhk4epng72hnvtmjhknle6ulmv8yv9rvszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2lvte4</id>
    
      <title type="html">Thank you! Forgot about this</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsraq58vc9yemch4vkjpphhk4epng72hnvtmjhknle6ulmv8yv9rvszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc2lvte4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvv5vl869983vt99uvt5t99vjf8vre9ud3lttcw7av8td8kz3qjwgpz9mhxue69uhkummnw3ezuamfdejj79jl7dd&#39;&gt;nevent1q…l7dd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thank you!  Forgot about this 
    </content>
    <updated>2025-09-26T13:58:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqnmx54s8npsf463u2f9ndeanesswcpd9gt52r86gpsnxeqs3pnwszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jce796kq</id>
    
      <title type="html">What about social media has absolutely destroyed our sense of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqnmx54s8npsf463u2f9ndeanesswcpd9gt52r86gpsnxeqs3pnwszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jce796kq" />
    <content type="html">
      What about social media has absolutely destroyed our sense of shame?&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsxuyx7chlzqxgyc6aach9ha5uarhke2k0m3wv5g9j9v0s77v5lh7spz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsygzd0ppq29uzurflavp569g2ms4khtjwuw6f0pne80l6g69k7kukkvpsgqqqqqqsa26zjs&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…6zjs&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; ⚡️🇺🇸 WATCH - She&#39;s 116th in the food bank line and documents the wait and food she receives&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://blossom.primal.net/f35da417c648b816812c69b8db863d278bc83b5d4a6356cfd67d57e7e793b107.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;
    </content>
    <updated>2025-09-26T13:47:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8t0fc0z0jtmcuqwcv66kfdmqk0sgkm6sg5gx84f0efke69slkz5czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc4yxxe4</id>
    
      <title type="html">https://i.nostr.build/Oihvn6RVAqauT2OO.gif</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8t0fc0z0jtmcuqwcv66kfdmqk0sgkm6sg5gx84f0efke69slkz5czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc4yxxe4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs02hfhq29ut4ygykek90df5phu9jk37k3rrtv3v2xe7ql9kl0ak8spzemhxue69uhkyetkduhxummnw3erztnrdakj7k58lxy&#39;&gt;nevent1q…8lxy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://i.nostr.build/Oihvn6RVAqauT2OO.gif&#34;&gt; 
    </content>
    <updated>2025-09-26T02:59:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg7wy9ej6d2yy7yq6qlxxq4zwcvawjw0q2sv08l7z22cga26d32jqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jctlgrth</id>
    
      <title type="html">https://i.nostr.build/P45hM3CxInehXRbD.gif #nevent1q…xwlr</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg7wy9ej6d2yy7yq6qlxxq4zwcvawjw0q2sv08l7z22cga26d32jqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jctlgrth" />
    <content type="html">
       &lt;img src=&#34;https://i.nostr.build/P45hM3CxInehXRbD.gif&#34;&gt; &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsxu7mwlgn5aldtntdmp6yf059wagxdvwcfrm2k78370hedtja3t6gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsygzel0h8x6wlwufah0afh0ds3ykx96af9y3jv9wxlunc0k3cfjmhpupsgqqqqqqsnsxwlr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…xwlr&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; JUST IN: World&#39;s largest asset manager BlackRock files for Bitcoin Premium Income ETF 💥  &lt;img src=&#34;https://blossom.primal.net/8321b1c04cea180ebdc7079b701c07b8aefbf55fd4bc9372ec7a1830d2864513.jpg&#34;&gt;   &lt;/blockquote&gt;
    </content>
    <updated>2025-09-25T22:54:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8yct0qnaw52tvv7pwvmezd9phal4hdufdlghg6369pfsa33pft9gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcr74c8v</id>
    
      <title type="html">Take the no-pills pill #nevent1q…tcu4</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8yct0qnaw52tvv7pwvmezd9phal4hdufdlghg6369pfsa33pft9gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcr74c8v" />
    <content type="html">
      Take the no-pills pill &lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqs2wumdl4yj3f8zqpetmgu9k2pr3shyaz28d5zra5k2xem94hx0u3qpzdmhxue69uhhwmm59e6hg7r09ehkuef0qgsw9n8heusyq0el9f99tveg7r0rhcu9tznatuekxt764m78ymqu36crqsqqqqqpmjtcu4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…tcu4&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; red pill, black pill, blue pill, orange pill&lt;br/&gt;&lt;br/&gt;stop taking pills weirdos &lt;/blockquote&gt;
    </content>
    <updated>2025-09-25T17:20:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd5zgxtsnh33mn2khl95xhxld7ptvuzqe8223fnn7kw3h7w9xmulgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcha7tvg</id>
    
      <title type="html">If you think this kimmel saga is some kind of novel free speech ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd5zgxtsnh33mn2khl95xhxld7ptvuzqe8223fnn7kw3h7w9xmulgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcha7tvg" />
    <content type="html">
      If you think this kimmel saga is some kind of novel free speech issue, you should go protest about it on national park land without getting permission first&lt;br/&gt;&lt;br/&gt;GM 🤙
    </content>
    <updated>2025-09-25T14:06:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszl9cwpp6p2xh0uxhwrms9757tkgmjh99zfrjx9lse4j458ww8uwqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcegyr2d</id>
    
      <title type="html">Please don&amp;#39;t tell me it connects to your homes wifi</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszl9cwpp6p2xh0uxhwrms9757tkgmjh99zfrjx9lse4j458ww8uwqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcegyr2d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrdp296s23j90sxgzul28pd32hje3zwl4ue8wgk5zrn5py3ax07eqpz9mhxue69uhkummnw3ezuamfdejj7qusjuy&#39;&gt;nevent1q…sjuy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Please don&amp;#39;t tell me it connects to your homes wifi
    </content>
    <updated>2025-09-24T02:04:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyhkwjv07jzhgp503vlqwp2thnfflpc9geu92slk7wfd697ymm8qszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jckynr4a</id>
    
      <title type="html">Is there a service I can install in my homeland that will act as ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyhkwjv07jzhgp503vlqwp2thnfflpc9geu92slk7wfd697ymm8qszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jckynr4a" />
    <content type="html">
      Is there a service I can install in my homeland that will act as a nostr relay caching service?  So it constantly pulls my feeds then my phone pulls from in locally&lt;br/&gt;&lt;br/&gt;#asknostr 
    </content>
    <updated>2025-09-24T01:58:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8wmjnhw0xvvleh5vqqrzewd8ufn5m9cac06803v4mt74xghamx6czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcyyz5sg</id>
    
      <title type="html">Reposts shouldn&amp;#39;t work the way they do on X. It shouldn&amp;#39;t ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8wmjnhw0xvvleh5vqqrzewd8ufn5m9cac06803v4mt74xghamx6czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcyyz5sg" />
    <content type="html">
      Reposts shouldn&amp;#39;t work the way they do on X. It shouldn&amp;#39;t literally just make the post show up a second time in my feed (unless the new poster added something).  A pure repost should broadcast the note to all my relays and clients should use repost data for feed curation.  &lt;br/&gt;&lt;br/&gt;You kind of like a post = react&lt;br/&gt;You want to reciprocate value = zap&lt;br/&gt;You want the message to spread = repost 
    </content>
    <updated>2025-09-23T14:50:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8ve23cdjqu6u724qlvnxs3tq9ah6w6vsk0pgwwp6lfa6ztmrzggczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc22n5pd</id>
    
      <title type="html">Have fun with your bitcoin!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8ve23cdjqu6u724qlvnxs3tq9ah6w6vsk0pgwwp6lfa6ztmrzggczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc22n5pd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszkdn8la30dv8qjlkm65g8flpsg3ptkeas7cyfys5kmvkldznadpgppamhxue69uhkztnwdaejumr0dsxwntkh&#39;&gt;nevent1q…ntkh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Have fun with your bitcoin! &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-23T13:11:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd28yljt59uzz2fmysfsm5zc9x4p2n0uzkcsuwhwgsnldcfeyl8dczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jca43ntp</id>
    
      <title type="html">Congrats 🤙</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd28yljt59uzz2fmysfsm5zc9x4p2n0uzkcsuwhwgsnldcfeyl8dczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jca43ntp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqduf9z06677km040wskufz3rmzfelrcazvymyj4575whqz7manugpupmhxue69uhhyetvv9ujuerpd46hxtnfduhj2v3swaehxw309aex2mrp0yhxumm5daeks6fwwa5kute9xgc8wumn8ghj7mn0wvhxcmmv9ujnyvrhwden5te0wfjkccte9eekjctdwd68ytnrdakj7ffjxpmhxue69uhhyetvv9ujuvrcvd5xzapwvdhk6te9xgc8wumn8ghj7mnxwfjkccte9eshqup0y5erqamnwvaz7tmjv4kxz7tjwvhxumm5daeks6fwwa5kute9xgc8wumn8ghj7un9d3shjtnwv4u8getj0ghxxmmd9ujnyvrhwden5te0vejkuunfwgkhxtnwda6x7umgdyh8w6twgyl2dp&#39;&gt;nevent1q…l2dp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Congrats 🤙 &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-23T01:33:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2su6lg8dnt8kq2hg2x5t690g4648vj2z7z4fuwlwcpyv0w5lltygzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcurl2tp</id>
    
      <title type="html">Green Orchid Bee!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2su6lg8dnt8kq2hg2x5t690g4648vj2z7z4fuwlwcpyv0w5lltygzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcurl2tp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdg6nf2e2hvv7z6vpkjk3xeqtzfmm0rwfy35y2t4keykpkxwc72aqprfmhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9ukql30apm&#39;&gt;nevent1q…0apm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Green Orchid Bee!  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-23T00:47:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr3q2tz43srnpf76dsxxt5jgzhml9elcfq3qc43nedmr4jhztpqngzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcaqjd0j</id>
    
      <title type="html">Looks like @nprofile…ys9x is cooking up a nostr based, agentic, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr3q2tz43srnpf76dsxxt5jgzhml9elcfq3qc43nedmr4jhztpqngzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcaqjd0j" />
    <content type="html">
      Looks like &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsqgc0uhmxycvm5gwvn944c7yfxnnxm0nyh8tt62zhrvtd3xkj8fhgprdmhxue69uhkwmr9v9ek7mnpw3hhytnyv4mz7un9d3shjqg4waehxw309aex2mrp0yhxgctdw4eju6t09udnys9x&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Alex Gleason&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…ys9x&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; is cooking up a nostr based, agentic, IDE 🔥&lt;br/&gt; &lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqswdfu780gjx9j759ml2ypkxqwgsq74ectxmvfvea0ke2m2x7lnrggpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgq3qq3sle0kvfsehgsuexttt3ugjd8xdklxfwwkh559wxckmzddywnwsxpqqqqqqzle5qy8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…5qy8&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Let&#39;s work on AGENTS.md. I want to add a section about git in the browser with isomorphic-git in the Shakespeare section at the top. Analyze this codebase and write your findings in there.&lt;br/&gt;&lt;br/&gt;Can you condense the information a bit more, including only the crucial information without unnecessary extra verbiage?&lt;br/&gt;&lt;br/&gt;Please add a GitDialog I can access from the 3-dots menu in a project that allows me to view the repo&#39;s status compared to the remote (whether they are in sync or not) and also lets me push and pull from it.&lt;br/&gt;&lt;br/&gt;Looks good, but how come I can&#39;t push? I have local changes not on the remote. The push button is disabled. &lt;br/&gt;&lt;br/&gt;Much better, but I don&#39;t want it to auto-commit. Otherwise this fix worked. I didn&#39;t have uncommitted changes.&lt;br/&gt;&lt;br/&gt;In the GitDialog, can you allow me to enter a username and password for use with push?&lt;br/&gt;&lt;br/&gt;Please add a GitSettingsDialog. It should closely mirror the AISettingsDialog, but it should be for managing git (http) credentials instead of AI providers. There should be a GitCredential interface having a `username` and `password` (both required). They would be in a `credentials` object keyed by origin, eg `{&#34;&lt;a href=&#34;https://github.com&#34;&gt;https://github.com&lt;/a&gt;&#34;: {&#34;username&#34;: &#34;git&#34;, &#34;password&#34;: &#34;&lt;api-token&gt;&#34;}, &#34;&lt;a href=&#34;https://gitlab.com&#34;&gt;https://gitlab.com&lt;/a&gt;&#34;: {...}}`. Like AI settings, there would be presets, starting with GitHub and GitLab. To add a preset, only the &#34;password&#34; field must be entered by the user (but we will call it &#34;Token&#34; in the UI), and the &#34;username&#34; field will be hardcoded, probably to &#34;git&#34; (depending on the provider). But when editing a provider or adding a custom provider, the raw &#34;username&#34; and &#34;password&#34; fields would be shown. To add a custom provider, you would also have to specify the &#34;origin&#34;. Start with this functionality and we&#39;ll go from there.&lt;br/&gt;&lt;br/&gt;In the 3-dots dropdown in the ProjectView, there&#39;s a &#34;Git Status&#34; option that pops open the GitDialog, allowing to push and pull the project to git. There&#39;s currently a username and password field there, that I wish to remove. Instead, I want to match the repo&#39;s origin URL to a credential set in the GitSettingsDialog, and use the username and password from that. If one isn&#39;t found, a subtle warning should be displayed. This way users can configure git providers globally and they will work in any project without needing the user to re-enter their credentials every time they want to pull or push.&lt;br/&gt;&lt;br/&gt;In the `src/lib/tools/` directory, there is a GitCommit tool. I&#39;d like to also add GitStatus, GitPull, GitPush, and GitHistory for working on the cwd.&lt;br/&gt;&lt;br/&gt;Please add the new tools to the AI chat by adding them in the ChatPane. Also give them a custom icon and name in the AIMessageItem component.&lt;br/&gt;&lt;br/&gt;Please add `src/lib/commands/git.ts` and implement the `git` command from scratch (backed by isomorphic-git), supporting only the actions isomorphic-git can do.&lt;br/&gt;&lt;br/&gt;You should also create a `src/lib/commands/git/` directory containing the subcommands, eg `status.ts`, `commits.ts`, etc. The main `git.ts` would mainly parse the input and map them to subcommands.&lt;br/&gt;&lt;br/&gt;It looks like you are calling isomorphic-git incorrectly in some places, passing the wrong `http` option and not using the `corsProxy` option correctly. Please check existing git code, eg `src/components/GitDialog.tsx`, to see the correct way to pass the http and corsProxy options.&lt;br/&gt;&lt;br/&gt;Please review the git shell implementation in `src/lib/commands/git.ts` and ensure it&#39;s all correct.&lt;br/&gt;&lt;br/&gt;I think &#34;git history&#34; might not be right. It only returns one result when I know there are several. I am not sure if it&#39;s an issue with the command or the way we clone projects, because I&#39;ve seen this issue in multiple places in the codebase.&lt;br/&gt;&lt;br/&gt;Wow, great catch. Btw, I do want to squash the comment history when creating a _new_ project. I don&#39;t want to when cloning a project. So I think we can revert this and then simply just remove depth: 1 ?&lt;br/&gt;&lt;br/&gt;Wonderful. Since I do want to remove git history from new projects, maybe cloneProject should accept a depth option, and we should pass depth: 1 from createProject.&lt;br/&gt;&lt;br/&gt;Can we refactor settings? In the ProjectsSidebar 3-dots menu, we currently have &#34;AI Settings&#34; and &#34;Git Settings&#34;. Each has their own dialog. But I&#39;d rather we have a `/settings` page, along with `/settings/ai` and `/settings/git` subpages. It should use the same app layout as the ProjectView. We should remove those dialogs and make existing code navigate to the new paths instead.&lt;br/&gt;&lt;br/&gt;Now in the 3-dots menu of the ProjectsSidebar, can we have just one &#34;Settings&#34; button? I&#39;d also like the background color to be changed to white on those screens (it&#39;s currently gray).&lt;br/&gt;&lt;br/&gt;Maybe we should just put the whole settings pages inside a card instead of doing that. I don&#39;t want to add too much complexity.&lt;br/&gt;&lt;br/&gt;Can&#39;t we also remove those two dialogs components now?&lt;br/&gt;&lt;br/&gt;The GitDialog opens the settings page in a new tab instead of just navigating to it with client-side routing. That&#39;s very wrong&lt;br/&gt;&lt;br/&gt;I&#39;d like to refactor the Settings pages so that on desktop it has a 3-column layout, with the left column being the optionally hidden ProjectsSidebar, the middle column being the contents of the current Settings page (although I&#39;d like to redesign this so the options are stacked and there&#39;s no card background), and the right is the actual individual settings page. On mobile you&#39;d still have to click through to navigate into a particular settings page. Let&#39;s remove the card backgrounds and also just make the whole background white for these pages.&lt;br/&gt;&lt;br/&gt;Can we make the middle sidebar a bit wider?&lt;br/&gt;&lt;br/&gt;When I visit the Settings page on mobile, it appears to be blank.&lt;br/&gt;&lt;br/&gt;We can remove the &#34;Welcome to Settings&#34; section in the right side on desktop and just leave it blank.&lt;br/&gt;&lt;br/&gt;On mobile when I am viewing an individual settings page, eg `/settings/ai` and `/settings/git`, can I have a back button at the top that brings me back to `/settings`?&lt;br/&gt;&lt;br/&gt;This looks bad. The back button should be above the title, not to the side of it.&lt;br/&gt;&lt;br/&gt;Looks better. On mobile, clicking Settings in the left sidebar should close the sidebar, similar to how clicking Import Repository does.&lt;br/&gt;&lt;br/&gt;On the Settings page, when viewing on desktop, when I navigate between pages by eg cliking between &#34;AI Settings&#34; and &#34;Git Settings&#34; in the sidebar, the ProjectsSidebare quickly disappears and then reappears when the new page is navigated to, creating a jarring experience.&lt;br/&gt;&lt;br/&gt;This fix worked beautifully, thank you. Also, can we restrict the max-width of the settings content in the SettingsLayout? I&#39;m talking about the right side of the screen where the individual settings screens are displayed, particularly on desktop.&lt;br/&gt;&lt;br/&gt;Please add a &#34;Data&#34; section to settings (`/settings/data`) and move the &#34;Export Files&#34; functionality from the 3-dots menu in the ProjectsSidebar into that new page instead. Also add an option to clear all local data (with a confirmation) that wipes out localStorage and IndexedDB then redirects to the homepage.&lt;br/&gt;&lt;br/&gt;Can we include the data icon by the title to be consistent with the other settings pages?&lt;br/&gt;&lt;br/&gt;In the ProjectsSidebar, can we add a down-arrow to the right of the New Project button, and clicking it would pop open a menu with the option to &#34;Import Repository&#34;? Then we could remove &#34;Import Repository&#34; from the 3-dots menu.&lt;br/&gt;&lt;br/&gt;This functionality is right, but the gradient background on the button looks very ugly. Now the chevron has a separate gradient than the button itself. I want the whole button to have the same gradient all the way across it, and for the dropdown to be an element inside that. I&#39;m not sure if it&#39;s possible to do it how I want, or if maybe the background should be a floating div that extends to cover the whole container.&lt;br/&gt;&lt;br/&gt;There we go, that looks much better now. Okay, now we can remove the 3-dots menu and replace it with a cog button that goes straight to the Settings page. Also, let&#39;s remove the redundant &#34;New Project&#34; item from the arrow menu - I think it&#39;s okay to have just the &#34;Import Repository&#34; button inside there for now.&lt;br/&gt;&lt;br/&gt;In the chat UI, when there are no messages, please display some kind of placeholder so it&#39;s just just an empty white box.&lt;br/&gt;&lt;br/&gt;In the chat UI, if there are no messages and nothing is loading, please display something there so it&#39;s not an empty white box.&lt;br/&gt;&lt;br/&gt;In the ProjectSidebar, I want the Star button to work differently. I don&#39;t want it to be a button. I want it to only be displayed if the project is favorited, in which case it would be filled, and clicking it would do nothing. If the project is not favorited, it should not be displayed. To favorite and unfavorite a project, you would have to do it with the StarButton in the ProjectView. We should leave the StarButton component itself unchanged, and just do a custom thing in the ProjectSidebar.&lt;br/&gt;&lt;br/&gt;Can we add a useProjects hook to load the projects list (`projectsManager.getProjects()`) in a React Query hook? Then starring or unstarring a project with the StarButton should invalidate that queryKey making it refetch. The hook should also sort the projects correctly (by favorited status, then lastModified) within the queryFn, so no sorting is needed outside it.&lt;br/&gt;&lt;br/&gt;Please update the useLocalStorage hook to use React Query instead of a local useState. The hook interface should stay the same. Its queryKey should be like `[&#39;localStorage&#39;, key]`, and setting a value should make it refetch.&lt;br/&gt;&lt;br/&gt;In the useProjects hook, there is something wrong with the way the projects are sorted. All favorited projects should be sorted in a separate section at the top, internally sorted by lastModified. Non-favorited projects would all be below favorited ones, also sorted internally by lastModified. The current way allows favorited and non-favorited to be mixed together. Don&#39;t edit the code yet, just see if you can identify the problem. &lt;br/&gt;&lt;br/&gt;Can we adjust the useIsMobile hook to have its default state based on the current screen size? I notice AppLayout.tsx and SettingsLayout.tsx are doing something like that to set the initial state of the sidebar, but it would be cleaner if we could just pass the isMobile value to it.&lt;br/&gt;&lt;br/&gt;In `src/pages/ProjectView.tsx`, we must update the conditional `if (!project)` to `if (!project &amp;&amp; !isLoading)` so it does not return early. Then we must update sections of the UI to display a loading state when `project` is not available.&lt;br/&gt;&lt;br/&gt;In the Project Preview, where the text that says &#34;Project Preview&#34; is, can we make that look like a browser address bar instead? It should have a forward and back button, refresh, and address input. The input should use root-relative paths (eg `/`, or `/about`). For now don&#39;t try very hard to make it work correctly, just make it look right.&lt;br/&gt;&lt;br/&gt;Please compare file-orig.png and file-fetched.png and see if you can figure out what&#39;s different on a binary level. file-fetched.png is broken, but orig isn&#39;t.&lt;br/&gt;&lt;br/&gt;Let&#39;s work on `iframe-fetch-client/MESSAGING_PROTOCOL.md`. If the body is not null, it must be a base64 encoded string.&lt;br/&gt;&lt;br/&gt;Please add `src/lib/commands/curl.ts` and implement curl, then connect it to `src/lib/tools/ShellTool.ts`. It should be a simplified implementation of curl backed by `fetch`, but it should support common flags.&lt;br/&gt;&lt;br/&gt;In `src/pages/DataSettings.tsx`, use the StorageManager API (if available) to display information about how much storage space is being used.&lt;br/&gt;&lt;br/&gt;Go on. Ignore the `curl` issue.&lt;br/&gt;&lt;br/&gt;On the AI Settings page and Git Settings page, please put &#34;Add Custom Provider&#34; into an accordion so it&#39;s hidden until clicked.&lt;br/&gt;&lt;br/&gt;In the curl implementation at `src/lib/commands/curl.ts`, please proxy all requests through CorsProxy, eg `&lt;a href=&#34;https://example.com&#34;&gt;https://example.com&lt;/a&gt;` would be converted to `&lt;a href=&#34;https://corsproxy.io/?url=https://example.com&#34;&gt;https://corsproxy.io/?url=https://example.com&lt;/a&gt;` before fetching.&lt;br/&gt;&lt;br/&gt;`iframe-fetch-client/MESSAGING_PROTOCOL.md` has been updated to encode the fetch body in base64. Now let&#39;s update `iframe-fetch-client/_iframe-client.js` to decode it, and `src/components/Shakespeare/PreviewPane.tsx` to send base64 data. Note that PreviewPane calls `projectsManager.readFile` which returns the file data as a string, but it needs to get it as a Uint8Array before converting to base64, so we need a new method for that.&lt;br/&gt;&lt;br/&gt;I don&#39;t understand the changes to `iframe-fetch-client/_iframe-client.js` tbh. Doesn&#39;t it only make sense to edit sw.js? use git with the shell tool to check the diff and consider checkout out the original version from HEAD&lt;br/&gt;&lt;br/&gt;Please run tests and fix the failures I caused by editing the DataSettings page and neglecting to update the tests.&lt;br/&gt;&lt;br/&gt;The &#34;Preview&#34; and &#34;Code&#34; tabs at the top of the Preview Pane on desktop look ugly. Can you improve that design?&lt;br/&gt;&lt;br/&gt;In the Settings layout, on desktop, please ensure the center settings pane (with &#34;AI Settings&#34;, &#34;Git Settings&#34;, &#34;Data&#34; links) scrolls separately from the viewport to the right of it (the individual selected settings page)&lt;br/&gt;&lt;br/&gt;Go&lt;br/&gt;&lt;br/&gt;Add Bitbucket as a preset on the Git Settings page&lt;br/&gt;&lt;br/&gt;In the AI chat UI, please allow me to attach a file. When I submit the message, the file would get added to the VFS inside of `/tmp/` (if a filename of the same name already exists, it would append `1` or `2` etc to the filename) and text would be added to the bottom of my user message, saying `File added to &lt;fullpath&gt;`&lt;br/&gt;&lt;br/&gt;Please also update the TextEditorViewTool to allow viewing absolute paths. That&#39;s an unnecessary restriction.&lt;br/&gt;&lt;br/&gt;Can you also remove that restriction from the `cat` command (in `src/lib/commands/cat.ts`)? It should be able to access any file in the VFS, not just restricted to the cwd&lt;br/&gt;&lt;br/&gt;In the shell commands in src/lib/commands/, please remove the restriction on absolute paths for *read* operations. That means I should be able to use `head` and `tail` (as examples) on any file in the VFS. I should be able to also `cp` *from* an absolute path to a relative one, but not the reverse. As for write operations (such as `mv` and `rm`), their security is good, but should be extended to allow writing to any files in the `/tmp/` directory (or any subdirectories therein). That means `cp` can also write to `/tmp/` even if it&#39;s an absolute path. Also, add a &#34;Security&#34; section to AGENTS.md (under the &#34;Shakespeare&#34; headline&#34;) outlining these rules (but keep it simple and brief).&lt;br/&gt;&lt;br/&gt;Actually let&#39;s work on AGENTS.md first&lt;br/&gt;&lt;br/&gt;Not just shell commands. Any tools. These are about read and write operations the AI should be allowed to perform on the filesystem.&lt;br/&gt;&lt;br/&gt;Ignore my instructions to work on the code. Let&#39;s only work on AGENTS.md for the first pass. Add the `/tmp/` directory to the Filesystem Architecture&lt;br/&gt;&lt;br/&gt;The tree doesn&#39;t look right, does it?&lt;br/&gt;&lt;br/&gt;Inside an individual project there can be arbitrary files, so we should change what is under `{projectId}/`&lt;br/&gt;&lt;br/&gt;In the security section, clarify that the AI should have access to the filesystem in these ways through the use of tools, including shell commands with the ShellTool&lt;br/&gt;&lt;br/&gt;Above the security section, add a list of AI tools available in Shakespeare. Please clarify that these tools might not be the same as the tools available to you as you work on this project. They are the tools you would develop for agents within Shakespeare.&lt;br/&gt;&lt;br/&gt;Your list is wrong. Look inside of `src/lib/tools/`. Also note in your description that the tools are defined in `src/lib/tools/`&lt;br/&gt;&lt;br/&gt;At the very top, clarify what Shakespeare is. It is a brower-based application where all operations including AI chat and git operations are executed in client-side JS, with API keys stored in browser storage.&lt;br/&gt;&lt;br/&gt;Under the VFS Layout section, clarify at the top that this is the VFS within the browser that Shakespeare agents act upon.&lt;br/&gt;&lt;br/&gt;Please update the &#34;Project Structure&#34; section of AGENTS.md concerning important new paths that have been added to the codebase, eg `src/lib/build/`, `src/lib/commands/`, `src/lib/tools/`, as well as important hooks like `useFS` and important contexts like AISettingsContext, GitSettingsContext, and SessionManagerContext&lt;br/&gt;&lt;br/&gt;In AGENTS.md, between the AI Tools and Security section, add a brief section about Shell Commands. Shell commands are JavaScript reimplementations of common Unix commands and work upon the VFS through the ShellTool.&lt;br/&gt;&lt;br/&gt;Please check every shell command and ensure that read operations will work across the whole VFS and that write operations work in `/tmp/`. Some existing tools have restrictions on absolute paths that prevent normal operation.&lt;br/&gt;&lt;br/&gt;Can you add a new file, like `src/lib/security.ts` to deduplicate the code around paths? I am seeing this `isWriteAllowed` function duplicated a lot, which is not good for bundle size.&lt;br/&gt;&lt;br/&gt;Please allow me to attach files to the chat UI. When I submit the message, the file should be added in the `/tmp` directory of the VFS (with effort taken to deduplicate files of a similar name, eg adding 1, then 2, then 3 etc to the end of the filename). When I do, append text to my user message that says &#34;File added to &lt;fullpath&gt;&#34;&lt;br/&gt;&lt;br/&gt;This is working great! Couple more requests, please. When a user message has text in that format, `File added to /tmp/&lt;filename&gt;`, can we render it so it gets displayed nicely? Also, let&#39;s use rounded-full on the attach button - it currently has a square background on hover and round would look nicer. &lt;br/&gt;&lt;br/&gt;Please change src/components/FileAttachmentMessage.tsx name to UserMessage&lt;br/&gt;&lt;br/&gt;In AGENTS.md, please add a section about the AI message format. Mention that Shakespeare uses OpenAI-compatible messages. Regarding user messages, string `content` represents actual user&#39;s message. If `content` is an array of parts, the first text part represents the user&#39;s actual message, and subsequent text parts represent user actions, such as adding a file to the VFS. Those texts are expected to be human-readable while also maintaining a consistent pattern so they can be parsed by UIs.&lt;br/&gt;&lt;br/&gt;In the `Added file:` examples, use &#34;Can you add this logo to my site?&#34;, &#34;Added file: /tmp/logo.svg&#34;&lt;br/&gt;&lt;br/&gt;I think we need to update sendMessage to accept a string OR text parts, and update the attachment code to use a separate text part to represent adding a file.&lt;br/&gt;&lt;br/&gt;Can you change the message format to use a colon, more like this? &#34;Added file: /tmp/logo.svg&#34;&lt;br/&gt;&lt;br/&gt;Please allow the ls command to work on directories with absolute paths&lt;br/&gt;&lt;br/&gt;In the TextEditorView tool, please do a quick check on the file to see if it&#39;s a binary file like a png and prevent it from spewing binary data. It should say a placeholder of some sort.&lt;br/&gt;&lt;br/&gt;I think there are problems with the security of our terminal commands. They are too restrictive. For example, I just got this error: `cp: write access denied to /projects/nut-work/public/squirrel-banner.jpg. Write operations are only allowed in project directory and /tmp/`. But the current project directory IS `/projects/nut-work`. The command is complaining because an absolute path was used, even though the relative path `public/squirrel-banner.jpg` would have worked fine.&lt;br/&gt;&lt;br/&gt;In the UserMessage component, I want to remove the full path from rendered added files.&lt;br/&gt;&lt;br/&gt;I think `git reset --hard HEAD` doesn&#39;t work in the ShellTool&lt;br/&gt;&lt;br/&gt;Please add a Git class to src/lib/git.ts. You should instantiate it with an fs implementation and optional corsProxy string. It should expose methods with the same names as isomorphic-git, without requiring the caller to pass in the corsProxy, fs, and http implementations each time.&lt;br/&gt;&lt;br/&gt;This is amazing. Now please add a `useGit` hook, and update all the code in this codebase to use either useGit or directly instantiate a `Git` class method. Ideally no files would import `isomorphic-git` directly and would instead import directly from `@/lib/git`&lt;br/&gt;&lt;br/&gt;Please scan the codebase for direct imports of isomorphic-git, eg `import git from &#39;isomorphic-git&#39;;`, and make them use our custom Git class from `src/lib/git.ts`. All the commands in the commands dir should accept a Git instance passed into it, which it gets from the ShellTool, which has a Git instance passed into it when it&#39;s instantiated.&lt;br/&gt;&lt;br/&gt;Don&#39;t add git to the end of those function signatures... it should be added to the start&lt;br/&gt;&lt;br/&gt;Honestly these should be converted to use a single object arg, not positional arguments&lt;br/&gt;&lt;br/&gt;1&lt;br/&gt;&lt;br/&gt;Why are we passing git into the execute method instead of passing it into the constructor?&lt;br/&gt;&lt;br/&gt;The fs should also be passed into the constructor&lt;br/&gt;&lt;br/&gt;Please refactor the git subcommands to take an object in their constructor containing the git instance, fs, and pwd. Then the `execute` method should only take the args. The GitCommand itself should also take an object into its constructor with the git, fs, and cwd&lt;br/&gt;&lt;br/&gt;Wait, why are you using this type `private git: typeof import(&#39;isomorphic-git&#39;).default;` instead of the `Git` type from `@/lib/git`?&lt;br/&gt;&lt;br/&gt;The ShellTool should accept a Git instance in its constructor, not create one&lt;br/&gt;&lt;br/&gt;Excellent. Also refactor GitCommitTool to accept a Git instance&lt;br/&gt;&lt;br/&gt;Try again&lt;br/&gt;&lt;br/&gt;Please make the git corsProxy configurable in the Git Settings, and pass into the `new Git()` constructor in `useGit` hook&lt;br/&gt;&lt;br/&gt;Can we also have a configurable `corsProxyRegex`? It would default to `^https?:\/\/(github\.com|gitlab\.com)\/`. The `new Git` constructor should take this, and use the corsProxy in the underlying method only if the remote matches the regex.&lt;br/&gt;&lt;br/&gt;Remove the corsProxyRegex and apply the corsProxy unconditionally again&lt;br/&gt;&lt;br/&gt;On the Git Settings page, please put the &#34;CORS Proxy&#34; section in an accordion and move it to the bottom&lt;br/&gt;&lt;br/&gt;Make the label say &#34;URL&#34; instead of &#34;CORS Proxy URL&#34;&lt;br/&gt;&lt;br/&gt;Please make it so if I type a terminal command in the chat UI and submit it, if it looks like a shell command, instead of starting an AI generation it should insert an empty assistant message into the chat with a tool call for the &#34;shell&#34; tool and the user&#39;s input as args, and then a corresponding &#34;tool&#34; message for executing that command.&lt;br/&gt;&lt;br/&gt;This is close to working right. After I submit, the chat goes into loading state and I see the loading skeleton.&lt;br/&gt;&lt;br/&gt;Currently you can attach a file to the AI chat by selecting a file from your computer with the paperclip icon. I would also like to be able to paste an image from my clipboard.&lt;br/&gt;&lt;br/&gt;In the code tab, please add a virtual terminal that lets me execute shell commands&lt;br/&gt;&lt;br/&gt;Whenever the user changes AI settings in the AI Settings page, we need to invalidate the `provider-models` queryKey (`useProviderModels`) so the models list gets updated immediately.&lt;br/&gt;&lt;br/&gt;Currently AI Settings and Git Settings are saved in localStorage. I want to instead save the data in the VFS under a new `/config` directory (be sure to also update the vfs tree in AGENTS.md). I&#39;m thinking we&#39;d have `/config/ai.json` and `/config/git.json`&lt;br/&gt;&lt;br/&gt;This looks great. Can we invert the names migrateGitSettingsFromLocalStorage and readGitSettings though? I want readGitSettings to be the public function called from the outside, and internally it should call migrateGitSettingsFromLocalStorage. This is because migrateGitSettingsFromLocalStorage will eventually be removed. Same thing with the AI settings, please.&lt;br/&gt;&lt;br/&gt;I want to sync `/config/ai.json` and `/config/git.json` (see src/lib/configUtils.ts) with Nostr. If the user is logged into Nostr, we should pull kind 30078 events (with d-tag &#34;shakespeare.ai&#34; and &#34;shakespeare.git&#34; respectively), and compare their created_at timestamp with the lastModified of the local files, overwriting the local files only if the event&#39;s created_at is more recent. Note that the json data will be NIP-44 encrypted in the event&#39;s &#34;content&#34; field, so it must first be decrypted with the user&#39;s signer then parsed with zod. Similarly, updating the settings should publish a Nostr event with this data, NIP-44 encrypted.&lt;br/&gt;&lt;br/&gt;When the AI runs git through the shell tool, there&#39;s a problem with the git push subcommand. When the command is `git push origin main`, it responds with an error: `fatal: &#39;main&#39; does not appear to be a git repository`&lt;br/&gt;&lt;br/&gt;When I run tests, I get this: `FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory` I have no clue where it&#39;s coming from. I don&#39;t really care about fixing the test either, I just want to identify and remove it.&lt;br/&gt;&lt;br/&gt;Please add a page at `/files` that will allow me to browse the VFS starting from the root. The URL should change to /files/:filepath` as I navigate, eg `/files/config/ai.json`. I want to display folders and files in a grid similar to an OS file browser.&lt;br/&gt;&lt;br/&gt;Can we get the sidebar added to this view as well? It looks like we&#39;re using percent-encoded paths in the URL, which is okay, but the breadcrumb links need to be updated to use that too. Let&#39;s also allow navigating directly to files, and display a text editor view for them.&lt;br/&gt;&lt;br/&gt;I want to clean up the /tmp dir of the VFS when the application starts. Can we loop through it and remove any files older than 1 hour?&lt;br/&gt;&lt;br/&gt;On the Git Settings page, for the GitHub preset, instead of an API key input please add a &#34;Connect to GitHub&#34; button. It would implement GitHub&#39;s OAuth flow &lt;a href=&#34;https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps&#34;&gt;https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps&lt;/a&gt; My client ID is: `Ov23li3eNsxKIWzbSswH`. The redirect URL should send the user back to the homepage `/` so we should handle the `?code=` URL param there.&lt;br/&gt;&lt;br/&gt;I&#39;m getting a 400 error from GitHub when I click the button. Can you curl this page and read it? &lt;a href=&#34;https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps&#34;&gt;https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Oh, do I need to enable device flow?&lt;br/&gt;&lt;br/&gt;Okay, I enabled device flow, but now I&#39;m getting a CORS error. Perhaps we should make the request through crosproxy? `&lt;a href=&#34;https://corsproxy.io/?url=https://github.com/&#34;&gt;https://corsproxy.io/?url=https://github.com/&lt;/a&gt;...`&lt;br/&gt;&lt;br/&gt;Cool, well, that seemed to work, but the UX isn&#39;t what I wanted. I think this &#34;device flow&#34; is not ideal. I want to do a 1-click and have it redirect back. Don&#39;t implement anything yet, just talk it through with me. Is what I want possible?&lt;br/&gt;&lt;br/&gt;If I hardcoded the client secret what&#39;s the worst that could happens? What&#39;s the worst damage someone could do if they obtained it?&lt;br/&gt;&lt;br/&gt;Okay well would a GitHub App work for our use case? What would we have to do? No server is required?&lt;br/&gt;&lt;br/&gt;Should I enable this checkbox when creating the app? &#34;Request user authorization (OAuth) during installation. Requests that the installing user grants access to their identity during installation of your App Read our Identifying and authorizing users for GitHub Apps documentation for more information.&#34;&lt;br/&gt;&lt;br/&gt;Okay, I set it up. Here&#39;s the information. App ID: `1964852`. Client ID: `Iv23li11jGNRRTuyxMcA`. I also generated a key and downloaded the .pem file. Let me know what you need from me.&lt;br/&gt;&lt;br/&gt;I didn&#39;t set any permissions. I only want push and pull of git repos over git&#43;https, and none of the permissions seemed to correspond to that, so I assumed it was included.&lt;br/&gt;&lt;br/&gt;Done. To answer your other question, the app is named `shakespeare.diy` and the slug in the URL is `shakespeare-diy`. And yes, you should replace the existing code entirely.&lt;br/&gt;&lt;br/&gt;I clicked the button, it took me to the GitHub authorization screen, I clicked authorize, it redirected me back to Shakespeare with the code in the URL. The code disappeared from the URL. However, I don&#39;t see any subsequent network request to github, and when I look at my Git Settings, GitHub is not added as a provider (it still has the &#34;Connect to GitHub&#34; button)&lt;br/&gt;&lt;br/&gt;&#34;Failed to exchange OAuth code for token: Error: GitHub OAuth error: The client_id and/or client_secret passed are incorrect.&#34;&lt;br/&gt;&lt;br/&gt;Alright let&#39;s hardcode it... but shouldn&#39;t we go back to the simpler OAuth implementation then rather than GitHub App?&lt;br/&gt;&lt;br/&gt;Alright here&#39;s my client secret: `a362a968e587ff17b48382e2d85b117a52dc025b`&lt;br/&gt;&lt;br/&gt;On the Git Settings page, please add special rendering for the GitHub preset. Instead of displaying the API token input, display a &#34;Connect to GitHub&#34; button that implement OAuth according to: &lt;a href=&#34;https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps&#34;&gt;https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps&lt;/a&gt; I have added `GITHUB_OAUTH_CLIENT_ID` and `GITHUB_OAUTH_CLIENT_SECRET` to my `.env`. Please access them with `import.meta.env`. I understand that the client_secret will be hardcoded in the app bundle and accept the risks and have determined that it&#39;s okay for this use-case. Please implement the complete OAuth flow including handling the `?code=` in the callback URL (which will be the homepage, `/`). When making requests to GitHub&#39;s API, use corsproxy.io, eg `&lt;a href=&#34;https://corsproxy.io/?url=https://github.com/&#34;&gt;https://corsproxy.io/?url=https://github.com/&lt;/a&gt;...`&lt;br/&gt;&lt;br/&gt;I found out I need to prefix my env names with VITE_ to make this work&lt;br/&gt;&lt;br/&gt;This is working well. Can we make the variables both optional in the vite-env.d.ts, and instead of displaying both the &#34;Connect to GitHub&#34; button and the token input, display the button only if both variables are present, otherwise fallback to displaying the input. Don&#39;t display both at once.&lt;br/&gt;&lt;br/&gt;Question, if I want to switch to use a GitHub App instead of an OAuth App, what code would need to be changed?&lt;br/&gt;&lt;br/&gt;Currently for GitHub OAuth (in the Git Settings page), we are using the homepage for the redirect URI. Let&#39;s change this to use `/oauth/github` instead. We will also need to migrate code from the Index page into this GitHub OAuth page instead (which should redirect to `/settings/git` after the exchange is complete)&lt;br/&gt;&lt;br/&gt;I tried it and it worked, but I saw an error toast flash, and the console said: `GitHub OAuth error: Error: Invalid OAuth state parameter`. Immediately after it toasted &#34;GitHub Connected&#34; and everything works. But I think there&#39;s a problem during the initial loading of the callback page that causes it to flash. &lt;br/&gt;&lt;br/&gt;GitHub now supports PKCE: &lt;a href=&#34;https://github.blog/changelog/2025-07-14-pkce-support-for-oauth-and-github-app-authentication/&#34;&gt;https://github.blog/changelog/2025-07-14-pkce-support-for-oauth-and-github-app-authentication/&lt;/a&gt; Can you please add support for it in the GitHub OAuth flow?&lt;br/&gt;&lt;br/&gt;In most pages, the button to collapse the sidebar has been taken out of the page itself and moved to the sidebar. However in the ProjectsView it still needs to be updated.&lt;br/&gt;&lt;br/&gt;I need a way to bring back the sidebar after closing it, like the Settings Layout has&lt;br/&gt;&lt;br/&gt;In the ProjectSidebar, on mobile, the button to collapse the sidebar is not shown. So instead, display an &#34;X&#34; (close) button there.&lt;br/&gt;&lt;br/&gt;I&#39;m not seeing it. It needs to show only when onToggleSidebar is not provided AND isMobile is true&lt;br/&gt;&lt;br/&gt;This close button does not actually work. Are you stupid?&lt;br/&gt;&lt;br/&gt;How is this acceptable? I don&#39;t want to navigate home. Are you considering the broader context of this app at all? I need a close button. Pass a fucking onClose prop to the component! WHY IS THIS SO HARD&lt;br/&gt;&lt;br/&gt;Okay, I don&#39;t know what I said here to make you get tunnel vision, but I need you to implement complete functionality here. That means passing the onClose from the components who render it.&lt;br/&gt;&lt;br/&gt;Great. There&#39;s another issue I want to fix too. When you click buttons in the sidebar, if they navigate to the same page, the sidebar doesn&#39;t close (on mobile). So I think we should define a custom navigate function in there that also closes the sidebar.&lt;br/&gt;&lt;br/&gt;Please add a Nostr Settings page. I should be able to set the relay URL there.&lt;br/&gt;&lt;br/&gt;On the Nostr Settings page, please add a list of the Nostr accounts I&#39;m logged into currently. Give me the ability to add a new account and to remove accounts, as well as to create a new account.&lt;br/&gt;&lt;br/&gt;Please remove the &#34;Switch&#34; button and let me click the whole element to switch accounts.&lt;br/&gt;&lt;br/&gt;Please remove the &#34;Current&#34; badge. It&#39;s already obvious which account is the current one. Remove the hex pubkey too. Instead, put a key icon beside the name (roughly where the &#34;current&#34; badge is currently), that can be hovered (or tapped on mobile) to display a tooltip of the user&#39;s npub. Remove the separator between the accounts list and the buttons.&lt;br/&gt;&lt;br/&gt;Actually, get rid of the key icon. Also remove the bio. Change the &#34;Remove&#34; button to a simple trash icon, similar to the ones on the Git Settings page.&lt;br/&gt;&lt;br/&gt;Move the Selected Relay to the top, and remove the card container it&#39;s in.&lt;br/&gt;&lt;br/&gt;On the Nostr Settings page, when there are multiple accounts listed, join them together.&lt;br/&gt;&lt;br/&gt;Reduce the spacing between the accounts list and the buttons below it&lt;br/&gt;&lt;br/&gt;Regarding the two buttons below the accounts list, let&#39;s make it one button: &#34;Add Existing Account&#34;, but give it a chevron that can be clicked to reveal &#34;Create New Account&#34;. See the ProjectSidebar for reference of a similar component (the &#34;New Project&#34; button)&lt;br/&gt;&lt;br/&gt;Actually, let&#39;s just have the &#34;Add&#34; option. I think we don&#39;t need the &#34;Create new&#34;&lt;br/&gt;&lt;br/&gt;On the Nostr Settings page, there&#39;s an &#34;Add Account&#34; button below the accounts list. Please join this to the list of accounts above.&lt;br/&gt;&lt;br/&gt;In the ProjectSidebar, I want to remove the LoginArea and put settings cog and help button there instead.&lt;br/&gt;&lt;br/&gt;For the help button, please use this link: &lt;a href=&#34;https://soapbox.pub/shakespeare-resources/&#34;&gt;https://soapbox.pub/shakespeare-resources/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Please make the tests pass. Look at the diff of the last commit to see what changed.&lt;br/&gt;&lt;br/&gt;In the ProjectSidebar, can you please add dark mode support to the &#34;Settings&#34; button and Help (info) buttons?&lt;br/&gt;&lt;br/&gt;I don&#39;t love the text color changing on hover in light mode. I think it was good keeping it black and just changing the background color. Also, make sure you update the theme picker to be consistent with the other buttons in that area.&lt;br/&gt;&lt;br/&gt;Please add a General Settings page, and include a ThemePicker dropdown in there, allowing the user to choose System, Light, and Dark&lt;br/&gt;&lt;br/&gt;Actually, change it from &#34;General&#34; to &#34;Preferences&#34;&lt;br/&gt;&lt;br/&gt;Include an icon in the title, and a back button like the other settings pages&lt;br/&gt;&lt;br/&gt;On the Nostr Settings page, please add a loading indicator for when the list of accounts is loading. Currently it says &#34;No accounts logged in&#34; for a moment until it loads, which is an upsetting UX&lt;br/&gt;&lt;br/&gt;Please add multiple language support to the UI. On the Preferences page, include a dropdown with English and Portuguese.&lt;br/&gt;&lt;br/&gt;What&#39;s the next step for enabling code splitting? Also what if translations are missing, does it fall back to English?&lt;br/&gt;&lt;br/&gt;You don&#39;t need to test this. Let&#39;s move on to code splitting.&lt;br/&gt;&lt;br/&gt;Question, is it problematic to serve these json files from a public directory without vite being aware of them or hashing their filenames? Don&#39;t change anything yet, just respond to my question please.&lt;br/&gt;&lt;br/&gt;Can we try the dynamic import approach?&lt;br/&gt;&lt;br/&gt;Is there any code that can be removed?&lt;br/&gt;&lt;br/&gt;Instead of using a dynamic non-analyzeable import `../locales/${language}.json` I want to include map of all supported languages and have the value by a function that dynamically fetches it.&lt;br/&gt;&lt;br/&gt;Add support for Spanish&lt;br/&gt;&lt;br/&gt;Look at `src/lib/i18n.ts`. Then go through all untranslated strings in the UI and ensure they are translated into both English and Portuguese.&lt;br/&gt;&lt;br/&gt;Oh, but ignore AI message specific strings, such as the one in system.ts, or the &#34;File Added:&#34; messages that get parsed in user messages. Focus only on the UI.&lt;br/&gt;&lt;br/&gt;Go ahead&lt;br/&gt;&lt;br/&gt;You could actually just delete that test&lt;br/&gt;&lt;br/&gt;Very nice. I think you missed some in src/components/SettingsLayout.tsx though, as well as the associated pages.&lt;br/&gt;&lt;br/&gt;On the settings/data page, it says `{percentage}% used` instead of showing the actual percentage. Check src/lib/i18n.ts&lt;br/&gt;&lt;br/&gt;I fixed it by changing `{percentage}` to `{{percentage}}`&lt;br/&gt;&lt;br/&gt;I notice there are some duplicated values in `src/lib/i18n.ts`. Can we eliminate those? I also think the keys in the `// Settings Items (for SettingsLayout)` section belong in their respective settings sections.&lt;br/&gt;&lt;br/&gt;The variables preferencesTitle and settingsTitle should be eliminated in favor of preferences and settings respectively&lt;br/&gt;&lt;br/&gt;Please add a short section called &#34;Translations&#34; into AGENTS.md with information about how translations work in this codebase and the relevant files.&lt;br/&gt;&lt;br/&gt;write it as though english and pt are not the only 2 supported. Also, ensure that src/components/LanguagePicker.tsx (used by the /settings/preferences page) is mentioned as something to update when adding a new language.&lt;br/&gt;&lt;br/&gt;Please add support for the Chinese language&lt;br/&gt;&lt;br/&gt;The default language is English. I&#39;d like to make it default to the user&#39;s browser language. In the language dropdown, include a &#34;System&#34; option at the top. Perhaps it clears the language config value when set.&lt;br/&gt;&lt;br/&gt;I thought the i18n library already does system detection if you don&#39;t pass &#34;lng&#34;. So if the language is system, shouldn&#39;t we just unset the language?&lt;br/&gt;&lt;br/&gt;Why do we need that package? I thought it already does it.&lt;br/&gt;&lt;br/&gt;Please add translations to the &#34;Code&#34; and &#34;Preview&#34; buttons in the PreviewPane. The bottom thumb navigation in the ProjectView also needs it.&lt;br/&gt;&lt;br/&gt;Translate the Clone page too&lt;br/&gt;&lt;br/&gt;Let&#39;s translate the name Shakespeare itself in Chinese. It&#39;s used in a couple places, and in a few Chinese translations the literal &#34;Shakespeare&#34; should be replaced.&lt;br/&gt;&lt;br/&gt;In useAIProjectId, instead of it trying multiple times, I want it to try only once to produce a title in the requested format. If the regex check fails, we should not attempt to convert the name, and instead name the project &#34;untitled&#34;, checking if `/projects/${projectId}` already exists and appending a number to it (&#34;untitled-1&#34;, &#34;untitled-2&#34;, etc) until the first available title is found.&lt;br/&gt;&lt;br/&gt;Don&#39;t convert the result into kebab case. Check if the output matches our regex, and fail otherwise.&lt;br/&gt;&lt;br/&gt;Also throw if the generated ID is too long.&lt;br/&gt;&lt;br/&gt;Also, if the user&#39;s input is fewer than a certain number of character (eg, &#34;hi&#34; or &#34;yo&#34;), go straight to the &#34;untitled&#34; loop.&lt;br/&gt;&lt;br/&gt;On the AI Settings page, for Nostr presets, if the user is not logged into Nostr, please indicate that they need to log into Nostr to use that provider, directing them to `/settings/nostr`. If they are logged in, display the &#34;Add&#34; button full-width.&lt;br/&gt;&lt;br/&gt;On the AI settings page, for providers I have already added, I would like to display a credits badge on the accordion title. It should show the number of credits I have with that provider in dollars. We should implement a useAICredits hook. To get credits, call GET `${baseURL}/credits`. The response may be in one of two variations: `{ object: &#34;credits&#34;, amount: number }` or `{ data: { total_credits: number; total_usage: number } }`. We should support both, but convert the result into the first type. Use zod. If the request fails, don&#39;t retry it, because not all providers support this endpoint. They queryKey should be keyed by the provider ID. We should use an AI client from src/lib/ai-client.ts&lt;br/&gt;&lt;br/&gt;On the AI Settings page, allow me to click a CreditsBadge to open a CreditsDialog (you would create this). It would have a form at the top to buy new credits, and a list of past transactions at the bottom. To implement the API, construct and use an AI client similar to how the useAICredits hook does it. To see which endpoints are supported, read SHAKESPEARE_AI_PROVIDER.md&lt;br/&gt;&lt;br/&gt;You did not use the AI client correctly. You must construct the AI client in the same way it&#39;s done in useAICredits or it will not work. You can call .get, .post, etc on it.&lt;br/&gt;&lt;br/&gt;I think there is a problem with the way the CreditsBadge is inside the accordion. Even though clicking the badge itself has e.stopPropagation, clicking anywhere else causes the accordion to open and close while the dialog is open.&lt;br/&gt;&lt;br/&gt;That didn&#39;t fix it&lt;br/&gt;&lt;br/&gt;Great, that worked. Now please improve the UI of the credits dialog. It&#39;s very messy and has poor mobile support.&lt;br/&gt;&lt;br/&gt;This looks way better. There&#39;s just a small issue. When inputs are selected, they show an outline, but this outline is cut off on the left side.&lt;br/&gt;&lt;br/&gt;Much better. Also, don&#39;t enforce the minimum limit on the form, since it could differ from provider to provider. The provider will return an error if the amount is too low.&lt;br/&gt;&lt;br/&gt;You still have the min as 1. But it could be valid to enter less than 1 dollar.&lt;br/&gt;&lt;br/&gt;For Lightning payments, instead of copying to the clipboard, can we display a QR code and, if available, a webln pay button?&lt;br/&gt;&lt;br/&gt;For the &#34;Copy Invoice&#34; button, instead of a toast (saying that you successfully copied), can we display a tooltip above the button?&lt;br/&gt;&lt;br/&gt;On the Recent Transactions list, add a &#34;Refresh&#34; button to each pending transaction, that fetches and updates their payment by ID&lt;br/&gt;&lt;br/&gt;I noticed that after a single one fetches, the hook for payments?limit=50 refetches.&lt;br/&gt;&lt;br/&gt;Now that&#39;s fixed. Next issue, refreshing makes all the refresh buttons of each transaction spin. But they should be separate.&lt;br/&gt;&lt;br/&gt;Excellent. Now beside &#34;Recent Transactions&#34;, can you also add a refresh button? It would refetch the payments.&lt;br/&gt;&lt;br/&gt;On the QR code view, please add a &#34;Back&#34; button (to return to the credit dialog). Remove the &#34;Lightning Invoice:&#34; below the &#34;Copy Invoice&#34; button, and remove that &#34;Close&#34; button down there too.&lt;br/&gt;&lt;br/&gt;Put &#34;&lt;- Back&#34; where the &#34;&lt;i&gt; Credits&#34; title is&lt;br/&gt;&lt;br/&gt;Very good. Next task, if the &#34;Recent Transactions&#34; list is too tall, enforce a height on that you can scroll inside of&lt;br/&gt;&lt;br/&gt;Now don&#39;t limit it to 5. Also, remove the &#34;refresh all&#34; button to the right of &#34;Recent Transactions&#34; - I decided I don&#39;t like it&lt;br/&gt;&lt;br/&gt;The bottom border of the last transaction is just ever so slightly cut off&lt;br/&gt;&lt;br/&gt;On mobile, can you have the dialog take up the entire screen?&lt;br/&gt;&lt;br/&gt;Wonderful. Can we also change the way the container works. Currently we have the &#34;Recent Transactions&#34; section enforcing a max height. But I want the entire dialog to have a max height. The top section of the dialog (the form, above the separator) should not be allowed to get any smaller (vertically). But the &#34;Recent Transactions&#34; section is allowed to get very small vertically. Then on desktop, enforcing a max-height will make it look roughly as it did before, while on mobile the recent transactions would be allowed to expand to fill the screen.&lt;br/&gt;&lt;br/&gt;This looks right, the only issue is that I cannot scroll inside of recent transactions anymore.&lt;br/&gt;&lt;br/&gt;Excellent. I would like to decrease the height of the dialog on desktop as well.&lt;br/&gt;&lt;br/&gt;Please add an &#34;About Shakespeare&#34; section to settings (`/settings/about`). It should include a link to the Shakespeare source code: &lt;a href=&#34;https://gitlab.com/soapbox-pub/act2&#34;&gt;https://gitlab.com/soapbox-pub/act2&lt;/a&gt; and display a full copy of the license, which it would fetch from: &lt;a href=&#34;https://gitlab.com/soapbox-pub/act2/-/raw/main/LICENSE&#34;&gt;https://gitlab.com/soapbox-pub/act2/-/raw/main/LICENSE&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;For the LICENSE file, instead of fetching it from GitLab, fetch it from `/LICENSE.txt` (I have copied it into the public folder&lt;br/&gt;&lt;br/&gt;In src/lib/i18n.ts, change &#39;Information about Shakespeare and its license.&#39; to &#39;Information about Shakespeare&#39; and update its translations too&lt;br/&gt;&lt;br/&gt;On the Preferences page, remove the &#34;Appearance&#34; container and put the configurations on the top-level.&lt;br/&gt;&lt;br/&gt;Remove the now-unused i18n strings&lt;br/&gt;&lt;br/&gt;In the AI chat, we currently track `delta.content` on streaming messages, but we need to also start tracking `delta.reasoning_content`. We should emit streamingUpdate events (from the SessionManager) when reasoning content is updated. In the UI, we should display reasoning similar to tools. It should say &#34;Thinking&#34; and could be expanded to see the reasoning text as it streams.&lt;br/&gt;&lt;br/&gt;Why are you underscoring that? If it&#39;s not used, why don&#39;t you remove it?&lt;br/&gt;&lt;br/&gt;I think we do need to accumulate the reasoning_content, though, and add it to the assisstant message&lt;br/&gt;&lt;br/&gt;Please use a lightbulb icon instead of a brain. While the assistant is thinking (eg there is reasoning_content but empty content), display a spinner there instead (similar to tool calls)&lt;br/&gt;&lt;br/&gt;In the CreditsDialog, it says &#34;Please log in to purchase credits&lt;br/&gt;&lt;br/&gt;In the CreditsDialog, it says &#34;Please log in to purchase credits&#34;. We can remove this conditional. If the user is interacting with this dialog they are authenticated through the API provider.&lt;br/&gt;&lt;br/&gt;Please let me configure name and email in git settings. These would be passed to our custom Git class. shakespeare.diy would still be a co-author either way. But if a name and email are available, they would be set as the main commit author.&lt;br/&gt;&lt;br/&gt;It doesn&#39;t seem like it&#39;s saving after I enter it on the settings screen? I refresh and it&#39;s gone&lt;br/&gt;&lt;br/&gt;There seems to be a problem with the &#34;diff&#34; subcommand of the &#34;git&#34; command&lt;br/&gt;&lt;br/&gt;It returns no output, even if there are changes&lt;br/&gt;&lt;br/&gt;There is a problem with the &#34;cd&#34; command in the virtual shell (ShellTool). Our security measures should prevent it from cd&#39;ing outside of the project dir, but it should be able to cd anywhere within the project dir, including to the project dir itself. Currently `cd /projects/my-project` returns `cd: absolute paths are not supported: /projects/my-project` even though `/projects/my-project` is the project dir.&lt;br/&gt;&lt;br/&gt;Let&#39;s remove @std/path and switch to using only path-browserify throughout this codebase.&lt;br/&gt;&lt;br/&gt;Let&#39;s add an OnboardingDialog. I want this to be a multi-step dialog. On the first step, it should say &#34;Welcome to Shakespeare!&#34; with the logo, short description, and &#34;Get Started&#34; button. This dialog should appear on the Index (home) page if the user clicks into the textarea while having no providers configured. To that end, we should make it so that text box is _not_ disabled in that case (and does not have special placeholder text). It should look normal, then clicking it would make the dialog appear. When the user clicks &#34;Get Started&#34;, if the user is not already logged in with Nostr, we should generate a Nostr secret key for them (`generateSecretKey()` from nostr-tools) and it (by using `const login = useLoginActions();` followed by `login.nsec(sk)`). This Nostr stuff should not be shown to the user, it should just happen behind the scenes. Then (still behind the scenes), we should add the `shakespeare` provider to their config (see the preset on the AI settings page). Finally we should transition to the next screen, allowing them to choose a model. It should use the useProviderModels hook to get the list of models. The models&#39; description and pricing information should be shown, if available. The user must choose a model to continue, which would be added to their recentlyUsedModels list. Once they click Next, the model should be added to their recentlyUsedModels. If the model they chose isn&#39;t free, they should be shown the provider&#39;s CreditsDialog. The final step would be a conclusion screen, something like &#34;Now you&#39;re ready to build&#34; and &#34;Just enter your prompt to start building&#34;&lt;br/&gt;&lt;br/&gt;Show the model pricing per 1M tokens please, and include a $ at the front&lt;br/&gt;&lt;br/&gt;In the model selector dropdown, hide the &#34;Recently Used&#34; section if there are less than 5 total provider models and all of the recently used models are contained within the available provider models.&lt;br/&gt;&lt;br/&gt;In the model selector, if all available models share the same provider (including recentlyUsedModels), don&#39;t display the provider prefix on model names. Eg &#34;openai/gpt-4o&#34; would become &#34;gpt-4o&#34; of all available and recently used models are of the &#34;openai&#34; provider.&lt;br/&gt;&lt;br/&gt;In the model selector, I want to move the &#34;Enter custom model&#34; and &#34;Manage providers&#34; options to the very bottom instead of the top&lt;br/&gt;&lt;br/&gt;When the user attaches a file to the AI chat, it is uploaded to the tmp directory. When it is, convert all its spaces to underscores in the filename.&lt;br/&gt;&lt;br/&gt;Look at the DotAI class. We are currently checking if `.ai` already exists or is in the gitignore when deciding whether or not to write a session history file. But we should instead always create the `.ai` directory and write the session history file. When we do that, we should ensure a .gitignore is in place, with a `.ai/` entry&lt;br/&gt;&lt;br/&gt;On the Clone page, if I am logged into Nostr, display a list of my NIP-34 repository announcements and provide a clone button offering me to clone them. Also include a &#34;Clone All&#34; button.&lt;br/&gt;&lt;br/&gt;Please change the AI provider settings to be an array of objects instead of a map of objects. Each object would have a unique `id` property. Then allow me to rearrange their order by dragging them in the AI Settings page.&lt;br/&gt;&lt;br/&gt;Wait, I hate that you put a &#34;connection&#34; sub-object in there. It should be flat.&lt;br/&gt;&lt;br/&gt;Let&#39;s get rid of the AIConnection type. addProvider and updateProvider should take a full AIProvider object. reorderProviders should be renamed to setProviders. Also, can we be sure that the `useProviderModels` hook is getting triggered to refetch whenever the providers change? Because I&#39;m not seeing updates to it until I refresh the page.&lt;br/&gt;&lt;br/&gt;Also, addProvider and updateProvider are the same now. So I think there should be just one setProvider&lt;br/&gt;&lt;br/&gt;Let&#39;s hide the drag handles on the AI Settings page when there&#39;s only 1 provider configured&lt;br/&gt;&lt;br/&gt;On the homepage there is logic to conditionally hide the left sidebar on desktop unless there are projects. Also make it so the sidebar would show if the user has ever clicked the menu button before or navigated to any page besides home.&lt;br/&gt;&lt;br/&gt;There is something wrong with this implementation. When I click the menu button, the tab freezes. Infinite loop?&lt;br/&gt;&lt;br/&gt;The Clone page has some logic to support cloning Nostr URIs. But let&#39;s bake this logic into `src/lib/git.ts` itself, so calling `git.clone` with a Nostr URI will &#34;just work&#34;&lt;br/&gt;&lt;br/&gt;DON&#39;T USE `any` TYPES EVER. Also use `nostr` not `nostrClient` as the variable name, and its type should be NPool from `@nostrify/nostrify`&lt;br/&gt;&lt;br/&gt;I&#39;m in the middle of refactoring the Git class to accept a nostr object. Everything seems to be working, but can you please fix the tests?&lt;br/&gt;&lt;br/&gt;Also look at git diff HEAD~ to see my changes&lt;br/&gt;&lt;br/&gt;On `src/pages/Clone.tsx` there is some logic for cloning a git repo from a Nostr URI. It calls `projectsManager.cloneProject` (`src/lib/ProjectsManager.ts`) which internally calls `git.clone` (`src/lib/git.ts`, our custom Git class that wraps isomorphic-git). I want to transfer that logic into the Git class, so that it would be possible to call `git.clone` with a Nostr URL directly. Then the logic on the Clone page can be greatly simplified (it can just pass the URL straight through the ProjectsManager through to the Git class).&lt;br/&gt;&lt;br/&gt;Let&#39;s work on our Git client (`src/lib/git.ts`), specifically the Nostr integration. When it finishes cloning from a Nostr URI, the `origin` remote will currently be set to whatever repo it managed to successfully clone from, but I want it to actually set the origin to the Nostr URI itself. This will pave the way for pulling from git with Nostr.&lt;br/&gt;&lt;br/&gt;How about instead of `updateOriginToNostrURI` we create a `setRemoteURL` method?&lt;br/&gt;&lt;br/&gt;Look at `src/lib/git.ts`. In the `nostrClone` method, we need to use the repository state event (according to NIP-34), if it exists, to find the commit across the network.&lt;br/&gt;&lt;br/&gt;Let&#39;s continue implementing NIP-34 functionality in `src/lib/git.ts`. Cloning a Nostr URI currently works. Now let&#39;s make `fetch` and `pull` work.&lt;br/&gt;&lt;br/&gt;Let&#39;s finish up the NIP-34 Nostr git integration in `src/lib/git.ts`. You can currently clone, fetch, and pull with Nostr URIs. Now we need to support push. Push should accept an optional `signer?: NostrSigner` object (`import { NostrSigner } from &#34;@nostrify/nostrify&#34;`). If `signer` is not available but a Nostr URI is passed, it should throw. Otherwise it should use the signer (`await signer.signEvent({ ... })`) to create a repo state event that it would publish to Nostr (`await this.nostr.group(relayUrls).event(event)`). It should fetch the current Nostr repo announcement to know which relays to publish the state event to, and it should push to each clone URL. I already started coding it, please finish the implementation.&lt;br/&gt;&lt;br/&gt;What is the puspose of `getCurrentRepositoryState`? Isn&#39;t it almost the same as `fetchNostrRepo`?&lt;br/&gt;&lt;br/&gt;We should also have a private `getNostrRemoteInfo` shouldn&#39;t we? It would return data from the Nostr state event when given a Nostr URI&lt;br/&gt;&lt;br/&gt;What I mean is, getRemoteInfo should support Nostr URIs (by internally using a getNostrRemoteInfo method)&lt;br/&gt;&lt;br/&gt;In the GitDialog, if no remote is configured and I am logged into Nostr, put a &#34;Push to Nostr&#34; button there. Clicking this will create and publish a NIP-34 repo announcement event and repo state event. The repo&#39;s identifier (d tag) will be the projectId. First check if I already have a NIP-34 repo announcement event with this d tag published to Nostr (`{ kinds: [30617], authors: [user.pubkey], &#34;#d&#34;: [projectId] }`), and if I do, throw an error. Otherwise, go head with creating the repo announcement event. When creating the repo announcement event, for the clone URLs and relays, use this GRASP_SERVERS list: `[&#34;git.shakespeare.diy&#34;, &#34;relay.ngit.div&#34;, &#34;gitnostr.com&#34;]`. For relay URLs, map them to `wss://${server}/` and for clone URLs map them to `&lt;a href=&#34;https://${server}/$&#34;&gt;https://${server}/$&lt;/a&gt;{nip19.npubEncode(user.pubkey)}/${projectId}.git`. Once these events are published, add `origin` remote and set its URL to `nostr://${nip19.npubEncode(user.pubkey)}/git.shakespeare.diy/${projectId}`. Also call `await git.setConfig({ dir, path: &#39;nostr.repo&#39;, value: nip19.naddrEncode({ kind: 30617, pubkey: user.pubkey, identifier: projectId }) })` to set the &#34;nostr.repo&#34; value in the git config. Then wait for 5 seconds (for grasp servers to update) and finally invoke the regular &#34;push&#34; action (as if the user had clicked the &#34;push&#34; button). Setting the origin URL to a Nostr URL should be enough to make this work.&lt;br/&gt;&lt;br/&gt;It looks like the kind 30618 event is missing the actual commit, eg `[&#34;refs/heads/main&#34;, &#34;&lt;commit&gt;&#34;]`&lt;br/&gt;&lt;br/&gt;The call to `git.listRefs` is returning an empty array in the repo I&#39;m testing it in. I do have a few commits, on the &#34;main&#34; branch though...&lt;br/&gt;&lt;br/&gt;In the GitDialog, remove the &#34;Repository Information&#34; section&lt;br/&gt;&lt;br/&gt;Please make GitDialog into a tabular interface. The first tab is &#34;Status&#34;. The second tab is &#34;Remotes&#34;. In the Remotes tab, allow me to add or change my remotes.&lt;br/&gt;&lt;br/&gt;Check git diff and see if you can see anything causing infinite renders. The test you added makes my laptop go to 100% CPU and then freeze when I run it.&lt;br/&gt;&lt;br/&gt;Great, now let&#39;s work on the design. I don&#39;t like that you have to click an &#34;Add Remote&#34; button before you can see the fields. I want Name and URL side-by-side, with Name being much smaller proportionally. Then there is an &#34;Add&#34; button below that. We don&#39;t need Cancel either.&lt;br/&gt;&lt;br/&gt;If there are no configured origins, pre-fill the Name in the &#34;Add Remote&#34; with &#34;origin&#34;. Remove all the titles and subtitles of sections in the Remotes tab, including &#34;Configured Remotes&#34; (and its subtitle), and &#34;Add Remotes&#34; (and its subtitle). Remove the container around the list of remotes. When I click the edit button on a remote, make the edit screen look almost exactly the same as the rendered view, with just the URL being editable (the Name is not, it must be deleted and re-added to change the name).&lt;br/&gt;&lt;br/&gt;In the Status tab, ensure the &#34;No credentials configured&#34; warning has dark mode support&lt;br/&gt;&lt;br/&gt;In the GitDialog, please remove the &#34;Authentication&#34; section, but do leave the warning at the top &#34;No credentials configured...&#34; when applicable. Ensure the warning has dark mode styles.&lt;br/&gt;&lt;br/&gt;You&#39;re spending too much time on tests. I can see that it works.&lt;br/&gt;&lt;br/&gt;Please add an editable &#34;Origin&#34; input at the top of the GitDialog. It should configure the &#34;origin&#34; remote.&lt;br/&gt;&lt;br/&gt;Rename &#34;Origin Remote&#34; to &#34;Git URL&#34; and remove the text &#34;Configure the origin remote repository URL&#34;. Display the credentials warning inside the &#34;Git URL&#34; box, below the input and button, when it&#39;s applicable, and change &#34;for some repositories&#34; back to the host of the origin. Also, don&#39;t write any new tests from now on until I say so, but tests should pass.&lt;br/&gt;&lt;br/&gt;Rather than &#34;Git URL&#34; let&#39;s go with just &#34;URL&#34;&lt;br/&gt;&lt;br/&gt;Let&#39;s work on the &#34;No credentials configured for this repository...&#34; message. Let&#39;s make it say &#34;You are not logged into ${hostname}. Push &amp; pull might not work unless you &lt;Link&gt;log in&lt;/Link&gt;.&#34;&lt;br/&gt;&lt;br/&gt;Why do you still have it saying &#34;this repository&#34;? What the hell is that regex? Use the `new URL` contructor, wtf&lt;br/&gt;&lt;br/&gt;Much better. Now also check the URL protocol. If it&#39;s not &#34;https:&#34; or &#34;nostr:&#34;, it should say &#34;The ${protocol} URL type is not supported. Enter an https URL.&#34; If it&#39;s &#34;nostr:&#34;, it should display the &#34;You are not logged in&#34; message only if the user is not logged in with a Nostr account, and if so it should say &#34;Nostr&#34; instead of the URL hostname.&lt;br/&gt;&lt;br/&gt;Oh right, when it&#39;s Nostr, the &#34;log in&#34; also needs to change to `/settings/nostr` instead of `/settings/git`&lt;br/&gt;&lt;br/&gt;Please remove the little messages under the push and pull buttons. We are already displaying a toast.&lt;br/&gt;&lt;br/&gt;Please run `npx vitest run src/components/GitDialog.test.tsx` until the tests pass. The code is right, the tests are wrong.&lt;br/&gt;&lt;br/&gt;Change the title of the &#34;Git History&#34; dialog to &#34;Rollback&#34; and use the &#34;History&#34; icon from lucide instead of the Commit icon. Remove the commit hashes from next to the Rollback buttons.&lt;br/&gt;&lt;br/&gt;Change &#34;View the commit history for this project&#34; to &#34;Revert to an older commit&#34;&lt;br/&gt;&lt;br/&gt;On the current commit, where the Rollback button would normally be, display something that that says &#34;Current&#34;&lt;br/&gt;&lt;br/&gt;In the 3-dots menu of the Project View, change &#34;Git History&#34; to &#34;Rollback&#34;&lt;br/&gt;&lt;br/&gt;And the icon too. From now on don&#39;t run tests until I say so.&lt;br/&gt;&lt;br/&gt;In the GitDialog, the URL Input starts out autofocused and all the text is highlighted... why?&lt;br/&gt;&lt;br/&gt;4&lt;br/&gt;&lt;br/&gt;Let&#39;s work on the ProjectInfoDialog. I want to strip it down to almost nothing. I like the folder icon and the projectId. I like the &#34;created&#34; and &#34;last modified&#34; times. That&#39;s about it. Get rid of everything else. Add an &#34;Export Project&#34; button to it as well (look at ActionsMenu for the code to do it)&lt;br/&gt;&lt;br/&gt;In the PreviewPane, if there is no build, add a play button that uses useBuildProject&lt;br/&gt;&lt;br/&gt;In the PreviewPane, when a build is pending, please display a small loading indicator floating on top of the preview.&lt;br/&gt;&lt;br/&gt;Please go ahead and fix the typescript errors&lt;br/&gt;&lt;br/&gt;In the ProjectView, let&#39;s move the &#34;Delete Project&#34; action out of the 3-dots menu and into the ProjectInfoDialog&lt;br/&gt;&lt;br/&gt;Now please make it so when you click &#34;Deploy&#34; in the 3-dots menu it displays a DeployDialog. It would have a Deploy URL input which would be prefilled with the value it currently is (`${projectId}.${config.deployDomain}`) but with the opportunity to change it before clicking a &#34;Deploy&#34; button within the dialog.&lt;br/&gt;&lt;br/&gt;After I click deploy, it redirects me to `&lt;a href=&#34;https://webvoice.shakespeare.wtf.shakespeare.wtf/&#34;&gt;https://webvoice.shakespeare.wtf.shakespeare.wtf/&lt;/a&gt;`&lt;br/&gt;&lt;br/&gt;In the PreviewPane on desktop, the &#34;Preview&#34; and &#34;Code&#34; tabs are very ugly. Can you fix that?&lt;br/&gt;&lt;br/&gt;I actually want to try removing that entire element on desktop (the container of &#34;Preview&#34; and &#34;Code&#34; tabs). Then I&#39;d like to add a Folder icon to the left of the Bug in the address bar, that clicking takes you to the code view. Then within the code view, I want to add a back button that takes you to the preview.&lt;br/&gt;&lt;br/&gt;This is looking pretty good, but for some reason I can&#39;t scroll inside of the File Explorer anymore. The element seems to just extend beyond the bottom of the screen.&lt;br/&gt;&lt;br/&gt;In src/lib/i18n.ts, please add a translation in Hausa&lt;br/&gt;&lt;br/&gt;Also add translations for Yoruba and Igbo&lt;br/&gt;&lt;br/&gt;When cloning a repository on the Clone page, I want to simplify the loading indicator. Let&#39;s get rid of the Server Messages section, as well as most of the text aside from the title.&lt;br/&gt;&lt;br/&gt;Bring back the phase description&lt;br/&gt;&lt;br/&gt;Can you fix the tests? The code is correct, tests are broken. See `git diff HEAD~` for context.&lt;br/&gt;&lt;br/&gt;In the CORS Proxy field in the Git Settings page, I would also like the user to be given some options when they click into the input. It should include `&lt;a href=&#34;https://proxy.shakespeare.diy/?url={href}&#34;&gt;https://proxy.shakespeare.diy/?url={href}&lt;/a&gt;` and `&lt;a href=&#34;https://cors.isomorphic-git.org/{host}{pathname}{search}&#34;&gt;https://cors.isomorphic-git.org/{host}{pathname}{search}&lt;/a&gt;` as options. I should be able to easily click an option to fill it into the input, while still having total freeform control over the input text.&lt;br/&gt;&lt;br/&gt;Please fix the tests. The code is right, tests are wrong. See `git diff HEAD~` for context.&lt;br/&gt;&lt;br/&gt;On the AI Settings page, when editing a provider, every keystroke causes the useProviderModels hook to refetch.&lt;br/&gt;&lt;br/&gt;I think you missed the point. I&#39;m looking for a debounce solution while I&#39;m typing.&lt;br/&gt;&lt;br/&gt;In the onboarding dialog, on the screen where you choose a model, if the model has a description, use the description as the title and the name as the description. Basically I want the description to be the larger text at the top and the name to be the tagline.&lt;br/&gt;&lt;br/&gt;Good. Can we also try making it a tiled grid of 2x per row?&lt;br/&gt;&lt;br/&gt;In the ProjectView, in the preview on desktop, if there isn&#39;t a build yet it displays a placeholder section without the browser address bar. Please make it so the browser address bar is always shown, and it just has its navigation (back, forward, refresh, and address input) disabled. It&#39;s important that I can still access the menu on desktop so I can get into the Code view.&lt;br/&gt;&lt;br/&gt;I noticed there&#39;s a bug in the SessionManager. If the assistant has reasoning_content but the &#34;content&#34; field is empty, it doesn&#39;t seem like the reasoning_content gets saved in the message history. Don&#39;t edit any code yet, just see if you can figure out why?&lt;br/&gt;&lt;br/&gt;That&#39;s not the issue I&#39;m facing though. I&#39;m seeing in the UI, a UI element that says &#34;Thinking&#34; with a loading indicator. I can click into it and see the text generating. But then the whole element disappears. &lt;/blockquote&gt;
    </content>
    <updated>2025-09-22T23:18:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqnp07ta95dmhjcgk0v9ur6ckw48jp45jkc6fl9we70clzkhxvpggzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcml440w</id>
    
      <title type="html">Agreed, but I mean like grill brands/models</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqnp07ta95dmhjcgk0v9ur6ckw48jp45jkc6fl9we70clzkhxvpggzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcml440w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxfm3rys0u4jz9vvj49njea3w53vqyswrpeg73uxxkg5wc5g0yhlsp94mhxue69uhkcmnyd9ekxuewv36kx6mydeejummjvuhkummnw3e8yetvv9uj76jkv4n9z7r0tgkv5e62&#39;&gt;nevent1q…5e62&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Agreed, but I mean like grill brands/models &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-21T23:40:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstyjcjvxgas72dzeyac3ym4cz5vcptj5d9lt0ym78ad375z0657uczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc3t4lfd</id>
    
      <title type="html">It&amp;#39;s not the size of your screen, it&amp;#39;s how you use it. ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstyjcjvxgas72dzeyac3ym4cz5vcptj5d9lt0ym78ad375z0657uczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc3t4lfd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsprdl83khg62x59v4zada4pydc6s7xpd0wnpm4nae08prruknph5spz3mhxue69uhhyetvv9ujuerpd46hxtnfdu5ne02e&#39;&gt;nevent1q…e02e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It&amp;#39;s not the size of your screen, it&amp;#39;s how you use it. 32:9 ftw though &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-21T22:35:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs20spxucvvk8vmpzs4n27kgmgsyrht8a3zwzqxcf3u43tgfyalawgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcunaj4s</id>
    
      <title type="html">Upon reflection, I believe I&amp;#39;ve misunderstood the assignment</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs20spxucvvk8vmpzs4n27kgmgsyrht8a3zwzqxcf3u43tgfyalawgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcunaj4s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyftweut0pz7dts68l3xxxqxql5grd7zyxqgxednskt7k2z0eylvcpz3mhxue69uhhyetvv9ujuerpd46hxtnfdu6q8dpr&#39;&gt;nevent1q…8dpr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Upon reflection, I believe I&amp;#39;ve misunderstood the assignment  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-21T22:32:00&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgdt3xnm533r7eryt5fgduzpw32xvugp0uufth3s0hehdhzm3zs5gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7l8v5n</id>
    
      <title type="html">Shill me your best grill recommendations</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgdt3xnm533r7eryt5fgduzpw32xvugp0uufth3s0hehdhzm3zs5gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7l8v5n" />
    <content type="html">
      Shill me your best grill recommendations  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-21T22:22:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs02cy0cwugrsskazg979wshq0uwqk2k4gazj8w5x620hrelrnvjuqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcldrqrt</id>
    
      <title type="html">Grayjay (available in ZapStore) is a *fantastic* alternative ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs02cy0cwugrsskazg979wshq0uwqk2k4gazj8w5x620hrelrnvjuqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcldrqrt" />
    <content type="html">
      Grayjay (available in ZapStore) is a *fantastic* alternative YouTube/Rumble client  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-19T23:26:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0atv0dvnjkvmklw89sjn79ua6d5gqc0v83ls2dfhlm7rwuuylwuczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcfnvekg</id>
    
      <title type="html">Sorry about that, mid move and my node is offline. Just switched ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0atv0dvnjkvmklw89sjn79ua6d5gqc0v83ls2dfhlm7rwuuylwuczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcfnvekg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsydsy3v9xpa3e4ahmrjpvajqk0q3kz5u99cujvqatqe082vzf9x8gppemhxue69uh5qmn0wvhxcmmvdktf9k&#39;&gt;nevent1q…tf9k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Sorry about that, mid move and my node is offline. Just switched to primal wallet for now &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-14T06:55:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxpn65sq7jshafyx8dsdz0ld43x72kz2sgewtuhcmzpu3agjr7wpczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcu24dwq</id>
    
      <title type="html">I used to believe this with my whole heart.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxpn65sq7jshafyx8dsdz0ld43x72kz2sgewtuhcmzpu3agjr7wpczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcu24dwq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9dw4f26782c3dd99cjwpcaruypce6vymvevms4vp0rmql7wq2kyspzfmhxue69uhk7enxvd5xz6tw9ec82csu3upww&#39;&gt;nevent1q…upww&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I used to believe this with my whole heart.  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-14T06:49:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsft6s53jcs4kp94mvd5a8d9g8nlj4pct6957t0tn3yagy24jxv68gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jchm8zp3</id>
    
      <title type="html">(Warning: long rant) My liberal friends are completely oblivious ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsft6s53jcs4kp94mvd5a8d9g8nlj4pct6957t0tn3yagy24jxv68gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jchm8zp3" />
    <content type="html">
      (Warning: long rant)&lt;br/&gt;&lt;br/&gt;My liberal friends are completely oblivious about how radicalizing the last week has been for tens of millions of normal Americans. Zero clue.&lt;br/&gt;&lt;br/&gt;I’m not talking about people who are “online”; I mean regular, everyday Americans. “Normies.” People who scroll through Facebook posts and Instagram reels from the Dutch Bros drive thru line. Political moderates who have water cooler chats about Mahomes touchdowns and Bon Jovi concerts, not Twitter threads or Rachel Maddow monologues.&lt;br/&gt;&lt;br/&gt;Millions of them. Tens of millions. They’re logging on, they’re engaging, and they’re furious.&lt;br/&gt;&lt;br/&gt;And I’ll be candid: They blame you guys. They blame the left.&lt;br/&gt;&lt;br/&gt;Regardless of whether you believe it to be justified, they think you’re the bad guys here. And they are reacting accordingly.&lt;br/&gt;&lt;br/&gt;I can already hear some of you racing toward the comments to start screeching in moral indignation, so I’m going to be blunt: Shut up and listen to what I’m telling you. Your movement will lose any semblance of relevance if you don’t develop some small measure of self-awareness, and—absent someone force-feeding you bitter medicine—you guys collectively lack the humility to do this on your own.&lt;br/&gt;&lt;br/&gt;Here are the facts:&lt;br/&gt;&lt;br/&gt;Fact 1. Tens of millions of Americans started the week seeing a 23-year-old blonde woman—a young woman in whom virtually every parent watching pictured their own daughter—stabbed in the neck by a career criminal. These people then found out the murderer had been released from jail 14 times over.&lt;br/&gt;&lt;br/&gt;Fact 2. Two days later, tens of millions of Americans watched a video of Charlie Kirk get murdered speaking to college students. Millions of these people knew who Charlie was; millions of them didn’t. Upon seeing the video, however, these normal Americans from across the land and across the political spectrum agreed that he was the victim of a terrible, fundamentally unjustifiable crime, and their hearts broke in sympathy for his family. Good people who had never even heard the name Charlie Kirk before wept.&lt;br/&gt;&lt;br/&gt;Fact 3. Immediately after seeing the footage of a peaceful young man get shot in the neck, these same people logged onto Facebook and Instagram (remember, we are talking about regular Americans, not perpetually online Twitter or Bluesky users) and saw some of their local nurses, school teachers, college administrators, and retail workers celebrating this horrific crime. Not just defending it, but cheering it.&lt;br/&gt;&lt;br/&gt;These are all facts. You may not like the implications of these facts, and we can certainly debate the underlying causes thereof, but, indisputably, they are nevertheless factual statements.&lt;br/&gt;&lt;br/&gt;Here’s what it means for you, the Democrats reading this:&lt;br/&gt;&lt;br/&gt;These normal, middle-of-the-road, non-political citizens just become politically active. They realized that politics cares about them, even if they don’t particularly care about politics. After watching Iryna Zarutska and Charlie Kirk both bleed out from the neck, they think their lives and the physical safety of their families—the bedrock of human society, the foundation of Maslow’s hierarchy of needs—depend on political activation, whether they desire it or not.&lt;br/&gt;&lt;br/&gt;These people are now sprinting—not jogging, not walking, but racing—to the right. Because they blame you guys for everything that just happened.&lt;br/&gt;&lt;br/&gt;When they see footage of Decarlos Brown stabbing a Ukrainian refugee to death, they don’t see just one demon-possessed man. They picture every university administrator, HR bureaucrat, and DEI apparatchik that ever lectured them about systemic racism, the “carceral state,” or the need to release violent crime suspects without bail in the name of social justice.&lt;br/&gt;&lt;br/&gt;They then think back to conversations they’ve had with their cop friends—their buddy from high school who quit the force after getting tired of being called a racist, their friend at the local YMCA who vents about having to release career criminals because Soros-funded prosecutors aren’t willing to file charges—and they realize everything the left has told them over the last five years has been utter bullshit.&lt;br/&gt;&lt;br/&gt;And they blame you. Because, even if you count yourself as a moderate Democrat, your party supported the district attorneys, city council members, and mayors that let fictitious concerns about mental health and racial justice supersede very real concerns for their family’s safety.&lt;br/&gt;&lt;br/&gt;When these Americans see blood erupt from the side of Charlie Kirk’s neck, they don’t see just a martyred political activist. They think of every extreme leftist they’ve ever met who (1) calls anyone to the right of Hillary Clinton a fascist and (2) constantly jokes—“jokes”—about punching Nazis and “bashing the fash.”&lt;br/&gt;&lt;br/&gt;They realize that there really do exist people who wish to see them dead for their moderately conservative political beliefs, their Christian faith, and even the color of their skin. They ask themselves if the violence visited upon Charlie might one day show up on their own doorstep.&lt;br/&gt;&lt;br/&gt;And they blame you. Because, even if you’re just a center-of-the-road liberal, you lacked the courage to police your own ranks. You let modern-day Maoist red guards run loose across every facet of society, and what started with social-media struggle sessions has now turned to 30-06 bullet holes.&lt;br/&gt;&lt;br/&gt;When these Americans log onto social media and see their neighbors justifying, celebrating, glorifying murder, they realize that some who walk among them are soulless ghouls at best, literally demon-possessed at worst. These people—whether they faithfully attend church every Sunday or only attend with relatives once a year, on Christmas Eve—start talking about things like spiritual warfare. They implicitly understand that no normal human casually celebrates the mortal demise of a peaceful person.&lt;br/&gt;&lt;br/&gt;And they blame you. Because, even if you condemned Charlie Kirk’s murder, they probably haven’t seen you condemn those in your own movement who cheered it on. They view you as complicit in allowing heartless fellow travelers to celebrate death, and it repulses them.&lt;br/&gt;&lt;br/&gt;For all of these situations, what has your response been? Nothing but bullshit.&lt;br/&gt;&lt;br/&gt;In response to Iryna Zarutska bleeding out on the floor of a train, you post bullshit statistics about reductions in reported crime, when everyone who’s ever been to a major urban center in the last decade knows that actual crime has skyrocketed, only for victims not to waste their time reporting it to cops that don’t have the manpower to respond and prosecutors that seek to downgrade as many felonies as possible to misdemeanor citations.&lt;br/&gt;&lt;br/&gt;In response to a 31-year-old man taking a bullet to the neck in front of his family, you post nothing but bullshit whataboutism.&lt;br/&gt;&lt;br/&gt;&amp;gt; “What about January 6th?” (Honest answer: After you let Liz Cheney spend two years operating a star chamber in the House, combined with countless other failed attempts at “lawfare” against Trump, no one cares anymore.)&lt;br/&gt;&lt;br/&gt;&amp;gt; “What about Mike Lee making a dumb joke on Twitter about some guy in a mask in Minnesota?” (No one outside of Utah, DC, or Twitter knows who Mike Lee even is.)&lt;br/&gt;&lt;br/&gt;&amp;gt; “What about Paul Pelosi?” (That’s not comparable to Charlie Kirk getting shot, and we all know it. And, again, Paul who?)&lt;br/&gt;&lt;br/&gt;&amp;gt; “What about regulations on assault rifles?” (That’s not going to get you very far when one of these killers used a knife and the other one used a common hunting rifle.)&lt;br/&gt;&lt;br/&gt;In response to teachers, healthcare workers, and thousands of other liberals cheering on Charlie’s murder, it’s nothing but more bullshit and misdirection.&lt;br/&gt;&lt;br/&gt;&amp;gt; “It’s not THAT many people celebrating!” (Yes, it is. Everyone has seen it on their Facebook and Instagram feeds.)&lt;br/&gt;&lt;br/&gt;&amp;gt; “I thought you guys didn’t support cancel culture.” (We don’t cancel people over their opinions; we’re more than happy to see people lose their jobs—especially their taxpayer-funded jobs—for actively cheering on murder, though. If you can’t see the difference, that’s your own shortcoming.)&lt;br/&gt;&lt;br/&gt;All bullshit. Not even smart bullshit, but stale, mid-grade, low-IQ bullshit. Ordinary Americans see right through it, and they don’t like how it smells.&lt;br/&gt;&lt;br/&gt;You probably don’t like hearing this. But you need to hear it.&lt;br/&gt;&lt;br/&gt;Because I’m right, and, as you reflect on this, you know I’m right. The ranks of my political movement gained millions of righteously angry new members this week. We have a mandate to ensure these crimes never happen again, and that’s exactly what we are now going to do.&lt;br/&gt;&lt;br/&gt;If you want to keep a seat at the table as we do so, you’d better clean house and start policing your own.&lt;br/&gt;&lt;br/&gt;CREDIT: @RobertMSterling on X &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-14T06:22:47&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfk76f4l0wcjs2pa6tv5g76n0vg79e5t4yw5m70hszg8dfy5q5k9szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcmgdfjj</id>
    
      <title type="html">That was the most powerful and moving thing I&amp;#39;ve personally ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfk76f4l0wcjs2pa6tv5g76n0vg79e5t4yw5m70hszg8dfy5q5k9szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcmgdfjj" />
    <content type="html">
      That was the most powerful and moving thing I&amp;#39;ve personally ever seen.   &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-13T02:51:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs02etreyq4s5jtec3vcn7w0e3vjzx5296n38pvymt3x0nw7t527nszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcuceg23</id>
    
      <title type="html">Why does ZapStore constantly hide updates from me until I clear ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs02etreyq4s5jtec3vcn7w0e3vjzx5296n38pvymt3x0nw7t527nszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcuceg23" />
    <content type="html">
      Why does ZapStore constantly hide updates from me until I clear its cache?  Known issue? &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-11T15:41:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8zdsz98k80vwjt2su9qfdeyvpcje329lr7zuhaxr5dn57tct2fdczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcg7aced</id>
    
      <title type="html">Gm Maria, very well said.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8zdsz98k80vwjt2su9qfdeyvpcje329lr7zuhaxr5dn57tct2fdczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcg7aced" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy4l9u0mynelczle9mcaphesjay8hec5fs5s84x3pvatkv6lf242qpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhg9c4t6q&#39;&gt;nevent1q…4t6q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Gm Maria, very well said.  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-11T14:12:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfss08nr8dq233qwh7dew93zua3eycjfpj5q54rmlcnglspyeartqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jczjxy35</id>
    
      <title type="html">Eye opening in the absolute worst way...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfss08nr8dq233qwh7dew93zua3eycjfpj5q54rmlcnglspyeartqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jczjxy35" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstf4z83h2hnuwaj4rpj24w20vm85lpfr0m3sae3lara7h94la09kc0eup25&#39;&gt;nevent1q…up25&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Eye opening in the absolute worst way... &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-11T14:02:23&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgjcjk73n9acm66u6706tffff6vlve5cafjkskn8k0dke93uh9xvgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcw0q2c0</id>
    
      <title type="html">Bluesky&amp;#39;s moral rot... This is what extremism, fascism, and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgjcjk73n9acm66u6706tffff6vlve5cafjkskn8k0dke93uh9xvgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcw0q2c0" />
    <content type="html">
      Bluesky&amp;#39;s moral rot...&lt;br/&gt;&lt;br/&gt;This is what extremism, fascism, and the death of democracy looks like.   It&amp;#39;s the modern left. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/3609859ed69284e55156e3a060e40c8d4d3c1f5497a558b630bb652b01d1d0c9.jpg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/353637cf9e1bcf505ce233d9a45be5721823f4947167d6539ae80e6f0132993a.jpg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/0fdf4daef1b29744b91abeedb2cceb125f92904748ca608f9a423a77c1195daa.jpg&#34;&gt; 
    </content>
    <updated>2025-09-11T13:36:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf0vlw08gh6l0tcx64unksk9s74tngxss6c92xmpu98rfmm2zq0lszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqf92dt</id>
    
      <title type="html">Far-left violence* Ftfy</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf0vlw08gh6l0tcx64unksk9s74tngxss6c92xmpu98rfmm2zq0lszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcqf92dt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspfxasftt6zcdx3fw8n8wytjn7rmhvtmkp3gg6lt82t79fgskdm0spremhxue69uhhyetvv9uhxtnvv9hxgtmnwpshg6tpdehhxarjvyxkxxwr&#39;&gt;nevent1q…xxwr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Far-left violence*&lt;br/&gt;&lt;br/&gt;Ftfy &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-11T03:48:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswfae9xx2dpy3r97p8guha6klt2q3qgywyc3wqs9c9sqcrp3j9vxszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc80k3dk</id>
    
      <title type="html">I&amp;#39;m sad and I&amp;#39;m furious... Oh and bluesky is a ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswfae9xx2dpy3r97p8guha6klt2q3qgywyc3wqs9c9sqcrp3j9vxszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc80k3dk" />
    <content type="html">
      I&amp;#39;m sad and I&amp;#39;m furious... &lt;br/&gt;&lt;br/&gt;Oh and bluesky is a disgraceful cesspool  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-11T02:59:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrnkvtqe23ysq97mmcjy8qr77l0sxkrw3jgugj4yexwml365wlj2czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jclj8uyv</id>
    
      <title type="html">Primal streams on Android don&amp;#39;t keep the screen awake... Just ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrnkvtqe23ysq97mmcjy8qr77l0sxkrw3jgugj4yexwml365wlj2czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jclj8uyv" />
    <content type="html">
      Primal streams on Android don&amp;#39;t keep the screen awake... Just me? &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-08T21:14:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst43a6prurs0snm2t0cfjqf39kxa9npws80evhznjzat3tt0ealhgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jchry7v8</id>
    
      <title type="html">Just found this buried deep in my phone&amp;#39;s settings. ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst43a6prurs0snm2t0cfjqf39kxa9npws80evhznjzat3tt0ealhgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jchry7v8" />
    <content type="html">
      Just found this buried deep in my phone&amp;#39;s settings. Apparently OnePlus/Oppo has a #bitchat like feature built in, I&amp;#39;m sure way worse in just about every way though. Interesting nonetheless!  Supports calls &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/a105be1d22ff08ab22d9a068130e892925a67153019582c534cfd2f5366604cf.jpg&#34;&gt; 
    </content>
    <updated>2025-09-06T01:51:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp4683388vagcel50gnna04m8xef6xzxtkkrx9k8keyzt33cl4yqczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jck24agh</id>
    
      <title type="html">Definitely does legally. Believe me I totally understand the ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp4683388vagcel50gnna04m8xef6xzxtkkrx9k8keyzt33cl4yqczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jck24agh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw2qfeyxv3ua6d03ham7396jgm3f54yccfukv02l9nwu9x8hnk09cpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgp2ps32&#39;&gt;nevent1q…ps32&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Definitely does legally. Believe me I totally understand the disgust at potentially having to store something you don not want if you run a full archiving node. There are options though, like a prunable full node if you only care about the UTXO set (financial transactions).  I just have a hard time finding an edge to that argument. Like what if someone pays for a nuke and kills millions of innocent people with it. May seem like a crazy scenario but if Bitcoin becomes the world&amp;#39;s money, it&amp;#39;s a non zero chance. Do you want to be part of that purely financial data propagation?  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T15:29:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs885f6dpjygm7c9pjmmjcf89u04f8ahsm6pey7cyzh4gxl5eg9l0gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jctndlzy</id>
    
      <title type="html">https://twitter-thread.com/t/1963830548012372324 Fantastic thread ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs885f6dpjygm7c9pjmmjcf89u04f8ahsm6pey7cyzh4gxl5eg9l0gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jctndlzy" />
    <content type="html">
      &lt;a href=&#34;https://twitter-thread.com/t/1963830548012372324&#34;&gt;https://twitter-thread.com/t/1963830548012372324&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Fantastic thread by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsqyredyxhqn0e4ln0mvh0v79rchpr0taeg4vcvt64te4kssx5pc0spr3mhxue69uhkummnw3ez6un9d3shjtnhd3m8xtnnwpskxegpzamhxue69uhkummnw3ezuendwsh8w6t69e3xj7s3l2qlf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;adam3us&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…2qlf&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T15:17:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvznpaddqylsv4vzucv0qjrhk99s907sazxk5r86g33c2jde4d4uczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcl07tzy</id>
    
      <title type="html">I suppose I started the sarcasm 😜 I think it&amp;#39;s pretty ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvznpaddqylsv4vzucv0qjrhk99s907sazxk5r86g33c2jde4d4uczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcl07tzy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfymkq7hhyrjjx8a993uwswd0dpv4vvjehhdht995l05ve5mpspfcpzemhxue69uhkvet9v3ejumn0wd68ytnzv9hxga8u3mp&#39;&gt;nevent1q…u3mp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I suppose I started the sarcasm 😜 &lt;br/&gt;&lt;br/&gt;I think it&amp;#39;s pretty arguable DHT is similar to a node having to validate prunable data? &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T14:58:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfzeekf8m6kday6nlxu66698h5v9fc4p408qsut8pgnd9hw2f292qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcehardl</id>
    
      <title type="html">They&amp;#39;re so thoughtful</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfzeekf8m6kday6nlxu66698h5v9fc4p408qsut8pgnd9hw2f292qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcehardl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxe43yddextmwa8rsw4uppcpllw476tk3ze46evzgwgr8cusvdtqgppamhxue69uhkummnw3ezumt0d5lapl7v&#39;&gt;nevent1q…pl7v&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;They&amp;#39;re so thoughtful  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T14:52:27&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp2s3zmsvks0zjvhvpe92qdtktwfpep5nkk7tnqdqgq36kggdcehszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc4pmgq6</id>
    
      <title type="html">Good thing people haven&amp;#39;t started using torrents for CSAM, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp2s3zmsvks0zjvhvpe92qdtktwfpep5nkk7tnqdqgq36kggdcehszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc4pmgq6" />
    <content type="html">
      Good thing people haven&amp;#39;t started using torrents for CSAM, they&amp;#39;d probably try to shut down the protocol! &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T14:49:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdq4ujhens5u0g7z5ju5mvff0zhtkf7tqfznc8v4ffq3z4r2avrfszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcsphv7h</id>
    
      <title type="html">I&amp;#39;ve been incredibly delinquent about spreading GMs. Forgive ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdq4ujhens5u0g7z5ju5mvff0zhtkf7tqfznc8v4ffq3z4r2avrfszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcsphv7h" />
    <content type="html">
      I&amp;#39;ve been incredibly delinquent about spreading GMs. Forgive me, nostr.&lt;br/&gt;&lt;br/&gt;GM! &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T13:15:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd3758dyg5qkj0u288xxuwd2jxxmzn04c8tlcydztkd66j8pfscvqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9lw6v8</id>
    
      <title type="html">Eh pruned nodes have identical security and validation guarantees ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd3758dyg5qkj0u288xxuwd2jxxmzn04c8tlcydztkd66j8pfscvqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9lw6v8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf7yvq8jpw2yslekl6xphtp6un6qyzk5368lf7rjl7lwywm5sw2pcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgctvyt4&#39;&gt;nevent1q…vyt4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Eh pruned nodes have identical security and validation guarantees as archival nodes. They&amp;#39;re an incredible gift for decentralization. Very different from an SPV node. &lt;br/&gt;&lt;br/&gt;But in any case, I understand yours as well. And I truly believe it&amp;#39;s a position held in good faith.  &lt;br/&gt;&lt;br/&gt;I honestly do not know the best way to deal with spam. I don&amp;#39;t think anyone does. Just hope cooler heads prevail...&lt;br/&gt;&lt;br/&gt;Tick tock &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T13:12:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs848sms32hxcnnjuan9230vfx3uz2nfhdmwzedvrlwwcsammczp0czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcefhmxu</id>
    
      <title type="html">Phew 😅 I got nervous for a minute. Glad you found it useful</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs848sms32hxcnnjuan9230vfx3uz2nfhdmwzedvrlwwcsammczp0czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcefhmxu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx90u8lm5jg604vfrtld4tzyp4at2wh57d99x9a0aqys7j5ekrtqspzemhxue69uhhxetpwf3kstnwdaejuar0v3shjygu7c8&#39;&gt;nevent1q…u7c8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Phew 😅 I got nervous for a minute. Glad you found it useful &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T06:25:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2lgruef4qm9476y26nx8z984n3rsmsjrf2vscpwc96yun8prdp6qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jck883j5</id>
    
      <title type="html">The crucial distinction is the type of technical cost imposed on ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2lgruef4qm9476y26nx8z984n3rsmsjrf2vscpwc96yun8prdp6qzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jck883j5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0qljd8vvtx730svms0a0ayqd0jy4j69ncr4cvp2us8d62nx8ek8cpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgyyq43h&#39;&gt;nevent1q…q43h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The crucial distinction is the type of technical cost imposed on nodes, not the philosophical definition of &amp;#34;spam&amp;#34; or &amp;#34;bloat&amp;#34;&lt;br/&gt;&lt;br/&gt; * OP_RETURN / Witness Data: This is a temporary tax on cheap resources. It consumes bandwidth and CPU for validation. A pruned node then discards the data. The cost is paid once, and it&amp;#39;s over.&lt;br/&gt; * Fake P2PKH Addresses: This is a permanent tax on expensive resources. It consumes the same temporary bandwidth and CPU, but also adds a permanent entry to the UTXO set. This consumes RAM on every full node, forever.&lt;br/&gt;&lt;br/&gt;The fact that each P2PKH entry is only 20 bytes is irrelevant. A permanent, compounding tax on RAM is fundamentally more harmful to the network than a one-time tax on bandwidth. &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T06:23:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx70saqgkqfk66uyf6cdw8tg44nlk93cm2mdx3c8azd0muaem50jqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcgfd464</id>
    
      <title type="html">I think the vast majority of folks agree with that. Spam not ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx70saqgkqfk66uyf6cdw8tg44nlk93cm2mdx3c8azd0muaem50jqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcgfd464" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfmry994z6lc6dhgs0a883x90w94qfgzp7n2usu8ak4ylu9a4f5agpz3mhxue69uhhyetvv9ujuerpd46hxtnfduph9272&#39;&gt;nevent1q…9272&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I think the vast majority of folks agree with that. Spam not existing would be *great*.  But, since spammers do exist, I think most people are genuinely interested in finding the best way to reduce the harm the cause. &lt;br/&gt;&lt;br/&gt;When comparing P2FKH spam and OP_RETURN spam, I&amp;#39;m not sure I understand how P2FKH is less harmful. Both spams cost the spammer sats. They are both paying for their transaction weight. The obvious upside to everyone else if the spam is within OP_RETURN is that we don&amp;#39;t have to store it. P2FKH spam my node has to keep forever.  &lt;br/&gt;&lt;br/&gt;What is the perceived positive tradeoff in your mind? &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T05:13:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf0mmffxj6m7wgnw5pr0x0t4f7zhv5dxk4f3fctnnqyh4cycukfhszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8x2df3</id>
    
      <title type="html">Removing OP_RETURN entirely would require a softfork though?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf0mmffxj6m7wgnw5pr0x0t4f7zhv5dxk4f3fctnnqyh4cycukfhszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8x2df3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdujhk59km4uy0k9tgkmpt8g7hm94jfsznnjdjtk9y4ty5xhpcreqap0yrj&#39;&gt;nevent1q…0yrj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Removing OP_RETURN entirely would require a softfork though? &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T05:02:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp5w0fnyydc4aacqk060p5cl6f6w57t3cf3ww3pn57d4n06kmzuagzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcj49jfu</id>
    
      <title type="html">The hysteria is shocking...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp5w0fnyydc4aacqk060p5cl6f6w57t3cf3ww3pn57d4n06kmzuagzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcj49jfu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyggm9kk43dsa0m5tt4wevrvl7gphz9cxs6eh4gzeynylcexewjgqprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsy4gvzm&#39;&gt;nevent1q…gvzm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The hysteria is shocking... &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-05T04:42:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsq9j0pwpfgdg7st3hg7rmvtnp58p2zzl32s8rmtlpg5skumc0x95szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcyfjyvg</id>
    
      <title type="html">lmao well aware of P2FKH... Grammatical semantics aside, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsq9j0pwpfgdg7st3hg7rmvtnp58p2zzl32s8rmtlpg5skumc0x95szypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcyfjyvg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrumvtv3xcj95v9r3ks8cy5fnyvly6xraacnn7ntsutp2vx2cjhkqpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgccjnxa&#39;&gt;nevent1q…jnxa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;lmao well aware of P2FKH...  Grammatical semantics aside, you&amp;#39;re ok with the UTXO set bloat such spam creates?
    </content>
    <updated>2025-09-05T04:31:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd2qwu4s332ggrjfy9uhymjfrfp0mw750u6w9chpmk58q70dy25lszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7qalrp</id>
    
      <title type="html">Are you saying that&amp;#39;s the message you received from my ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd2qwu4s332ggrjfy9uhymjfrfp0mw750u6w9chpmk58q70dy25lszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7qalrp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0wwefdaxyzlxjsersdec4v4pwc43kd7yncn4knwnhv8p4enw6mwqv5tfyx&#39;&gt;nevent1q…tfyx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Are you saying that&amp;#39;s the message you received from my article?  or the debate more broadly?  
    </content>
    <updated>2025-09-05T04:09:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxm4dnfv8lpzta7jxs0jm24mncevafey6nf5f2d59gurlhwpxsnhgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcdnwhtf</id>
    
      <title type="html">pay TO pubkey, not pay FOR pubkey</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxm4dnfv8lpzta7jxs0jm24mncevafey6nf5f2d59gurlhwpxsnhgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcdnwhtf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs979s43tepukgl7cnnh3xw9n50ethagesw6j33g9sd493srf27w4qpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhghs39zq&#39;&gt;nevent1q…39zq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;pay TO pubkey, not pay FOR pubkey
    </content>
    <updated>2025-09-05T04:08:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsql6uavz3kgmtymjc6qde5pwpd9qup9pug48ktuh8qzkvslah27dczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcn47rar</id>
    
      <title type="html">&amp;#34;pay for pubkeys&amp;#34;... Uh what?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsql6uavz3kgmtymjc6qde5pwpd9qup9pug48ktuh8qzkvslah27dczypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcn47rar" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf08v6ja5q3jfcmr9drnjjpkpgmlftg3457e63dk5sj6cwssqh5xgpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcsrs4pk&#39;&gt;nevent1q…s4pk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;pay for pubkeys&amp;#34;... Uh what?
    </content>
    <updated>2025-09-05T00:18:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz4tlyzv2clm43wnzlr4aga2fj7sdwsyk4mmuqd7pkrw9evzxzmhqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9tmqxp</id>
    
      <title type="html">I&amp;#39;ll give it a read, I have not seen it yet.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz4tlyzv2clm43wnzlr4aga2fj7sdwsyk4mmuqd7pkrw9evzxzmhqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9tmqxp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr7k7ty0gpedm56yxwdrd8sn0d7r68as0xze67w5jr5ahu8j9wj8sppemhxue69uhkummn9ekx7mp0g83p93&#39;&gt;nevent1q…3p93&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll give it a read, I have not seen it yet. 
    </content>
    <updated>2025-09-04T18:47:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd5klf0gjmpu2gmlnwcm4mynx0jxq6a3yz2phf00ndyl9fnryh0aqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7lkmg2</id>
    
      <title type="html">Not sure it&amp;#39;s retarted, but likely imprecise. Removed this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd5klf0gjmpu2gmlnwcm4mynx0jxq6a3yz2phf00ndyl9fnryh0aqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc7lkmg2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs82slwlfw7k75yqu6fc0t2k60fnvnun7x3xmsxpt04sllhtyp8sjgpp4mhxue69uhkummn9ekx7mqfhncyf&#39;&gt;nevent1q…ncyf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Not sure it&amp;#39;s retarted, but likely imprecise. Removed this post and replaced it with a more nuanced article.   &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-04T18:05:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvfaaexf5gwx89edmx6f4jpmh58436a663qtxd20ev9smpmwx4whqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcwzjmy8</id>
    
      <title type="html">&amp;#34;The Bitcoin protocol ecosystem is currently engaged in a ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvfaaexf5gwx89edmx6f4jpmh58436a663qtxd20ev9smpmwx4whqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcwzjmy8" />
    <content type="html">
      &amp;#34;The Bitcoin protocol ecosystem is currently engaged in a nuanced and technically complex debate surrounding the OP_RETURN opcode and its associated relay policies. This discussion, while echoing the philosophical undertones of past conflicts, represents a fundamentally different class of challenge than the 2015-2017 blocksize wars.&amp;#34;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzqs9aesyg3rvc6jws87unhl73e3rdnw83slgge87grd9d7zksplfvqqxnzde4xcunjwpnxccrvd3hxv22wk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…22wk&lt;/a&gt;&lt;/span&gt;  &lt;/div&gt; 
&lt;h2 id=&#34;section-1-introduction-beyond-the-blocksize-wars-2&#34;&gt;&lt;strong&gt;Section 1: Introduction - Beyond the Blocksize Wars&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The Bitcoin protocol ecosystem is currently engaged in a nuanced and technically complex debate surrounding the &lt;code&gt;OP_RETURN&lt;/code&gt; opcode and its associated relay policies. This discussion, while echoing the philosophical undertones of past conflicts, represents a fundamentally different class of challenge than the 2015-2017 blocksize wars. The earlier conflict centered on a proposed change to Bitcoin&amp;#39;s consensus rules—the immutable laws governing block validity—which carried the existential risk of a permanent network split, or hard fork. In contrast, the current debate revolves around a default setting within the most popular client software, Bitcoin Core; a setting that governs relay policy, not consensus. It is a question of what unconfirmed transactions a default-configured node is willing to propagate, not what constitutes a valid transaction for the network as a whole.&lt;/p&gt;

&lt;p&gt;This distinction is paramount. The current discourse is not about changing the fundamental laws of Bitcoin, but about calibrating the social and technical conventions that promote network health. At its core, the &lt;code&gt;OP_RETURN&lt;/code&gt; debate exposes a sophisticated engineering trade-off between cherished principles: the sovereignty of individual node operators to set their own rules, the collective efficiency of the network&amp;#39;s data propagation mechanisms, and the emergent economic pressures that can subtly centralize the critical function of mining. To mistake this for a simple ideological battle is to miss the crucial technical and economic dynamics at play.&lt;/p&gt;

&lt;p&gt;This report seeks to move beyond the hyperbole and provide a first-principles analysis of the &lt;code&gt;OP_RETURN&lt;/code&gt; issue, grounded in protocol mechanics and empirical network data. The primary objective is to dissect the technical arguments with engineering rigor, offering a clear and logical framework for understanding the situation. The methodology will strictly adhere to the foundational distinction between consensus and policy, analyze the concrete technical problem of mempool divergence and its second-order effects on block propagation, and use on-chain data to quantitatively evaluate the claims made by both proponents and opponents of the proposed policy change. By doing so, this analysis aims to illuminate the complex interplay of technology, economics, and philosophy that defines this pivotal moment in Bitcoin&amp;#39;s evolution.&lt;/p&gt;

&lt;h3 id=&#34;1-1-the-illusion-of-a-simple-debate-2&#34;&gt;&lt;strong&gt;1.1. The Illusion of a Simple Debate&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The comparison of the &lt;code&gt;OP_RETURN&lt;/code&gt; debate to the blocksize wars is a tempting but ultimately misleading analogy. The blocksize wars were a constitutional crisis for Bitcoin; they posed a direct question about changing the protocol&amp;#39;s most fundamental parameters, a move that would have rendered old software incompatible and forced a network-wide schism if consensus was not achieved. Changing a consensus rule like the block size limit requires a hard fork, a contentious process where the network must universally adopt the new rule set to avoid splitting into two separate, incompatible blockchains.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;OP_RETURN&lt;/code&gt; issue operates on an entirely different layer of the protocol stack. It concerns &amp;#34;standardness&amp;#34; rules, which are default filters in client software that can be modified by the user or bypassed by miners without violating the core protocol. A miner can include a transaction with a large &lt;code&gt;OP_RETURN&lt;/code&gt; in a block, and as long as that block adheres to all consensus rules (such as the overall block weight limit), it is a valid block that all nodes must accept. The stakes, therefore, are not about the immediate fragmentation of the chain, but about the long-term health, efficiency, and decentralization of the network. The debate touches upon familiar tensions regarding Bitcoin&amp;#39;s ultimate purpose—is it purely a monetary network or a platform for broader applications?—and the governance processes that guide its technical evolution. However, the mechanism of the proposed change and its direct consequences are rooted in network performance optimization and mining economics, not in a fundamental redefinition of Bitcoin&amp;#39;s validity rules.&lt;/p&gt;

&lt;h3 id=&#34;1-2-report-objectives-and-methodology-2&#34;&gt;&lt;strong&gt;1.2. Report Objectives and Methodology&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The central objective of this report is to provide a definitive, logic-based reference document that clarifies the technical realities of the &lt;code&gt;OP_RETURN&lt;/code&gt; policy change. It will systematically deconstruct the issue by adhering to three core methodological principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Strict Separation of Consensus and Policy:&lt;/strong&gt; The analysis will begin by establishing an unambiguous distinction between the immutable laws of the Bitcoin consensus protocol and the configurable, optional nature of node relay policies. This foundational separation is essential for any logical discussion of the topic.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analysis of Mempool Divergence:&lt;/strong&gt; The report will identify and analyze the core technical problem driving the debate: mempool mismatch. It will explain how divergent relay policies between nodes lead to inconsistent mempools, which in turn degrades the performance of critical network optimizations like compact block relay.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Empirical Evaluation of Claims:&lt;/strong&gt; The arguments for and against the policy change will be evaluated not on philosophical merit alone, but against the evidence of on-chain data. This includes analyzing the growth of the Unspent Transaction Output (UTXO) set, the dynamics of the transaction fee market during periods of high data-usage (such as the &amp;#34;inscriptions boom&amp;#34;), and the distribution of node software clients as a proxy for community sentiment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By adhering to this methodology, this report aims to replace heated rhetoric with a cool-headed engineering assessment, providing stakeholders with the necessary tools to understand the trade-offs involved and to assess the future impact of this important policy evolution.&lt;/p&gt;

&lt;h2 id=&#34;section-2-the-foundational-layers-of-bitcoin-s-rule-set-2&#34;&gt;&lt;strong&gt;Section 2: The Foundational Layers of Bitcoin&amp;#39;s Rule Set&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;To comprehend the &lt;code&gt;OP_RETURN&lt;/code&gt; debate, one must first master the distinction between the two primary systems of rules that govern the Bitcoin network: consensus rules and relay policy. These two layers serve different purposes, operate at different scopes, and have vastly different consequences for the network when they are altered or violated. The widespread confusion between these two concepts is the single greatest source of misinformation and unproductive discourse surrounding the issue. This section provides a meticulous delineation of each rule set, establishing the bedrock of understanding necessary for the analysis that follows.&lt;/p&gt;

&lt;h3 id=&#34;2-1-consensus-rules-the-immutable-protocol-2&#34;&gt;&lt;strong&gt;2.1. Consensus Rules: The Immutable Protocol&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Consensus rules are the absolute, universal, and mandatory laws of the Bitcoin network. They are the bedrock of the protocol, defining what constitutes a valid transaction and a valid block. Every full node on the network, regardless of its software implementation or configuration, must enforce the exact same set of consensus rules to remain part of the same network.&lt;/p&gt;

&lt;p&gt;The enforcement of these rules is the primary function of a full node. When a node receives a new block, it meticulously validates that the block and every single transaction within it adhere to every consensus rule. If even the slightest violation is detected—a single satoshi created out of thin air, an invalid signature, or a block exceeding the maximum weight limit—the node will immediately reject the block as invalid and will not propagate it to its peers. This validation is performed independently by tens of thousands of nodes across the globe, creating a massively redundant and robust security model.&lt;/p&gt;

&lt;p&gt;For miners, adherence to consensus rules is an economic imperative. If a miner expends vast amounts of energy to produce a block that violates a consensus rule, that block will be rejected by the network. As a result, the miner forfeits the substantial block reward (composed of the block subsidy and transaction fees), rendering their work and capital expenditure worthless.&lt;/p&gt;

&lt;p&gt;The critical nature of these rules means they are designed to be exceptionally stable. Changing a consensus rule is the most difficult and consequential action that can be taken in the Bitcoin ecosystem. A change that tightens the rules (making previously valid blocks invalid) is known as a soft fork, while a change that loosens the rules (making previously invalid blocks valid) is a hard fork. Both require overwhelming coordination and agreement across the entire ecosystem—developers, miners, and users—to avoid a permanent and damaging split of the network into two incompatible chains.&lt;/p&gt;

&lt;p&gt;Examples of fundamental consensus rules include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The 21 Million Coin Supply:&lt;/strong&gt; The protocol dictates that no more than 21 million bitcoin can ever be created.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Block Subsidy Halving Schedule:&lt;/strong&gt; The rate of new coin issuance is halved approximately every four years (210,000 blocks).&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proof-of-Work Algorithm:&lt;/strong&gt; Blocks must be secured by a valid SHA-256 proof-of-work hash that meets the network&amp;#39;s current difficulty target.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maximum Block Weight:&lt;/strong&gt; Since the SegWit upgrade, blocks are limited to a maximum of 4 million weight units (conceptually similar to a 4 MB size limit).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;2-2-relay-policy-the-node-s-sovereign-mempool-filter-2&#34;&gt;&lt;strong&gt;2.2. Relay Policy: The Node&amp;#39;s Sovereign Mempool Filter&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;In stark contrast to the rigid universality of consensus rules, relay policy—also known as &amp;#34;standardness&amp;#34;—is a set of local, optional, and user-configurable rules. These policies function as a node&amp;#39;s individual &amp;#34;spam filter&amp;#34; for its memory pool (mempool), which is the holding area for valid but unconfirmed transactions waiting to be included in a block. A node uses its relay policy to decide which transactions it is willing to accept into its own mempool and &amp;#34;repeat&amp;#34; or relay to its peers on the network.&lt;/p&gt;

&lt;p&gt;The enforcement of relay policy is strictly local. A transaction that violates Node A&amp;#39;s policy will be rejected by Node A, but it may be perfectly acceptable to Node B, which might be running a different software client or have a custom configuration. This is a core design feature of Bitcoin&amp;#39;s peer-to-peer network: it grants each node operator sovereignty over their own resources and the information they choose to propagate.&lt;/p&gt;

&lt;p&gt;The primary purpose of relay policies is not to define validity, but to protect the network and its individual nodes from various forms of resource exhaustion and Denial-of-Service (DoS) attacks. For example, policies may reject transactions that are unusually large, computationally expensive to validate, or that create economically insignificant &amp;#34;dust&amp;#34; outputs, which could otherwise be used to clog the network or bloat node databases. Policies also serve to gently &amp;#34;nudge&amp;#34; wallet developers and users toward best practices that benefit the entire ecosystem, such as using transaction formats that are more efficient or less prone to causing UTXO bloat.&lt;/p&gt;

&lt;p&gt;The most crucial distinction is what happens when a &amp;#34;non-standard&amp;#34; transaction is included in a block. A miner is not bound by any node&amp;#39;s relay policy, only by the consensus rules. If a miner, driven by the fee attached to a non-standard transaction, chooses to include it in a block, that block is perfectly valid as long as it meets all consensus criteria. When other nodes receive this valid block, they are &lt;em&gt;compelled&lt;/em&gt; by the consensus rules to accept it, even if it contains transactions they would have personally rejected from their mempools. A node&amp;#39;s refusal to accept such a block would be a violation of consensus, causing that node to fork itself off from the main network.&lt;/p&gt;

&lt;p&gt;This intended heterogeneity of relay policies is the very source of the technical problem at the heart of the &lt;code&gt;OP_RETURN&lt;/code&gt; debate. While node sovereignty is a powerful feature for decentralization, the resulting divergence in mempool contents across the network can introduce significant performance inefficiencies.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&#34;left&#34;&gt;Feature&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Consensus Rules&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Relay Policy (Standardness)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Universal &amp;amp; Network-Wide&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Local &amp;amp; Individual Node&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Enforcement&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Mandatory for all nodes and miners&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Optional; configurable by each node operator&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Consequence of Violation&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Block/Transaction is invalid for the entire network; potential network fork&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Transaction is rejected from the individual node&amp;#39;s mempool and not relayed by it&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Configurability&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Extremely difficult to change; requires network-wide upgrade (soft/hard fork)&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Easily configurable by the node operator; different clients have different defaults&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Defines the fundamental validity and shared state of the Bitcoin ledger&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Protects node resources (DoS prevention) and encourages network best practices&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;21M coin limit, Proof-of-Work, Max Block Weight&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;code&gt;OP_RETURN&lt;/code&gt; size limit, dust limit, &amp;#34;first-seen&amp;#34; vs. RBF, free relay prevention&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The relationship between these two rule sets reveals a sophisticated governance model. Consensus rules represent the &amp;#34;hard power&amp;#34; of the protocol—absolute, non-negotiable laws. Relay policy, on the other hand, functions as a form of &amp;#34;soft power.&amp;#34; It cannot forbid any behavior that is consensus-valid, but by establishing a widely adopted default, it can make non-standard behavior more difficult and costly. If the vast majority of nodes and miners adhere to a specific policy, such as the historic 80-byte &lt;code&gt;OP_RETURN&lt;/code&gt; limit, it creates significant friction for transactions that violate it. Users wishing to broadcast such transactions must find alternative, often less efficient or more centralized, pathways to a miner willing to include them, for instance, by submitting them directly via a private API. This effectively raises the economic and logistical cost of the non-standard behavior. The collective—but entirely voluntary—alignment of relay policies thus creates a powerful incentive structure that shapes network usage patterns without altering the core protocol. The &lt;code&gt;OP_RETURN&lt;/code&gt; debate is, at its heart, a negotiation over the calibration of this soft power in light of new technological and economic realities.&lt;/p&gt;

&lt;h2 id=&#34;section-3-the-op-return-opcode-a-feature-of-harm-reduction-2&#34;&gt;&lt;strong&gt;Section 3: The &lt;code&gt;OP_RETURN&lt;/code&gt; Opcode: A Feature of Harm Reduction&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;OP_RETURN&lt;/code&gt; opcode is one of the most misunderstood features in Bitcoin. It is often mischaracterized as a function designed to &lt;em&gt;enable&lt;/em&gt; arbitrary data storage on the blockchain. A more accurate, historically grounded understanding is that &lt;code&gt;OP_RETURN&lt;/code&gt; was introduced as a pragmatic engineering solution to &lt;em&gt;mitigate the harm&lt;/em&gt; of data-storage techniques that were already being used and were actively damaging a critical network resource: the UTXO set.&lt;/p&gt;

&lt;h3 id=&#34;3-1-technical-mechanics-provably-unspendable-and-prunable-outputs-2&#34;&gt;&lt;strong&gt;3.1. Technical Mechanics: Provably Unspendable and Prunable Outputs&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;From a technical standpoint, &lt;code&gt;OP_RETURN&lt;/code&gt; is a simple yet powerful opcode in Bitcoin&amp;#39;s scripting language. When a script interpreter encounters &lt;code&gt;OP_RETURN&lt;/code&gt;, it immediately halts execution and marks the transaction output as invalid. This has a crucial consequence: the output is rendered &lt;strong&gt;provably unspendable&lt;/strong&gt;. There is no possible unlocking script (scriptSig) that can satisfy the locking conditions, meaning any bitcoin sent to such an output is effectively burned and removed from the circulating supply.&lt;/p&gt;

&lt;p&gt;This &amp;#34;provably unspendable&amp;#34; characteristic is the key to its utility. It serves as an explicit signal to all full nodes on the network that this specific transaction output does not need to be tracked in the Unspent Transaction Output (UTXO) set. The UTXO set is a high-performance database, typically held in a node&amp;#39;s RAM, that contains every single piece of spendable bitcoin in existence. When a node validates a new transaction, it checks the UTXO set to ensure the inputs being spent actually exist and are unspent. The efficiency of this lookup process is paramount for the network&amp;#39;s ability to process transactions quickly. Therefore, preventing the UTXO set from becoming bloated with unspendable &amp;#34;junk&amp;#34; is a primary goal for maintaining low hardware requirements for running a full node, which in turn is essential for network decentralization.&lt;/p&gt;

&lt;p&gt;Because &lt;code&gt;OP_RETURN&lt;/code&gt; outputs are provably unspendable, they are considered &lt;strong&gt;prunable&lt;/strong&gt;. This means that once a node has validated a transaction containing an &lt;code&gt;OP_RETURN&lt;/code&gt; output, it can safely discard that output data from its active memory (the UTXO set) without compromising its ability to validate any future transactions. The data remains permanently on the blockchain record, but it does not impose a lasting burden on the most critical, high-performance component of a node&amp;#39;s database.&lt;/p&gt;

&lt;h3 id=&#34;3-2-historical-context-a-pragmatic-solution-to-utxo-set-bloat-2&#34;&gt;&lt;strong&gt;3.2. Historical Context: A Pragmatic Solution to UTXO Set Bloat&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The introduction of &lt;code&gt;OP_RETURN&lt;/code&gt; in Bitcoin Core version 0.9.0 in March 2014 was not a theoretical exercise; it was a direct response to a growing problem. Before its standardization, users who wished to embed arbitrary data on the blockchain were already doing so, but they were using methods that were detrimental to the network&amp;#39;s long-term health.&lt;/p&gt;

&lt;p&gt;A popular technique involved encoding data into what appeared to be a standard Pay-to-Public-Key-Hash (P2PKH) address. These &amp;#34;fake addresses&amp;#34; were constructed in such a way that no corresponding private key existed, making the outputs sent to them impossible to spend. The problem was that to a Bitcoin node, these outputs were indistinguishable from legitimate, spendable UTXOs. As a result, nodes were forced to store these unspendable outputs in the UTXO set forever, leading to permanent and irreversible bloat of this critical in-memory database.&lt;/p&gt;

&lt;p&gt;The developers of Bitcoin Core recognized that simply wishing users would not store data on-chain was an ineffective strategy in a permissionless system. The release notes for version 0.9.0 are explicit about the motivation behind &lt;code&gt;OP_RETURN&lt;/code&gt;: &amp;#34;This change is not an endorsement of storing data in the blockchain. The &lt;code&gt;OP_RETURN&lt;/code&gt; change creates a provably-prunable output, to avoid data storage schemes – some of which were already deployed – that were storing arbitrary data such as images as forever-unspendable TX outputs, bloating bitcoin&amp;#39;s UTXO database&amp;#34;.&lt;/p&gt;

&lt;p&gt;This context is essential. &lt;code&gt;OP_RETURN&lt;/code&gt; was conceived and implemented as a &lt;strong&gt;harm-reduction feature&lt;/strong&gt;. It acknowledged the reality of user behavior and provided an engineered pathway that channeled this behavior into the least harmful technical implementation possible. It allowed for data to be stored immutably on the blockchain while protecting the most precious and performance-critical resource—the UTXO set.&lt;/p&gt;

&lt;h3 id=&#34;3-3-the-80-byte-limit-a-policy-deterrent-not-a-consensus-mandate-2&#34;&gt;&lt;strong&gt;3.3. The 80-Byte Limit: A Policy Deterrent, Not a Consensus Mandate&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Alongside the &lt;code&gt;OP_RETURN&lt;/code&gt; opcode, Bitcoin Core developers introduced a default limit on the amount of data that could be included. This limit was initially set at 40 bytes and was later increased to 80 bytes of data (within a total script size of 83 bytes). It is imperative to reiterate that this limit was, and always has been, a &lt;strong&gt;default relay policy&lt;/strong&gt;, not a consensus rule. It governed what the Bitcoin Core software would relay by default, not what the network considered valid in a block.&lt;/p&gt;

&lt;p&gt;The choice of 80 bytes was a deliberate compromise, intended to act as a &amp;#34;soft deterrent&amp;#34;. The size was large enough to accommodate common use cases like embedding a cryptographic hash (e.g., a SHA-256 hash is 32 bytes) or a short commitment string, which allows for anchoring external data to the immutable timestamp of the Bitcoin blockchain. However, it was intentionally too small to be practical for storing large files like images or documents directly on-chain. This policy was designed to nudge users toward more efficient practices—using Bitcoin as a proof-of-existence or timestamping service rather than as a bulk data storage platform.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&#34;left&#34;&gt;Bitcoin Core Version&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Release Date&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Key Policy Change&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Rationale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Pre-0.9.0&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Before Mar 2014&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No standard for data storage.&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Users were embedding data in &amp;#34;fake&amp;#34; spendable outputs, causing permanent UTXO set bloat.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;v0.9.0&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Mar 2014&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;code&gt;OP_RETURN&lt;/code&gt; introduced with a 40-byte data relay limit.&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Harm reduction: provide a provably prunable output to prevent UTXO bloat, while discouraging large data storage.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;v0.11.0&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Feb 2015&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;code&gt;OP_RETURN&lt;/code&gt; relay limit increased from 40 to 80 bytes.&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Community discussion and better understanding of balancing utility and efficiency; 80 bytes was seen as a more flexible limit for hashes and metadata.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;v30.0 (scheduled)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Oct 2025&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Default 80-byte relay limit and single &lt;code&gt;OP_RETURN&lt;/code&gt; output limit removed.&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;The policy is now seen as ineffective (bypassed by users) and counter-productive (incentivizing harmful UTXO-bloating alternatives).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The history of &lt;code&gt;OP_RETURN&lt;/code&gt; reveals a consistent design philosophy within Bitcoin Core development: a pragmatic acceptance of undesirable but unstoppable user behavior, coupled with an engineering-led effort to channel that behavior into the least harmful technical implementation. The initial problem was that users wanted to store data on-chain. A purely ideological response would have been to attempt to forbid this behavior. However, in a permissionless system, such prohibitions are futile; users will invariably find workarounds. The workarounds being used prior to 2014 were actively damaging the UTXO set, a critical and finite network resource. Instead of fighting a battle they could not win, developers created &lt;code&gt;OP_RETURN&lt;/code&gt; as a &amp;#34;release valve.&amp;#34; It acknowledged the user demand but provided a specific, engineered pathway that contained the damage by ensuring the data was prunable and kept out of the UTXO set. This very same philosophical approach—prioritizing pragmatic harm reduction over ideological purity—is precisely the argument now being made by proponents of the v30.0 change in response to a new generation of policy bypasses.&lt;/p&gt;

&lt;h2 id=&#34;section-4-the-core-technical-conflict-mempool-divergence-and-network-latency-2&#34;&gt;&lt;strong&gt;Section 4: The Core Technical Conflict: Mempool Divergence and Network Latency&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The central technical impetus for removing the default &lt;code&gt;OP_RETURN&lt;/code&gt; limit is the negative impact that inconsistent network policies have on block propagation efficiency. This is not an abstract or theoretical concern; it is a tangible engineering problem with direct consequences for the decentralization of Bitcoin mining. The conflict arises from the interaction between individual node policies, the mempools they create, and the highly optimized protocol used to relay new blocks across the globe: Compact Block Relay.&lt;/p&gt;

&lt;h3 id=&#34;4-1-compact-block-relay-bip152-the-engine-of-efficient-propagation-2&#34;&gt;&lt;strong&gt;4.1. Compact Block Relay (BIP152): The Engine of Efficient Propagation&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;In the early years of Bitcoin, when a new block was mined, the entire block—header and all transactions—was transmitted from node to node. As blocks grew in size, this method became increasingly inefficient, consuming significant bandwidth and introducing delays (latency) in the time it took for a new block to reach all participants in the network.&lt;/p&gt;

&lt;p&gt;Compact Block Relay, specified in BIP152, was introduced as a critical optimization to solve this problem. The protocol operates on a simple and powerful premise: since most nodes already have most of the transactions for a new block in their mempools (having received and relayed them prior to their confirmation), it is redundant and wasteful to send them all again. Instead of transmitting a full multi-megabyte block, a node using compact block relay sends a much smaller &amp;#34;sketch&amp;#34; of the block to its peer. This sketch contains the 80-byte block header and a list of shortened, non-cryptographic transaction identifiers (short-txids) for each transaction in the block.&lt;/p&gt;

&lt;p&gt;The receiving node then attempts to reconstruct the full block locally. It uses the short-txids from the sketch to find the corresponding full transactions in its own mempool. In the ideal case, where the receiving node&amp;#39;s mempool contains every transaction in the new block, reconstruction is nearly instantaneous and requires only the transfer of the tiny sketch, reducing bandwidth usage by over 99%. If the node is missing some transactions, it sends a single, targeted request back to its peer for only those specific missing transactions, which are then sent in a blocktxn message.&lt;/p&gt;

&lt;p&gt;The efficiency of this entire protocol hinges on one critical prerequisite: a high degree of similarity between the mempools of the sending and receiving nodes. The more their mempools match, the faster and more efficient the relay. The more they differ, the less effective the protocol becomes, eventually degrading to a performance level worse than the legacy relay method due to the extra round-trip communications required to fetch missing transactions.&lt;/p&gt;

&lt;h3 id=&#34;4-2-the-cost-of-dissonance-how-policy-mismatches-degrade-compact-block-relay-2&#34;&gt;&lt;strong&gt;4.2. The Cost of Dissonance: How Policy Mismatches Degrade Compact Block Relay&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The intended heterogeneity of relay policies creates the exact conditions that undermine the effectiveness of compact block relay. When different nodes on the network enforce different &amp;#34;standardness&amp;#34; rules, their mempools inevitably diverge.&lt;/p&gt;

&lt;p&gt;Consider a scenario central to the current debate:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A large mining pool runs a node with a permissive relay policy, allowing &lt;code&gt;OP_RETURN&lt;/code&gt; transactions of any size, as this can be a source of fee revenue.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;A user submits a transaction with a 500-byte &lt;code&gt;OP_RETURN&lt;/code&gt; output directly to this miner, paying a high fee.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The miner includes this transaction in the block they successfully mine.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The miner then attempts to propagate this new block to its peers using compact block relay. One of its peers is a standard, default-configured Bitcoin Core node that enforces the 80-byte &lt;code&gt;OP_RETURN&lt;/code&gt; limit.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Because of its stricter policy, the receiving node never accepted the 500-byte &lt;code&gt;OP_RETURN&lt;/code&gt; transaction into its mempool.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;When the receiving node gets the compact block sketch, it finds a short-txid for which it has no corresponding transaction. This results in a &lt;strong&gt;reconstruction failure&lt;/strong&gt;.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The node is now forced to initiate an additional communication round-trip (getblocktxn/blocktxn) to explicitly request the full data of the missing 500-byte transaction.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This extra round-trip adds significant latency to the propagation of that block to that node, and to all subsequent nodes that receive the block from it. This is not a hypothetical scenario; inconsistent relay policies are a known and direct cause of compact block reconstruction failures and are frequently cited as a primary reason to strive for greater policy consistency across the network.&lt;/p&gt;

&lt;h3 id=&#34;4-3-the-centralization-vector-modeling-the-impact-of-propagation-delay-on-mining-viability-2&#34;&gt;&lt;strong&gt;4.3. The Centralization Vector: Modeling the Impact of Propagation Delay on Mining Viability&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The latency introduced by compact block relay failures is not merely an inconvenience; it is a force that can contribute to the centralization of Bitcoin mining. Mining is an intensely competitive, time-sensitive race. The moment a new block is found by Miner A, every other miner on the network must learn of that block, validate it, and immediately begin searching for the &lt;em&gt;next&lt;/em&gt; block on top of Miner A&amp;#39;s block. Any hash power expended trying to find a block on the previous, now-stale chain is completely wasted energy and lost potential revenue.&lt;/p&gt;

&lt;p&gt;This reality creates an inherent advantage for miners who learn about new blocks faster. Large, well-connected, and geographically concentrated mining pools often have lower latency connections to each other and can propagate blocks amongst themselves more quickly than smaller, more remote, or less-connected miners. This gives them a crucial head start, even if only for a few seconds, in the race to find the next block.&lt;/p&gt;

&lt;p&gt;Any systemic increase in block propagation delay exacerbates this disadvantage. When compact block relay is inefficient due to mempool mismatches, the average time for a block to reach the entire network increases. This disproportionately harms smaller miners, as they spend a larger percentage of their time and energy hashing on a stale chain, which directly reduces their profitability and makes them less competitive.&lt;/p&gt;

&lt;p&gt;This dynamic has been formally modeled in academic research as the &lt;strong&gt;&amp;#34;Rich Get Richer&amp;#34; (TRGR) phenomenon&lt;/strong&gt;. Studies show that block propagation delays are a primary cause of unintentional blockchain forks (also known as stale or orphan blocks), where two miners find a block at roughly the same height almost simultaneously. In the ensuing race for one chain to become longer, the miner with more hashrate (and often better connectivity) is more likely to win. The result is that large miners can end up earning a share of the total block rewards that is greater than their proportional share of the network&amp;#39;s hashrate, while smaller miners are systematically disadvantaged. These models explicitly demonstrate that improving block propagation delays is a direct way to enhance mining fairness and combat this centralizing pressure.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;OP_RETURN&lt;/code&gt; debate, therefore, exposes a fundamental tension between two of Bitcoin&amp;#39;s core decentralization principles. On one hand, there is the decentralization of &lt;strong&gt;nodes&lt;/strong&gt;, which is upheld by the principle of node sovereignty—the right of every operator to set their own local relay policy. On the other hand, there is the decentralization of &lt;strong&gt;miners&lt;/strong&gt;, which is crucial for the network&amp;#39;s censorship resistance and security, and which is undermined by factors like propagation delay that create an uneven playing field.&lt;/p&gt;

&lt;p&gt;The exercise of sovereignty at the node layer, by running heterogeneous policies, has a direct, negative, real-world consequence: it degrades the efficiency of block propagation for the entire network. This degradation is not felt equally; it systematically disadvantages smaller miners and creates economic pressure for hashrate to consolidate into larger, better-connected entities. The decision by Bitcoin Core developers to remove the default &lt;code&gt;OP_RETURN&lt;/code&gt; limit is therefore an implicit value judgment. It prioritizes the health and decentralization of the mining layer over the maintenance of a specific, user-configurable—but ultimately ineffective and harmful—default spam filter. The change seeks to align the default policy of the network&amp;#39;s dominant software client with the economic reality of what miners will include in blocks, thereby improving overall network efficiency and helping to level the competitive landscape for all miners.&lt;/p&gt;

&lt;h2 id=&#34;section-5-the-policy-evolution-bitcoin-core-v30-0-2&#34;&gt;&lt;strong&gt;Section 5: The Policy Evolution: Bitcoin Core v30.0&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The culmination of this long-running technical and philosophical discussion is a specific set of changes scheduled for the Bitcoin Core v30.0 software release. It is essential to precisely understand what this update entails, as much of the public controversy stems from misinterpretations of its scope and impact. The change is a modification of default behavior, not a rewriting of Bitcoin&amp;#39;s fundamental laws.&lt;/p&gt;

&lt;h3 id=&#34;5-1-uncapping-the-default-removing-the-80-byte-datacarrier-relay-limit-2&#34;&gt;&lt;strong&gt;5.1. Uncapping the Default: Removing the 80-Byte datacarrier Relay Limit&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The primary change, merged into the Bitcoin Core codebase and planned for release around October 2025, is the removal of the default relay policy that has been in place for years. Specifically, the update alters the default settings in two ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It removes the policy that rejects and refuses to relay transactions containing an &lt;code&gt;OP_RETURN&lt;/code&gt;output with a data payload larger than 80 bytes.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;It removes the policy that rejects transactions containing more than one &lt;code&gt;OP_RETURN&lt;/code&gt; output.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With this change, a default-configured Bitcoin Core v30.0 node will now accept and relay transactions with larger and multiple &lt;code&gt;OP_RETURN&lt;/code&gt; outputs, provided they are otherwise valid. It is critical to emphasize that this is &lt;strong&gt;only a change to the default relay policy&lt;/strong&gt;. It is not a consensus change. The ultimate hard limit on the amount of data that can be included in any transaction or block remains the consensus rule of the 4 million weight unit maximum block weight.&lt;/p&gt;

&lt;p&gt;Furthermore, this change only affects the &lt;em&gt;default&lt;/em&gt; behavior of the Bitcoin Core software. Node operators who wish to maintain the old, stricter policy (or an even stricter one) can still do so by configuring their node accordingly, although the method for doing so has become more complex and is marked for future removal. Operators of alternative Bitcoin clients, such as Bitcoin Knots, are entirely unaffected by this change, as their software maintains its own distinct set of default policies.&lt;/p&gt;

&lt;h3 id=&#34;5-2-the-configuration-debate-deprecation-of-policy-options-and-node-sovereignty-2&#34;&gt;&lt;strong&gt;5.2. The Configuration Debate: Deprecation of Policy Options and Node Sovereignty&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;While the change to the default policy is the most prominent aspect of the update, a secondary and more contentious element is the decision to deprecate the configuration flags that allow users to easily set their own &lt;code&gt;OP_RETURN&lt;/code&gt; policies. The pull request marks the &lt;code&gt;-datacarrier&lt;/code&gt; and &lt;code&gt;-datacarriersize&lt;/code&gt; command-line options as deprecated, signaling the developers&amp;#39; intent to remove them entirely in a future software version.&lt;/p&gt;

&lt;p&gt;This move has drawn significant criticism from those who view it as an erosion of node sovereignty. While custom configuration will still be possible through more complex means, removing these simple, long-standing flags makes it harder for non-expert users to deviate from the new developer-set default. Critics argue this pushes the network toward a state of policy monoculture, undermining the principle that each node operator should be the ultimate arbiter of their own rules.&lt;/p&gt;

&lt;p&gt;Adding to the controversy is the confusing implementation of the datacarriersize option in the interim v30.0 release. Previously, setting &lt;code&gt;-datacarriersize=83&lt;/code&gt; would limit a single &lt;code&gt;OP_RETURN&lt;/code&gt; output to 83 bytes. In v30.0, because multiple &lt;code&gt;OP_RETURN&lt;/code&gt; outputs are now permitted by default, the same setting (&lt;code&gt;-datacarriersize=83&lt;/code&gt;) would now allow for up to 83 separate outputs, potentially totaling over 830 bytes of data. This non-intuitive change in behavior has been labeled a &amp;#34;trick&amp;#34; by critics, who argue it could lead to node operators unintentionally running a far more permissive policy than they intended if they are not aware of the subtle but significant modification.&lt;/p&gt;

&lt;p&gt;The deprecation of these configuration flags reveals a deeper philosophical shift that extends beyond the immediate &lt;code&gt;OP_RETURN&lt;/code&gt; issue. It suggests a move within some circles of Bitcoin Core development toward a model of &lt;strong&gt;policy consolidation&lt;/strong&gt;. While the primary change (removing the default limit) can be seen as a reactive measure to align software with on-the-ground miner behavior, the secondary change (deprecating the flags) is a more proactive step. It signals an intent not just to alter the default but to actively discourage deviation from that default in the long term.&lt;/p&gt;

&lt;p&gt;The underlying rationale is likely tied directly to the core technical problem of mempool divergence. The more nodes that align on a single, shared policy, the more efficient the entire network&amp;#39;s block propagation becomes. By making it more difficult for users to set custom policies, developers can push the network toward a more homogeneous policy state, thereby maximizing the benefits of optimizations like compact block relay. This creates a direct conflict between design goals.  This is a significant move away from a purely &amp;#34;sovereign individual&amp;#34; model of node operation toward a &amp;#34;collectively optimized&amp;#34; model for the relay network, and it represents a central point of contention for critics and proponents of alternative clients like Bitcoin Knots.&lt;/p&gt;

&lt;h2 id=&#34;section-6-a-data-driven-analysis-of-the-arguments-2&#34;&gt;&lt;strong&gt;Section 6: A Data-Driven Analysis of the Arguments&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The debate over the &lt;code&gt;OP_RETURN&lt;/code&gt; policy change is multifaceted, involving technical, economic, and philosophical arguments. To move beyond subjective claims, this section will systematically evaluate the core arguments from both proponents and opponents by grounding them in empirical network data. The on-chain record provides a powerful, objective lens through which to assess the validity of these competing narratives.&lt;/p&gt;

&lt;h3 id=&#34;6-1-proponent-claim-the-limit-is-ineffective-and-creates-perverse-incentives-for-utxo-bloat-2&#34;&gt;&lt;strong&gt;6.1. Proponent Claim: The Limit is Ineffective and Creates Perverse Incentives for UTXO Bloat&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The central argument from proponents of removing the limit is that the 80-byte policy has failed in its objective. They contend that it does not stop users from storing large amounts of data on-chain; it merely forces them to use alternative methods that are often more harmful to the network, particularly by causing bloat in the critical UTXO set.&lt;/p&gt;

&lt;p&gt;The emergence of Bitcoin Ordinals and related protocols starting in late 2022 provides a powerful real-world test of this claim.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ordinals and Witness Data:&lt;/strong&gt; The Ordinals protocol pioneered a method to &amp;#34;inscribe&amp;#34; data, including large image files, into the witness portion of a Bitcoin transaction. The witness field, introduced by the SegWit upgrade, benefits from a 75% fee discount, making it an economically attractive place for data storage. While this technique does not directly bloat the UTXO set, it conclusively demonstrated two things: there was massive, latent demand for on-chain data storage, and the &lt;code&gt;OP_RETURN&lt;/code&gt; policy was completely irrelevant as a deterrent to those willing to innovate.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stamps, BRC-20s, and UTXO Bloat:&lt;/strong&gt; More damagingly, other protocols that followed, such as Stamps (SRC-20) and certain implementations of BRC-20 tokens, were designed to embed data directly into spendable-looking transaction outputs. These outputs, while often containing only &amp;#34;dust&amp;#34; amounts of bitcoin, are indistinguishable from real UTXOs and must be stored in the UTXO set of every full node. This is precisely the behavior that &lt;code&gt;OP_RETURN&lt;/code&gt; was created in 2014 to prevent.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quantifying the Impact on the UTXO Set:&lt;/strong&gt; The on-chain data shows the dramatic consequences of this shift. For years, the size of the Bitcoin UTXO set had been relatively stable. However, as documented in a January 2024 analysis, the UTXO count exploded from a baseline of approximately 80 million in early 2023 to over 156 million less than a year later. This unprecedented spike in the size of the network&amp;#39;s most critical in-memory database correlates directly with the rise of these new data-embedding protocols that were designed to circumvent the &lt;code&gt;OP_RETURN&lt;/code&gt; policy limit. This provides strong empirical evidence for the proponents&amp;#39; claim: the policy was not preventing data storage but was instead creating a perverse incentive to redirect that activity into a form that actively harms network scalability.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Miner Complicity:&lt;/strong&gt; The final piece of evidence for the policy&amp;#39;s ineffectiveness is the behavior of miners. Recognizing the fee revenue potential, major mining pools such as MARA quickly established out-of-band submission channels, like their &amp;#34;Slipstream&amp;#34; service, to allow users to send non-standard transactions directly to them, bypassing the public mempool and its restrictive policies entirely. This demonstrates that if users are willing to pay, miners will service the demand, rendering relay policy moot as a definitive gatekeeper of the blockchain&amp;#39;s content.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;6-2-opponent-claim-removing-the-limit-will-lead-to-uncontrolled-spam-and-blockchain-bloat-2&#34;&gt;&lt;strong&gt;6.2. Opponent Claim: Removing the Limit Will Lead to Uncontrolled Spam and Blockchain Bloat&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The primary concern voiced by opponents is that removing the 80-byte &amp;#34;soft deterrent&amp;#34; will open the floodgates to an uncontrollable torrent of non-financial &amp;#34;junk&amp;#34; data being stored on the blockchain. They fear this will increase the storage and bandwidth burden for node operators, potentially leading to centralization, and detract from Bitcoin&amp;#39;s primary use case as a sound monetary network.&lt;/p&gt;

&lt;p&gt;Once again, the inscriptions boom of 2023 serves as an invaluable natural experiment to test this hypothesis. The data from this period strongly suggests that the ultimate regulator of on-chain data usage is not policy, but the economic reality of the transaction fee market.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Fee Market as the Ultimate Arbiter:&lt;/strong&gt; During the peak of the BRC-20 minting craze in May 2023, the demand for Bitcoin blockspace—a resource strictly limited by a consensus rule—exploded. The consequences were immediate and dramatic:&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Transaction Throughput:&lt;/strong&gt; The daily transaction count surged to a new all-time high of 682,000, with BRC-20 activity accounting for over half of the total.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Miner Revenue:&lt;/strong&gt; Total daily fees paid to miners peaked near the all-time high at $17.8 million. For a brief but historic period, the average fee revenue per block (6.66 BTC) actually surpassed the fixed block subsidy (6.25 BTC), something that had only happened four times before in Bitcoin&amp;#39;s history, typically at the peak of major bull markets.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost to Transact:&lt;/strong&gt; The intense competition for blockspace priced out ordinary users. The median fee required to get a standard financial transaction included in a block soared to over $20, with the mean fee exceeding $30.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Market-Based Regulation:&lt;/strong&gt; This data provides a clear conclusion: blockspace is a scarce economic good, not a free resource to be spammed at will. When demand for data storage increases, the fee market responds by raising the price to clear the market. The argument of &amp;#34;unlimited spam&amp;#34; is refuted by the economic reality that such activity becomes prohibitively expensive during periods of high demand. The BRC-20 boom eventually cooled precisely because the high fees it generated priced out marginal participants, demonstrating the fee market&amp;#39;s powerful and effective self-regulating mechanism. Fees, not policy, proved to be the primary regulator of on-chain data usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&#34;left&#34;&gt;Metric&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Pre-Boom (Feb 2023 Avg)&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Peak-Boom (May 8, 2023)&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Post-Boom (Aug 2023 Avg)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Daily Transaction Count&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~280,000&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;682,000&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~450,000&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;% of Txs as Inscriptions&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&amp;lt; 5%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&amp;gt; 50%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~20%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Average Fee per Block (BTC)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~0.25 BTC&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.66 BTC&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~0.5 BTC&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Median Tx Fee (USD)&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&amp;lt; $2.00&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;$20.17&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~ $3.00&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;UTXO Set Count&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~85 Million&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~100 Million&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~120 Million&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;em&gt;Data compiled and synthesized from sources.&lt;/em&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&#34;6-3-the-governance-question-community-consensus-and-developer-decision-making-2&#34;&gt;&lt;strong&gt;6.3. The Governance Question: Community Consensus and Developer Decision-Making&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;A significant component of the opposition to the &lt;code&gt;OP_RETURN&lt;/code&gt; change is procedural and philosophical. Critics argue that the decision was pushed through by a relatively small group of Bitcoin Core developers without achieving broad community consensus, highlighting a potential centralization of influence over the protocol&amp;#39;s most widely used software client.&lt;/p&gt;

&lt;p&gt;While &amp;#34;consensus&amp;#34; is a notoriously difficult concept to measure in a decentralized ecosystem, one of the most tangible proxies for sentiment among technically engaged users is the distribution of software clients running on the network&amp;#39;s full nodes. The data on this front indicates a clear and measurable dissent.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#34;Node Voting&amp;#34; as a Form of Protest:&lt;/strong&gt; In direct response to the proposal to remove the &lt;code&gt;OP_RETURN&lt;/code&gt; limit, the market share of Bitcoin Knots, an alternative client maintained by developer Luke Dashjr that enforces stricter default policies, saw a dramatic increase.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quantifying the Shift:&lt;/strong&gt; Prior to the debate intensifying in early 2023, Bitcoin Knots represented a negligible fraction of the network, with around 0.3% of nodes. By May 2025, its share had surged to nearly 10%. Data from September 2025 confirms this trend, showing Bitcoin Knots holding a market share of over 11.48% , with some metrics indicating it has captured as much as 18% of the network&amp;#39;s publicly reachable nodes (4,246 out of a total of approximately 23,600 nodes).&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Tangible Signal:&lt;/strong&gt; This &amp;#34;node voting&amp;#34; represents a concrete, decentralized signal of disagreement from a non-trivial minority of the network&amp;#39;s most dedicated participants—those who run their own full nodes. It demonstrates that while Bitcoin Core remains the dominant client, its development decisions are not accepted uncritically. The ecosystem possesses organic mechanisms for expressing dissent and fostering a competitive environment among software implementations, which serves as a vital check on the centralization of development power.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;section-7-conclusion-an-irreducible-trade-off-and-a-path-forward-2&#34;&gt;&lt;strong&gt;Section 7: Conclusion: An Irreducible Trade-Off and a Path Forward&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;The extensive technical and economic analysis of the &lt;code&gt;OP_RETURN&lt;/code&gt; debate reveals that it is not a simple problem with a single &amp;#34;correct&amp;#34; solution. It is not a battle between good and evil, innovation and stagnation, or freedom and censorship. Instead, it is a classic engineering problem centered on an irreducible trade-off between competing, and equally valid, principles within the Bitcoin ecosystem. The path forward is not to declare a victor in an ideological war, but to recognize the pragmatic nature of the decision and to diligently monitor the network data that will reveal its true long-term consequences.&lt;/p&gt;

&lt;h3 id=&#34;7-1-reconciling-sovereignty-with-efficiency-2&#34;&gt;&lt;strong&gt;7.1. Reconciling Sovereignty with Efficiency&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The core of the &lt;code&gt;OP_RETURN&lt;/code&gt; issue lies in the tension between two fundamental goals for a decentralized network:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Node Sovereignty:&lt;/strong&gt; The principle that every individual running a full node should have the freedom to set their own local policies for validating and relaying information. This is a cornerstone of decentralization at the network&amp;#39;s validation layer.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network Efficiency:&lt;/strong&gt; The collective need for a highly efficient, low-latency communication layer to ensure that new blocks propagate rapidly and fairly to all participants. This is critical for maintaining a level playing field and promoting decentralization at the network&amp;#39;s security layer—the mining ecosystem.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As this report has demonstrated, these two principles are currently in conflict. The maximal exercise of node sovereignty, resulting in a wide diversity of relay policies, directly degrades network efficiency. This inefficiency, in the form of increased block propagation latency, disproportionately harms smaller miners and creates economic pressures that favor mining centralization.&lt;/p&gt;

&lt;p&gt;The change in Bitcoin Core v30.0 represents a pragmatic choice to prioritize one side of this trade-off. Based on the empirical evidence that the previous 80-byte policy was not only ineffective but was actively causing harm by incentivizing UTXO bloat, the decision was made to align the default policy with the observed economic behavior of miners. This is a calculated move to enhance the efficiency of the relay network and, by extension, to bolster the health and decentralization of the mining layer, even at the perceived cost of reducing some of the default client&amp;#39;s user-level policy granularity.&lt;/p&gt;

&lt;h3 id=&#34;7-2-key-metrics-for-future-observation-2&#34;&gt;&lt;strong&gt;7.2. Key Metrics for Future Observation&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;The ultimate success or failure of this policy change will not be decided by arguments on social media, but by the emergent behavior of the network itself. The true impact will be written in the immutable record of on-chain data over the coming months and years. For analysts, node operators, and all engaged participants, the following metrics will be critical to monitor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node Client Distribution:&lt;/strong&gt; The most direct measure of community sentiment will be the relative market share of different Bitcoin client implementations. Will the initial surge in Bitcoin Knots adoption represent a sustained philosophical split, leading to a more fragmented policy landscape? Or will the majority of node operators eventually upgrade to the new Bitcoin Core default, resulting in the desired state of greater policy homogeneity? A continued rise in alternative clients would signal a persistent disagreement with the direction of Core development.&lt;/li&gt;
&lt;/ul&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&#34;left&#34;&gt;Date&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Bitcoin Core %&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Bitcoin Knots %&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Other %&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Jan 2023&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~99%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~0.3%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~0.7%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;May 2025&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~89%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~10%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~1.0%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;Sep 2025&lt;/strong&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~82%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;~18%&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&amp;lt; 1.0%&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;left&#34;&gt;&lt;em&gt;Data compiled and synthesized from sources.&lt;/em&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hashrate Distribution:&lt;/strong&gt; The primary technical justification for the change is to reduce a centralizing pressure on mining. Therefore, the distribution of hashrate among mining pools is a key performance indicator. Will the improved efficiency of block propagation correlate with a more even distribution of hashrate, or will other powerful economic factors, such as energy costs and access to capital, continue to drive consolidation? Monitoring metrics like the number of active pools and the Gini coefficient of hashrate distribution will be essential.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UTXO Set Growth:&lt;/strong&gt; A core premise of the change is that it will disincentivize the use of UTXO-polluting data storage methods. The rate of growth of the UTXO set count should be closely watched. A successful outcome would see the growth rate slow down from the explosive pace seen in 2023-2024, indicating that data-embedding activity has been successfully channeled back into the prunable &lt;code&gt;OP_RETURN&lt;/code&gt; mechanism.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fee Market Dynamics:&lt;/strong&gt; With a more permissive default policy, the fee market will continue to be the primary arena where the demand for monetary transactions competes with the demand for data storage. Analyzing the composition of transactions, the volatility of fees, and the percentage of miner revenue derived from fees will provide ongoing insight into how the network values and allocates its scarce blockspace.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, the &lt;code&gt;OP_RETURN&lt;/code&gt; debate is a testament to Bitcoin&amp;#39;s maturity as a system. It has moved beyond simple questions of block size to grapple with the complex, second-order effects of its own internal mechanics. The choice is now in the hands of each individual user: to run the software that reflects their principles, to set the policies that align with their vision, and to watch the data that will render the final verdict.&lt;/p&gt;

&lt;h4 id=&#34;works-cited-2&#34;&gt;&lt;strong&gt;Works cited&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;1. Core vs Knots: the 83-byte row that split the bitcoin community ..., &lt;a href=&#34;https://forklog.com/en/core-vs-knots-the-83-byte-row-that-split-the-bitcoin-community/&#34;&gt;https://forklog.com/en/core-vs-knots-the-83-byte-row-that-split-the-bitcoin-community/&lt;/a&gt; 2. Why Some Changes To Bitcoin Require Consensus: Bitcoin&amp;#39;s 4 Layers, &lt;a href=&#34;https://bitcoinmagazine.com/technical/why-some-changes-to-bitcoin-require-consensus-bitcoin-s-layers-1456512578&#34;&gt;https://bitcoinmagazine.com/technical/why-some-changes-to-bitcoin-require-consensus-bitcoin-s-layers-1456512578&lt;/a&gt; 3. Wizardsardine, &lt;a href=&#34;https://wizardsardine.com/blog/mempool-policy-vs-consensus-rules/&#34;&gt;https://wizardsardine.com/blog/mempool-policy-vs-consensus-rules/&lt;/a&gt; 4. What are blockchain consensus rules? - Bitstamp, &lt;a href=&#34;https://www.bitstamp.net/learn/security/what-are-blockchain-consensus-rules/&#34;&gt;https://www.bitstamp.net/learn/security/what-are-blockchain-consensus-rules/&lt;/a&gt; 5. Consensus Rules | BSV Skills Center, &lt;a href=&#34;https://docs.bsvblockchain.org/protocol/network-policies/consensus-rules&#34;&gt;https://docs.bsvblockchain.org/protocol/network-policies/consensus-rules&lt;/a&gt; 6. Bitcoin OP_RETURN Controversy: Complete Summary (May 6 2025 ..., &lt;a href=&#34;https://gist.github.com/andy108369/dadc7d1f93edca5a775f29ca1bf12065&#34;&gt;https://gist.github.com/andy108369/dadc7d1f93edca5a775f29ca1bf12065&lt;/a&gt; 7. The Bitcoin Mempool: Relay Network Dynamics, &lt;a href=&#34;https://bitcoinmagazine.com/technical/the-bitcoin-mempool-relay-network-dynamics&#34;&gt;https://bitcoinmagazine.com/technical/the-bitcoin-mempool-relay-network-dynamics&lt;/a&gt; 8. Free relay - Bitcoin Optech, &lt;a href=&#34;https://bitcoinops.org/en/topics/free-relay/&#34;&gt;https://bitcoinops.org/en/topics/free-relay/&lt;/a&gt; 9. op_return.md - GitHub Gist, &lt;a href=&#34;https://gist.github.com/instagibbs/c436110890ab25aa9997b13c2270d5ce&#34;&gt;https://gist.github.com/instagibbs/c436110890ab25aa9997b13c2270d5ce&lt;/a&gt; 10. The Bitcoin Non-standard. We&amp;#39;re excited to share the first guide… | by James Prestwich | Summa | Medium, &lt;a href=&#34;https://medium.com/summa-technology/the-bitcoin-non-standard-6103330af98c&#34;&gt;https://medium.com/summa-technology/the-bitcoin-non-standard-6103330af98c&lt;/a&gt; 11. OP_RETURN | Storing Data on the Blockchain - Learn Me A Bitcoin, &lt;a href=&#34;https://learnmeabitcoin.com/technical/script/return/&#34;&gt;https://learnmeabitcoin.com/technical/script/return/&lt;/a&gt; 12. OP_RETURN - Bitcoin Wiki, &lt;a href=&#34;https://en.bitcoin.it/wiki/OP_RETURN&#34;&gt;https://en.bitcoin.it/wiki/OP_RETURN&lt;/a&gt; 13. OP_RETURN - River, &lt;a href=&#34;https://river.com/learn/terms/o/op-return/&#34;&gt;https://river.com/learn/terms/o/op-return/&lt;/a&gt; 14. OP_Return Meaning - Ledger, &lt;a href=&#34;https://www.ledger.com/academy/glossary/op_return&#34;&gt;https://www.ledger.com/academy/glossary/op_return&lt;/a&gt; 15. UTXO - Bitcoin Wiki, &lt;a href=&#34;https://wiki.bitcoinsv.io/index.php/UTXO&#34;&gt;https://wiki.bitcoinsv.io/index.php/UTXO&lt;/a&gt; 16. Bitcoin Transactions, In Depth, &lt;a href=&#34;http://www.cs.sjsu.edu/~austin/cs185c-spring19/slides/CS185c-Day12-BitcoinTransactionsAdvanced.pdf&#34;&gt;http://www.cs.sjsu.edu/~austin/cs185c-spring19/slides/CS185c-Day12-BitcoinTransactionsAdvanced.pdf&lt;/a&gt; 17. OP_Return Meaning in Crypto - Tangem, &lt;a href=&#34;https://tangem.com/en/glossary/op-return/&#34;&gt;https://tangem.com/en/glossary/op-return/&lt;/a&gt; 18. What is OP_RETURN—and how does it enable data storage on the Bitcoin network?, &lt;a href=&#34;https://forklog.com/en/what-is-op_return-and-how-does-it-enable-data-storage-on-the-bitcoin-network/&#34;&gt;https://forklog.com/en/what-is-op_return-and-how-does-it-enable-data-storage-on-the-bitcoin-network/&lt;/a&gt; 19. What Is OP_Return? - Bitcoin Magazine, &lt;a href=&#34;https://bitcoinmagazine.com/glossary/op_return&#34;&gt;https://bitcoinmagazine.com/glossary/op_return&lt;/a&gt; 20. Bitcoin Interoperability Update: OP_RETURN, bitUSD, and More Development Freedom with native BTC - ZetaChain, &lt;a href=&#34;https://www.zetachain.com/blog/bitcoin-interoperability-update-op-return-bitusd-and-more-development&#34;&gt;https://www.zetachain.com/blog/bitcoin-interoperability-update-op-return-bitusd-and-more-development&lt;/a&gt; 21. Bitcoin transforms limit size to 4MB | Cryptopolitan on Binance Square, &lt;a href=&#34;https://www.binance.com/en/square/post/25419721230729&#34;&gt;https://www.binance.com/en/square/post/25419721230729&lt;/a&gt; 22. Block relay | Bitcoin Core Onboarding, &lt;a href=&#34;https://bitcoincore.academy/block-relay.html&#34;&gt;https://bitcoincore.academy/block-relay.html&lt;/a&gt; 23. BIP 152: Compact Block Relay - Bitcoin Improvement Proposal, &lt;a href=&#34;https://bips.dev/152/&#34;&gt;https://bips.dev/152/&lt;/a&gt; 24. Compact block relay | Bitcoin Optech, &lt;a href=&#34;https://bitcoinops.org/en/topics/compact-block-relay/&#34;&gt;https://bitcoinops.org/en/topics/compact-block-relay/&lt;/a&gt; 25. Compact Blocks FAQ - Bitcoin Core, &lt;a href=&#34;https://bitcoincore.org/en/2016/06/07/compact-blocks-faq/&#34;&gt;https://bitcoincore.org/en/2016/06/07/compact-blocks-faq/&lt;/a&gt; 26. The Redundancy of Full Nodes in Bitcoin: A Network-Theoretic Demonstration of Miner-Centric Propagation Topologies - arXiv, &lt;a href=&#34;https://arxiv.org/html/2506.14197v1&#34;&gt;https://arxiv.org/html/2506.14197v1&lt;/a&gt; 27. Taming Propagation Delay and Fork Rate in Bitcoin ... - Temple CIS, &lt;a href=&#34;https://cis.temple.edu/~wu/research/publications/Publication_files/Taming_Propagation_Delay_and_Fork_Rate_in_Bitcoin_Mining_Network.pdf&#34;&gt;https://cis.temple.edu/~wu/research/publications/Publication_files/Taming_Propagation_Delay_and_Fork_Rate_in_Bitcoin_Mining_Network.pdf&lt;/a&gt; 28. The Effect of Latency on Selfish-Miner Attack on Block Receive Time Bitcoin Network Using NS3 | Request PDF - ResearchGate, &lt;a href=&#34;https://www.researchgate.net/publication/331160192_The_Effect_of_Latency_on_Selfish-Miner_Attack_on_Block_Receive_Time_Bitcoin_Network_Using_NS3&#34;&gt;https://www.researchgate.net/publication/331160192_The_Effect_of_Latency_on_Selfish-Miner_Attack_on_Block_Receive_Time_Bitcoin_Network_Using_NS3&lt;/a&gt; 29. Characterizing the Impact of Network Delay on Bitcoin Mining - ResearchGate, &lt;a href=&#34;https://www.researchgate.net/publication/356453543_Characterizing_the_Impact_of_Network_Delay_on_Bitcoin_Mining&#34;&gt;https://www.researchgate.net/publication/356453543_Characterizing_the_Impact_of_Network_Delay_on_Bitcoin_Mining&lt;/a&gt; 30. WORKING PAPER SERIES - CREST, &lt;a href=&#34;https://crest.science/RePEc/wpstorage/2024-10.pdf&#34;&gt;https://crest.science/RePEc/wpstorage/2024-10.pdf&lt;/a&gt; 31. (PDF) Block Propagation Problem - ResearchGate, &lt;a href=&#34;https://www.researchgate.net/publication/389255407_Block_Propagation_Problem&#34;&gt;https://www.researchgate.net/publication/389255407_Block_Propagation_Problem&lt;/a&gt; 32. The Rich Get Richer in Bitcoin Mining Induced by Blockchain ... - arXiv, &lt;a href=&#34;https://arxiv.org/pdf/2506.13360&#34;&gt;https://arxiv.org/pdf/2506.13360&lt;/a&gt; 33. Bitcoin Core devs merge controversial OP_RETURN policy change into planned October release | The Block, &lt;a href=&#34;https://www.theblock.co/post/357594/bitcoin-core-devs-merge-controversial-op_return-policy-change-into-planned-october-release&#34;&gt;https://www.theblock.co/post/357594/bitcoin-core-devs-merge-controversial-op_return-policy-change-into-planned-october-release&lt;/a&gt; 34. Bitcoin Core 30 Update to Raise Limit on Controversial OP_RETURN - Unchained Crypto, &lt;a href=&#34;https://unchainedcrypto.com/bitcoin-core-30-update-to-raise-limit-on-controversial-op_return/&#34;&gt;https://unchainedcrypto.com/bitcoin-core-30-update-to-raise-limit-on-controversial-op_return/&lt;/a&gt; 35. Three sneaky changes in Bitcoin Core v30 are confusing node operators - Protos, &lt;a href=&#34;https://protos.com/three-sneaky-changes-in-bitcoin-core-v30-are-confusing-node-operators/&#34;&gt;https://protos.com/three-sneaky-changes-in-bitcoin-core-v30-are-confusing-node-operators/&lt;/a&gt; 36. Bitcoin Core: OP_RETURN limit removal announced. A CALL TO ACTION! - Reddit, &lt;a href=&#34;https://www.reddit.com/r/Bitcoin/comments/1kg107x/bitcoin_core_op_return_limit_removal_announced_a/&#34;&gt;https://www.reddit.com/r/Bitcoin/comments/1kg107x/bitcoin_core_op_return_limit_removal_announced_a/&lt;/a&gt; 37. Controversial Bitcoin Proposal to remove OP_RETURN data limit. Good or bad for Bitcoin? (DE/EN) : r/CryptoCurrency - Reddit, &lt;a href=&#34;https://www.reddit.com/r/CryptoCurrency/comments/1kkot2h/controversial_bitcoin_proposal_to_remove_op/&#34;&gt;https://www.reddit.com/r/CryptoCurrency/comments/1kkot2h/controversial_bitcoin_proposal_to_remove_op/&lt;/a&gt; 38. The Ultimate Guide to Bitcoin Ordinals and Inscriptions - Nervos Network, &lt;a href=&#34;https://www.nervos.org/knowledge-base/guide_to_inscriptions&#34;&gt;https://www.nervos.org/knowledge-base/guide_to_inscriptions&lt;/a&gt; 39. A Bitcoin Blockspace Boom - Glassnode Insights, &lt;a href=&#34;https://insights.glassnode.com/the-week-onchain-week-20-2023/&#34;&gt;https://insights.glassnode.com/the-week-onchain-week-20-2023/&lt;/a&gt; 40. Are “Ordinals” Worth Worrying About? - Swan Bitcoin, &lt;a href=&#34;https://www.swanbitcoin.com/industry/are-ordinals-worth-worrying-about/&#34;&gt;https://www.swanbitcoin.com/industry/are-ordinals-worth-worrying-about/&lt;/a&gt; 41. Bitcoin Network Evolution: BTC Ordinals, BRC-20 Standard and Runes Protocol - Vaultody, &lt;a href=&#34;https://vaultody.com/blog/174-bitcoin-network-evolution-btc-ordinals-brc-20-standard-and-runes-protocol&#34;&gt;https://vaultody.com/blog/174-bitcoin-network-evolution-btc-ordinals-brc-20-standard-and-runes-protocol&lt;/a&gt; 42. Bitcoin and BRC-20: 75 days later | by Matthew Kimmell | CoinShares Research Blog, &lt;a href=&#34;https://blog.coinshares.com/bitcoin-and-brc-20-75-days-later-eb221dc4af08&#34;&gt;https://blog.coinshares.com/bitcoin-and-brc-20-75-days-later-eb221dc4af08&lt;/a&gt; 43. High Bitcoin Fees From BRC-20 And Ordinals Lead To Controversy And Challenges, &lt;a href=&#34;https://bitcoinmagazine.com/technical/bitcoins-high-fees-create-controversy-and-challenges&#34;&gt;https://bitcoinmagazine.com/technical/bitcoins-high-fees-create-controversy-and-challenges&lt;/a&gt; 44. Ordinal Inscriptions and BRC-20 Tokens Cause Bitcoin Fee Spike | CoinMarketCap, &lt;a href=&#34;https://coinmarketcap.com/academy/article/ordinal-inscriptions-and-brc-20-tokens-cause-bitcoin-fee-spike&#34;&gt;https://coinmarketcap.com/academy/article/ordinal-inscriptions-and-brc-20-tokens-cause-bitcoin-fee-spike&lt;/a&gt; 45. How Does Bitcoin Impact Transaction Fees? - Nadcab Labs, &lt;a href=&#34;https://www.nadcab.com/blog/bitcoin-transaction-fees&#34;&gt;https://www.nadcab.com/blog/bitcoin-transaction-fees&lt;/a&gt; 46. Crypto Transaction Fees Explained: A Comprehensive Overview | The Digital Asset Infrastructure Company - BitGo, &lt;a href=&#34;https://www.bitgo.com/resources/blog/crypto-transaction-fees-explained/&#34;&gt;https://www.bitgo.com/resources/blog/crypto-transaction-fees-explained/&lt;/a&gt; 47. Bitcoin Devs Approve Controversial 4MB OP_RETURN Data Expansion | Bitget News, &lt;a href=&#34;https://www.bitget.com/news/detail/12560604808752&#34;&gt;https://www.bitget.com/news/detail/12560604808752&lt;/a&gt; 48. Bitcoin Nodes Summary - Coin Dance, &lt;a href=&#34;https://coin.dance/nodes&#34;&gt;https://coin.dance/nodes&lt;/a&gt; 49. Mining Pool Stats - En – Braiins Academy, &lt;a href=&#34;https://academy.braiins.com/en/mining-insights/mining-pool-stats/&#34;&gt;https://academy.braiins.com/en/mining-insights/mining-pool-stats/&lt;/a&gt; 50. Charts - Hashrate Distribution - Blockchain.com, &lt;a href=&#34;https://www.blockchain.com/pools&#34;&gt;https://www.blockchain.com/pools&lt;/a&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2025-09-04T17:51:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs25auwwd8adsye5w4xwgp7aqtgd3s4yed5yffgf7lh65tdmvmkfrgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc57m5j6</id>
    
      <title>Nostr event nevent1qqs25auwwd8adsye5w4xwgp7aqtgd3s4yed5yffgf7lh65tdmvmkfrgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc57m5j6</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs25auwwd8adsye5w4xwgp7aqtgd3s4yed5yffgf7lh65tdmvmkfrgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc57m5j6" />
    <content type="html">
        &lt;img src=&#34;https://blossom.primal.net/fab6098e44ef78d3905faf59c659c1d45b6af9981fe2f0a463d640c78ce00277.png&#34;&gt;  
    </content>
    <updated>2025-09-04T16:55:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0rm985f0qxyzj7vj77f2p2e295hrdhh0gwg978csk8yd0lyfasvszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcj8sse8</id>
    
      <title type="html">Cast iron is objectively better for steak than stainless! If you ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0rm985f0qxyzj7vj77f2p2e295hrdhh0gwg978csk8yd0lyfasvszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcj8sse8" />
    <content type="html">
      Cast iron is objectively better for steak than stainless! If you don&amp;#39;t agree with me, you&amp;#39;re wrong and stupid and probably a spook &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-04T01:07:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw24ctew52v5cpt8wdkuw5570w0qyej5zrkcrlyqcgysgwj4ek4kgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jch2pp6w</id>
    
      <title type="html">Fuck, I guess that&amp;#39;s another $10...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw24ctew52v5cpt8wdkuw5570w0qyej5zrkcrlyqcgysgwj4ek4kgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jch2pp6w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyqsq5t39hz2pk3lwf7qelsyht20yq0fq4wkguhemlgds6l4g8l4gpr9mhxue69uhhqun9d45h2mfwwpexjmtpdshxuet59uqxhlzr&#39;&gt;nevent1q…hlzr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Fuck, I guess that&amp;#39;s another $10...
    </content>
    <updated>2025-09-03T22:24:35&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyqsq5t39hz2pk3lwf7qelsyht20yq0fq4wkguhemlgds6l4g8l4gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9m0gfd</id>
    
      <title type="html">You have complete and total control over your mempool. It exists ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyqsq5t39hz2pk3lwf7qelsyht20yq0fq4wkguhemlgds6l4g8l4gzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9m0gfd" />
    <content type="html">
      You have complete and total control over your mempool. It exists only insofar as you allow it to exist. It looks like what you allow it to look like.&lt;br/&gt;&lt;br/&gt;At the very same time, you have zero control over my mempool. It doesn&amp;#39;t even know you exist. Your mempool is irrelevant to mine. &lt;br/&gt;&lt;br/&gt;Both of our mempools are irrelevant to the timechain. &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-03T22:23:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdjymgcqn33nq55d0rwheemar88rjejhdzmqrk45gyyvt34t64fzqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcp6g36c</id>
    
      <title type="html">https://media.tenor.com/vUR2tpstZAgAAAAM/squidward-beggar.gif</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdjymgcqn33nq55d0rwheemar88rjejhdzmqrk45gyyvt34t64fzqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcp6g36c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp9gpff5yv9knzgvte4gacpc80mzacdypu0u4u7yyt79qym6q2p9spzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhg5vew0s&#39;&gt;nevent1q…ew0s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://media.tenor.com/vUR2tpstZAgAAAAM/squidward-beggar.gif&#34;&gt;  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-03T22:09:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszg86mft5gu26z4vksea8gy7238dc28q88k3dqvcnujef4k9lwwxqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jczazkzs</id>
    
      <title type="html">Every time I see the filter debate on my feed I buy $10 worth of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszg86mft5gu26z4vksea8gy7238dc28q88k3dqvcnujef4k9lwwxqzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jczazkzs" />
    <content type="html">
      Every time I see the filter debate on my feed I buy $10 worth of Bitcoin.  Send help &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-09-03T22:00:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsygddcsr3u54p7x56znvfgfdkqvgg3jw563jterszjc3ue7kxqnfgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcj9dhwz</id>
    
      <title type="html">For sure. And against, to be fair. More often than not, it&amp;#39;s ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsygddcsr3u54p7x56znvfgfdkqvgg3jw563jterszjc3ue7kxqnfgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcj9dhwz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfraw7cuxt7ywzeymeyvsglm989vyn25a3v9gjvkuwtxv8scdcrugpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhg03reu0&#39;&gt;nevent1q…reu0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;For sure.  And against, to be fair.  More often than not, it&amp;#39;s like watching a brawl at the looney bin &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-08-19T14:57:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsv3rs38468vut7p73gv0ehy020wq4c8kj6shap87wv4kft5w43z8czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8hupye</id>
    
      <title type="html">Why does the spam debate always spark the most toxic behavior and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsv3rs38468vut7p73gv0ehy020wq4c8kj6shap87wv4kft5w43z8czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc8hupye" />
    <content type="html">
      Why does the spam debate always spark the most toxic behavior and dumbest takes? &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-08-19T13:42:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz4vg9xn4gmmmutvza9wddrakepnn0t576a9m0ru97pztlk6as0kszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc25mawl</id>
    
      <title type="html">123</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz4vg9xn4gmmmutvza9wddrakepnn0t576a9m0ru97pztlk6as0kszypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc25mawl" />
    <content type="html">
      123 &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-08-13T22:53:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgyqduvpxjtgktqxlml2dxz3dtl52tufzcfha0vqzffcyfmjyq32czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcm5xyyv</id>
    
      <title type="html">Thank you! My wife gets all the credit there. &amp;#34;Clary ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgyqduvpxjtgktqxlml2dxz3dtl52tufzcfha0vqzffcyfmjyq32czypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jcm5xyyv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfaq6ulvxt2zvw6drqf2vyvq8j4tt520fghfp7tuwkpyedmm9dyks9lvxja&#39;&gt;nevent1q…vxja&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thank you! My wife gets all the credit there. &amp;#34;Clary Sage&amp;#34; from SW I believe 
    </content>
    <updated>2025-08-10T15:49:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9evxrak783vx8hhfgcpm9jasqall84psmaplcnl4few6steul4jgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9f0eep</id>
    
      <title type="html">First DIY project ever in our first home. Nothing crazy, but ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9evxrak783vx8hhfgcpm9jasqall84psmaplcnl4few6steul4jgzypqtmnqg3zxe34yaq0ae80larnzxmxu0rp7s3j0usx62mu9dqr7jc9f0eep" />
    <content type="html">
      First DIY project ever in our first home. Nothing crazy, but first time doing anything like this, and pretty proud with how it turned out 🙂 &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/370a1af466f5f7ca7bcc2feadd115e2c7058538a396e37f4574d2e4385b0e91d.jpg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/966080d5a120d7b5e79117fea81a4d7dc5491de54985dad2759b34924c4e4c8a.jpg&#34;&gt; 
    </content>
    <updated>2025-08-10T02:29:08&#43;02:00</updated>
  </entry>

</feed>