<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2024-03-15T05:40:33Z</updated>
  <generator>https://njump.cloud.vinney.xyz</generator>

  <title>Nostr notes by Cody</title>
  <author>
    <name>Cody</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://njump.cloud.vinney.xyz/npub1m3p39ertpcuzzpw32s5scsv7vp48xgqye4eqmmceyyqtj9dphxkqz7mn6s.rss" />
  <link href="https://njump.cloud.vinney.xyz/npub1m3p39ertpcuzzpw32s5scsv7vp48xgqye4eqmmceyyqtj9dphxkqz7mn6s" />
  <id>https://njump.cloud.vinney.xyz/npub1m3p39ertpcuzzpw32s5scsv7vp48xgqye4eqmmceyyqtj9dphxkqz7mn6s</id>
  <icon>https://avatars.githubusercontent.com/u/339075?v=4</icon>
  <logo>https://avatars.githubusercontent.com/u/339075?v=4</logo>




  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsvvxww7phz7l30zh6vk6hm0rglawl8rzdf0g2wxtfae4swje28zwszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6ch863cs</id>
    
      <title type="html">Emergency services should stop using Twitter to share ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsvvxww7phz7l30zh6vk6hm0rglawl8rzdf0g2wxtfae4swje28zwszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6ch863cs" />
    <content type="html">
      Emergency services should stop using Twitter to share information. Potentially lifesaving information shouldn’t be monetized or held behind a login.&lt;br/&gt; &lt;img src=&#34;https://nostrcheck.me/media/dc4312e46b0e382105d154290c419e606a732004cd720def192100b915a1b9ac/2f5c2d209734c536f209573fd7135809e178479bfe038bd385a9ee4a430f8642.webp&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://nostrcheck.me/media/dc4312e46b0e382105d154290c419e606a732004cd720def192100b915a1b9ac/63dfb7487a418d3f5368bc7418cc483a6a83e9829b2ed1a112eb9913fd46d771.webp&#34;&gt; 
    </content>
    <updated>2024-07-25T00:53:41Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsysgc2lpf3lpgnfzcanl2a7letkr0du425s5e9wnzgfxtcqlmwe5qzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cc2lrl7</id>
    
      <title type="html">Quoting this for myself so that I remember to go add my tool once ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsysgc2lpf3lpgnfzcanl2a7letkr0du425s5e9wnzgfxtcqlmwe5qzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cc2lrl7" />
    <content type="html">
      Quoting this for myself so that I remember to go add my tool once it’s in a state fit for public consumption.&lt;br/&gt;&lt;br/&gt;(For anyone curious, it’s a little self-contained executable that can let you browse and, eventually, post to, a single relay. Basically me making a web-based, SSR Nostr client that works just like I want.)&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;/note1h5a5uswq2crnmezme6zqzqa9dxdj86ye70ty4tntr0gc9832r8lskuk6jp&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1h5a…k6jp&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;a href=&#34;https://asaitoshiya.github.io/nostr-toybox/&#34;&gt;https://asaitoshiya.github.io/nostr-toybox/&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2024-06-07T22:35:40Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqspqqaxu346pzqgcfml6jcpnlghes3jhekgfl3qdczu7msg7azm6sszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cv4fm2j</id>
    
      <title type="html">[1]: Why include metadata? Well, the alternative would be for ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqspqqaxu346pzqgcfml6jcpnlghes3jhekgfl3qdczu7msg7azm6sszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cv4fm2j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrkskp8tefule4uzfqx6tj0nzealnf2key9g25qlj8dudvgdfe5pg5z6gx9&#39;&gt;nevent1q…6gx9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;[1]: Why include metadata? Well, the alternative would be for Nostr to constantly be sending your web history to relays as you browse the majority of sites without any comments on them. Metadata lets you opt in. And could let sites control (w/ optional client support) which comments/relays appear by default. Would probably be good to have it specify a canonical URL so all discussions end up w/ the same tag, too. 
    </content>
    <updated>2024-06-02T19:05:14Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsrkskp8tefule4uzfqx6tj0nzealnf2key9g25qlj8dudvgdfe5pgzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6chxvggg</id>
    
      <title type="html">Idea: a #nostr event kind for leaving a comment on a web page. ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsrkskp8tefule4uzfqx6tj0nzealnf2key9g25qlj8dudvgdfe5pgzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6chxvggg" />
    <content type="html">
      Idea: a #nostr event kind for leaving a comment on a web page.&lt;br/&gt;&lt;br/&gt;Web pages could embed some metadata[1] to say “discuss this on Nostr” and plugins could query known/approved relays for comments.&lt;br/&gt;&lt;br/&gt;Could include a “selection” metadata to reply to a particular part of the content.&lt;br/&gt;&lt;br/&gt;#nostrdev
    </content>
    <updated>2024-06-02T19:02:10Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsvx9wlrvkp2wwdyexn88uk4guqz022elesjr2k8au4zj8wua25mzqzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cfwgzsj</id>
    
      <title type="html">Not exactly sure how to handle it but … rate limiting that ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsvx9wlrvkp2wwdyexn88uk4guqz022elesjr2k8au4zj8wua25mzqzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cfwgzsj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf7897nszr9v8h26knxm2hfqwvuurjzuxkgvaued5rqy3wt9a28ts6ffm80&#39;&gt;nevent1q…fm80&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Not exactly sure how to handle it but … rate limiting that doesn’t break the spec?&lt;br/&gt;&lt;br/&gt;Ex: IIRC, nos.lol would “rate limit” my queries by&lt;br/&gt;1) sending a NOTICE to “slow down”. (Notably absent, any subscription ID.)&lt;br/&gt;2) NOT sending an EOSE, CLOSE, or any events for the query that caused triggered the limit.&lt;br/&gt;&lt;br/&gt;… Which can make a naive client hang forever waiting for messages that are never coming. 
    </content>
    <updated>2024-05-30T22:19:10Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsqwnuym8m8yept7zjvwczsa06yexcnmwp3vpztqqz27ap5dwrmg7czyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cl38hnt</id>
    
      <title type="html">Trump found guilty on 34/34 charges of falsifying business ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsqwnuym8m8yept7zjvwczsa06yexcnmwp3vpztqqz27ap5dwrmg7czyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cl38hnt" />
    <content type="html">
      Trump found guilty on 34/34 charges of falsifying business records re: paying hush money to Stormy Daniels. 🎉 &lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.npr.org/2024/05/30/nx-s1-4977352/trump-trial-verdict&#34;&gt;https://www.npr.org/2024/05/30/nx-s1-4977352/trump-trial-verdict&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Now, when is sentencing? ⏳ 
    </content>
    <updated>2024-05-30T21:29:40Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsd2axhf0rxc845hfhatrvskn8azy5n722qsjvrx5ew6257lna48kczyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cdqqxtx</id>
    
      <title type="html">LOL. Old enough to remember when avoiding centralized bank ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsd2axhf0rxc845hfhatrvskn8azy5n722qsjvrx5ew6257lna48kczyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cdqqxtx" />
    <content type="html">
      LOL. Old enough to remember when avoiding centralized bank transaction fees was one of the big benefits touted by bitcoiners.&lt;br/&gt;&lt;br/&gt;[insert Pepperidge Farm Remembers meme here]￼&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;/note10uv7uwynw24f55wy3yf2d70nrgce0g6v99davq5gc54khc2fgstqvfjhuw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note10uv…jhuw&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Bitcoin fees are currently only a dollar, but niche programmers are suggesting to change the fundamental nature of bitcoin and increase its attack surface to make it more scalable… for people who don’t necessarily know or understand the trade offs of that scaling.&lt;br/&gt;&lt;br/&gt;Scaling is an important discussion, but everything is a trade off. I like many of the scaling discussions, but rushing them is another matter.&lt;br/&gt;&lt;br/&gt;It costs me $100 to buy a 1oz gold coin by mail, or to send signed documents internationally in a few days. Verification is expensive.&lt;br/&gt;&lt;br/&gt;The idea that global monetary verification should be super cheap inherently comes with security trade offs.&lt;br/&gt;&lt;br/&gt;All ideas should be evaluated carefully and come to major consensus. Otherwise change proposers risk a fork war. &lt;/blockquote&gt;
    </content>
    <updated>2024-05-12T21:55:02Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqs2fn40cls57dyula04r6ht2q9kpjf2jjdr4se72dn8gz79gglccuszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cgautwp</id>
    
      <title type="html">Mutation is just inherently more complicated than storing ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqs2fn40cls57dyula04r6ht2q9kpjf2jjdr4se72dn8gz79gglccuszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cgautwp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs857cydrx3s3xssfu5steuwq6p456x8d0wcqmzn9es773t4t8qetglw6782&#39;&gt;nevent1q…6782&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Mutation is just inherently more complicated than storing immutable events. If someone is storing a new immutable event every 100ms they’re easy to spot as a potential spammer/abuse.&lt;br/&gt;&lt;br/&gt;If they’re replacing an event every 100ms and a server naively just deletes old versions, now you don’t have a record of how much they’re (ab)using your resources.&lt;br/&gt;&lt;br/&gt;Plus, a big benefit of signed events is holding people (or at least, pubkeys) accountable for what they’ve posted. If they can just edit it out of history, that is lost.&lt;br/&gt;&lt;br/&gt;For that reason, my FeoBlog system disallowed mutability. But, that was super frustrating when I would inevitably discover a typo in what I just posted. So, while it’s more complicated, I’m glad that Nostr has a solution there.&lt;br/&gt;&lt;br/&gt;But in my Nostr relay implementation, I keep older versions of mutable events so that you can see previous versions that a user posted. I’m keeping the receipts. 😉 
    </content>
    <updated>2024-05-08T22:07:39Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsvp32e5cetq4jxzma6dalxzeqkjsd2t25gaz7vvpwh8leflnztj3czyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cjk8xst</id>
    
      <title type="html">And now I’ve added HTTP Range support. ❤️ to the axum-range ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsvp32e5cetq4jxzma6dalxzeqkjsd2t25gaz7vvpwh8leflnztj3czyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cjk8xst" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqyeau2djwn4xg3jkxeyn8fs04zg6wsduq6ve04caksj9elav2cxgg537dq&#39;&gt;nevent1q…37dq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;And now I’ve added HTTP Range support.&lt;br/&gt;&lt;br/&gt;❤️ to the axum-range crate which made this much simpler. (Though I did have to delve deeper into Rust async than I have before. But I was happy to learn more there.)&lt;br/&gt;&lt;br/&gt;Here’s a sample video which I saw making the rounds on Mastodon earlier this week:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://nfnitloop.com/nostr/files/fb8e82bed22cf9c8ee39ef2898970beee6fec7ca9068e1506a061f22f5ec1ae7/&#34;&gt;https://nfnitloop.com/nostr/files/fb8e82bed22cf9c8ee39ef2898970beee6fec7ca9068e1506a061f22f5ec1ae7/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Note that only the first part of the video is fetched. You can jump past that and the server will start loading from the exact point you jump to.&lt;br/&gt;&lt;br/&gt;The algorithm the server uses to answer these range requests could also be implemented client-side. (Say, as the Blob interface in the browser.) I’m just not implementing a client. (Yet. 😉)
    </content>
    <updated>2024-05-04T04:08:39Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsdjykjl8qh5eq5eu7ata42swqfgnsaf32zp9xde7ademy5reulhtczyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cmvsk5r</id>
    
      <title type="html">That’s one of the big reasons I started writing my own relay: ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsdjykjl8qh5eq5eu7ata42swqfgnsaf32zp9xde7ademy5reulhtczyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cmvsk5r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsys3u3e3d9lexuawe57zfhjxpqlfl05u6csrydayued6zhukc6y5q44a8m0&#39;&gt;nevent1q…a8m0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;That’s one of the big reasons I started writing my own relay: &lt;br/&gt;&lt;a href=&#34;https://github.com/nfnitloop/yastr?tab=readme-ov-file#yastr&#34;&gt;https://github.com/nfnitloop/yastr?tab=readme-ov-file#yastr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;If you make a distributed system that’s open to everyone all the time, you’ll get inundated with spam/trolling/bots/abuse. IMO a better solution is to let it be open to read, but restricted to write. People can quote and reply to content but it doesn’t mean I have to see it if I don’t want to. 
    </content>
    <updated>2024-04-28T04:52:59Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsqyeau2djwn4xg3jkxeyn8fs04zg6wsduq6ve04caksj9elav2cxgzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cwlzd2z</id>
    
      <title type="html">Alright, #nostr / #nostrdev folks, I&amp;#39;ve got my implementation ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsqyeau2djwn4xg3jkxeyn8fs04zg6wsduq6ve04caksj9elav2cxgzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cwlzd2z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs09arl5cpyj33kr38sjfjdc3eceuy94h73rjcdwcun85tteassp0ck005hq&#39;&gt;nevent1q…05hq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Alright, #nostr / #nostrdev folks, I&amp;#39;ve got my implementation of multipart NIP-95 files up here:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/NfNitLoop/yastr/blob/main/src/server/nip95.rs&#34;&gt;https://github.com/NfNitLoop/yastr/blob/main/src/server/nip95.rs&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;(Yes, it&amp;#39;s very messy. I just saw all the TODOs which I&amp;#39;ve already done. 😆)&lt;br/&gt;&lt;br/&gt;And I&amp;#39;ve got a little tool to upload multi-part files here: &lt;a href=&#34;https://github.com/nfnitloop/nostr-cli/&#34;&gt;https://github.com/nfnitloop/nostr-cli/&lt;/a&gt;  (The `nt upload` command.)&lt;br/&gt;&lt;br/&gt;Since clients might not know how to put together multipart files yet, my relay (wss://www.nfnitloop.com/nostr/) also makes them available via HTTP. For example:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.nfnitloop.com/nostr/files/bee3454df946e79724b0ec972242ba2d2e3a1fc185931a7a45def81a5ffb194c/&#34;&gt;https://www.nfnitloop.com/nostr/files/bee3454df946e79724b0ec972242ba2d2e3a1fc185931a7a45def81a5ffb194c/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;There is room for space-saving in the storage implementation. If this takes off I&amp;#39;d want to store the BLOBs in binary instead of Base64. And I&amp;#39;d probably want to dedupe whole files so that we don&amp;#39;t end up having to store multiple copies of them if multiple people upload them. BUT, that can come later without changing the public interface.&lt;br/&gt;&lt;br/&gt;Before *that*, I want to implement HTTP range requests to show that the blockSize metadata allows a client or server to efficiently fetch bytes from a known offset. That way you could, for example, scrub to a certain position in a video without having to download all the bytes up to that point.
    </content>
    <updated>2024-04-27T02:19:36Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsx2ca6dp9nt9gyt3zklq0fp5awdsve0swfclykp42cug8hl8xstlszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cxzm6ue</id>
    
      <title type="html">It’s not yet super optimized. Making sure the rules around ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsx2ca6dp9nt9gyt3zklq0fp5awdsve0swfclykp42cug8hl8xstlszyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cxzm6ue" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2e4lup6y7lhw0u8l5kseuvayatap7zd95ldcg2yxa55sup85rw7sc7eexj&#39;&gt;nevent1q…eexj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It’s not yet super optimized. Making sure the rules around accepting such messages and reassembling them are working well first.&lt;br/&gt;&lt;br/&gt;Optimization of the implementation itself can come in a later iteration, without changing the public interface.&lt;br/&gt;&lt;br/&gt;Plus, any implementation details there will probably be specific to the relay implementation. Happy to optimize mine to be an example to follow, but I don’t imagine it’ll just be a copy/paste to add it to other relays.&lt;br/&gt;&lt;br/&gt;The ideas I have for optimization are basically: deconstruct the kind 1064 JSON messages so you can store the blob as binary instead of base64. (This is done transparently on the server. It still has to reconstruct and serve text JSON events when they’re requested, since Nostr protocol requires it.)&lt;br/&gt;&lt;br/&gt;You can do that at the event level and save some space. And it’s the simpler implementation. But, if you expect people might re-post the same content, an implementation that can reassemble the full file and store that in a content-addressable store would be even better. But that gets more complicated with multipart files. (Can’t decode the whole blob and verify and store it until all messages are present.)
    </content>
    <updated>2024-04-22T14:37:31Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqs09arl5cpyj33kr38sjfjdc3eceuy94h73rjcdwcun85tteassp0czyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6crny8v2</id>
    
      <title type="html">I’ve got an experimental implementation of multipart nip-95 ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqs09arl5cpyj33kr38sjfjdc3eceuy94h73rjcdwcun85tteassp0czyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6crny8v2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspufzz4gpdr27aw5wvk44rmewgw3cf42kek4vt3eev9zqj6092tac6xftu0&#39;&gt;nevent1q…ftu0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I’ve got an experimental implementation of multipart nip-95 files working. Hope to cleans it up and have it on my server for folks to check out this week. 
    </content>
    <updated>2024-04-22T14:11:27Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqszvvhkw3x4hahvqy7ftukyle9l33e50vwamsckzuuuzj6xjpyksxqzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cvsgmdd</id>
    
      <title type="html">I’m writing my own Nostr client. (Not entirely from scratch. ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqszvvhkw3x4hahvqy7ftukyle9l33e50vwamsckzuuuzj6xjpyksxqzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cvsgmdd" />
    <content type="html">
      I’m writing my own Nostr client. (Not entirely from scratch. There seem to be pretty nice libraries out there in TS and Rust!)&lt;br/&gt;&lt;br/&gt;But I found 2 annoying characteristics of the relay protocol:&lt;br/&gt;&lt;br/&gt;The “notice” message isn’t tied to any particular request or subscription.  But some relays use it as a way to give error messages.&lt;br/&gt;&lt;br/&gt;Ex: I found one relay would answer my search subscription with a notice “error: slow down”. Then it never resolves the original request. (Despite IIRC the NIP saying that you should always close a subscription.)&lt;br/&gt;&lt;br/&gt;So now I need to add special cases to handle that relay/message. And probably a timeout for subscriptions. Which you can’t do in the general case. But I guess if you don’t get an event or an EOSE within some time you can assume the subscription failed to start?&lt;br/&gt;&lt;br/&gt;But how do I know when I’ve “slowed down” enough? Why wouldn’t the relay just throttle its responses to me if it wants me to go slower? 😣&lt;br/&gt;&lt;br/&gt;OTOH I guess you have to do this kind of defensive programming for any protocol. But would be nice if there were a standard way to handle cases like this. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;#nostrdev
    </content>
    <updated>2024-04-21T20:55:22Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsgg8c06j06xzddjp5qztc6nyvw45knw4rnejgr352vagqjzct5e4qzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6ceqtsne</id>
    
      <title type="html">Where’s the #Nostr #queer community? I need less #btc and more ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsgg8c06j06xzddjp5qztc6nyvw45knw4rnejgr352vagqjzct5e4qzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6ceqtsne" />
    <content type="html">
      Where’s the #Nostr #queer community? I need less #btc and more #LGBTQ. 🏳️‍🌈🏳️‍⚧️👋🏼 
    </content>
    <updated>2024-03-29T18:07:53Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsdm986kw08hxp6d6vgzn0wzt99nqhnqzxt5kp8lrtzqtfm76tc27qzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cf0js4y</id>
    
      <title type="html">Er, NIP-5. I had too many tabs open. 😅</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsdm986kw08hxp6d6vgzn0wzt99nqhnqzxt5kp8lrtzqtfm76tc27qzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cf0js4y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszmu29wc0vwl0fnhh7r6anhlf8c47kzc354gx3kwuzhfwnnwrlj3s4shg7u&#39;&gt;nevent1q…hg7u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Er, NIP-5. I had too many tabs open. 😅 
    </content>
    <updated>2024-03-15T05:55:01Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqszmu29wc0vwl0fnhh7r6anhlf8c47kzc354gx3kwuzhfwnnwrlj3szyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cla0xnt</id>
    
      <title>Nostr event nevent1qqszmu29wc0vwl0fnhh7r6anhlf8c47kzc354gx3kwuzhfwnnwrlj3szyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cla0xnt</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqszmu29wc0vwl0fnhh7r6anhlf8c47kzc354gx3kwuzhfwnnwrlj3szyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cla0xnt" />
    <content type="html">
      Woo, got my NIP-19 checkmark. ✅ 
    </content>
    <updated>2024-03-15T05:41:54Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsgclywtwq4zf2wtwcykyvnsy96ar5z5lvu9z9le2hcxch70p6y8jqzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6c9773d0</id>
    
      <title type="html">Nope! Neither.</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsgclywtwq4zf2wtwcykyvnsy96ar5z5lvu9z9le2hcxch70p6y8jqzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6c9773d0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswsft7p29dxy0vxz3mqwy3m88wflsa4aysgyqdwwge3q7tjf7sufs5fez0m&#39;&gt;nevent1q…ez0m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Nope! Neither.
    </content>
    <updated>2024-03-15T02:53:28Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsxgdrp0ft5tl2gq9c3uw74f4dg067ysyqgf2pcsesj54ya7ewqx4gzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6c0236gr</id>
    
      <title type="html">I do not. I assume I need to add a wallet address?</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsxgdrp0ft5tl2gq9c3uw74f4dg067ysyqgf2pcsesj54ya7ewqx4gzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6c0236gr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrvv4u07f37xq9cqgm3jmpd4262djtepqyan9jdv24qmpeczlxsysn7mryh&#39;&gt;nevent1q…mryh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I do not. I assume I need to add a wallet address? 
    </content>
    <updated>2024-03-15T02:48:59Z</updated>
  </entry>

  <entry>
    <id>https://njump.cloud.vinney.xyz/nevent1qqsz0l7v56gfm4qgxsv6k8wtypu5v8lqd4s7wx086dxgsw08lfv6gvgzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cmf8x6c</id>
    
      <title type="html">Am I reading the documentation for the socket protocol for relays ...</title>
    
    <link rel="alternate" href="https://njump.cloud.vinney.xyz/nevent1qqsz0l7v56gfm4qgxsv6k8wtypu5v8lqd4s7wx086dxgsw08lfv6gvgzyrwyxyhydv8rsgg9692zjrzpnesx5ueqqnxhyr00rysspwg45xu6cmf8x6c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfq06d93s4952ee9xnghvc7zrje7ey6e95mr70wts39p0k6qv7vwc96l4g5&#39;&gt;nevent1q…l4g5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Am I reading the documentation for the socket protocol for relays correctly? Does it always fall back to streaming mode after you run a search? So the way to just do a search without streaming is to cancel the subscription after you’ve received the notice that you’re entering streaming mode? ￼
    </content>
    <updated>2024-03-15T02:17:38Z</updated>
  </entry>

</feed>