Avatar
daniele
7bdef7be22dd8e59f4600e044aa53a1cf975a9dc7d27df5833bc77db784a5805
Working on https://fevela.me, https://nstart.me, https://njump.me, https://oracolo.me and other inspiring nostr projects. I love to build helpful things that people are pleased to use, mixing tech, design, usability and accessibility.

nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft purplepag.es is experiencing issues, Postgres seems out of connections

I would say no, I vote for a column preference (icon that toggles the view) at the top-right.

nostrapps.com has a curated archive, but it's not updated frequently.

The app is not mine, it is developed by nostr:npub1lvzt92km8nua8wt675kn74zwz9v7uxjts4yrx32f6yahetz0sa5s7szg03.

Testing pidgeon.lol

This note is scheduled in 3 minutes

Happy to ear you like it.

The profiles definitely have a bug, which appeared after the cache was added. I have to find the culprit.

The slow feed update of the feed is also (ironically) related to the cache, perhaps the last version improved it, but the fix battle is not ended yet.

nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn any thoughts about Solid.js, compared to Svelte?

Are you using https://fevela.me and have you encountered any bugs or have a suggestion for a feature that absolutely must be added? Let me know!

You are right, clients should use nprofile1 too; but this less problematic since profiles are "stable" and the kind:0 are usually spread across many known general purpose relays, while note locations can change during the time, and are related to the user's outbox preferences.

Anyway, the OP's note has a `q` tag without any relay detail, so it is useless for what I'm talking about, retrievability.

nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s is there a reason why Damus use note1 for sharing?

If you don't understand or have any doubts, ask an AI.

πŸ˜…

Replying to Avatar fiatjaf

Nostr Devtools: https://chromewebstore.google.com/detail/nostr-devtools/ogoaodeklpfbboeopebgdggammkcndcp

Get clear insight of what relays are serving what subscriptions and what events came from where.

Everything is filterable by arbitrary strings, groupable by relay, event, subscription or by any arbitrary Nostr filter elements (click on them, or Ctrl+click to add to existing).

It only captures stuff while the devtools is open, so open it first then refresh the page to use, otherwise you'll get incomplete data.

Oh wow, I love this idea of Nostr infecting chrome.

And it is pretty useful, too.

Replying to Avatar fiatjaf

https://fevela.me/ now supports https://github.com/dtonon/fevela/pull/40, which is better than blurhash. https://evanw.github.io/thumbhash/

You can see it in action on nostr:npub1e49nhp86q24g66jp9wahzmerv79dum8y4dpv4dt0snvjwlkynf4qnzsm0m if your eyes are faster than your internet.

(Or throttle the connection speed in your browser devtools network panel, this was a good idea.)

Actually after browsing through a feed of blurhashes (on Jumble) and a feed of thumbhashes I've changed my mind, I think the difference is absurd and thumbhash is not only slightly better, it's astronomically better.

nostr:npub1syjmjy0dp62dhccq3g97fr87tngvpvzey08llyt6ul58m2zqpzps9wf6wl would you add it to Jumble? nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s please jump in the bandwagon too! nostr:npub1n0sturny6w9zn2wwexju3m6asu7zh7jnv2jt2kx6tlmfhs7thq0qnflahe? nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z? nostr:npub1cesrkrcuelkxyhvupzm48e8hwn4005w0ya5jyvf9kh75mfegqx0q4kt37c? nostr:npub1yzvxlwp7wawed5vgefwfmugvumtp8c8t0etk3g8sky4n0ndvyxesnxrf8q?

Absolutely!

In my to-do list there is a NIP-05 update about this.

nostr:npub16lvpp8hyxetuuczk4kjx2vqxhwmyruc72r59ysmgrsnjg5rcz8kqk07j3k can you give me some details about the NIPs you use?

Are you using https://github.com/fanfares/NIP-108 ? Others?

Is there a Nostr solution for paywalled articles?

What about for a collection of articles (e.g., a blog section)?

#asknostr

Replying to Avatar Gzuuus

I'm excited to introduce Nostr Social Duck, or just NSD, a library I've been crafting over the last two weekends that brings sophisticated social graph analysis, even to hardware that doesn't have the luxury of abundant memory. This library leverages DuckDB to perform graph operations over Nostr social graphs built from Contact List events (kind 3), and it's designed to run on all sorts of hardware, from low-end devices to powerful servers.

The inspiration came from limitations I encountered with nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk excellent nostr-social-graph library. While powerful, loading entire social graphs into memory becomes challenging, specially on resource constrained devices like older computers, mobile devices, Raspberry Pis, and similar environments. Once the graph grows, memory constraints can cause performance issues or outright failures.

The recent launch of Relatr and its inclusion in the Umbrel community store (thanks to nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr ) got us thinking: how could we enable anyone to run this without being constrained by their hardware? Since disk storage is cheaper than memory, how we can balance the tradeoffs πŸ€”... That's when DuckDB emerged as the perfect solution

DuckDB is quite a cool piece of software that's been around for some time with an amazing team committed to open source. It's an embedded, in-process database designed to run on all sorts of hardware. What makes DuckDB particularly compelling for our use case are its advanced memory management capabilities. When complex queries require more memory than available, DuckDB automatically spills to disk, ensuring queries complete even if there is not enough memory, rather than crash. No memory, no problem.

This feature alone makes DuckDB a strong choice, but there's more. Its advanced analytic SQL capabilities make graph analysis operations possible and performant. NSD already provides methods to get the shortest distance between pubkeys, along with a complementary method to find the shortest path that returns both the path and distance. You can define a root pubkey which creates a temporary table with all distances precomputed, making subsequent queries much faster.

The library also includes methods for social graph analysis, like, get the degree of a pubkey, how many inbound and outbound connections it has, which helps determine the weight of a pubkey in the graph. There are convenient methods to check if one pubkey follows another or if two pubkeys are mutual follows. As well thanks to DuckDB in the future we could use parquet files to distribute social graph data. You can find all the details in the repo.

We're currently refactoring Relatr to use NSD, and the results are impressive. By replacing the previous combination of nostr-social-graph library and SQLite database with DuckDB and NSD, we've eliminated the inefficiencies of having separate data sources. Complex queries like profile search now benefit from analytical SQL directly in the search algorithm, reducing data transfer between the program and database and returning more relevant results efficiently.

I did some naive benchmarking to understand how it performs compared to the nostr-social-graph library, and it behaves pretty well. Both libraries are pretty close in performance when there's a root pubkey set in NSD.

This effort aligns with the ongoing #WoTathon organized by nostr:npub1healthsx3swcgtknff7zwpg8aj2q7h49zecul5rz490f6z2zp59qnfvp8p , as we believe NSD provides fundamental primitives for performing graph operations on everyone's hardware without sacrificing simplicity of use and deployment.

The library is available now and can be integrated into any js project:

```bash

bun add nostr-social-duck

# or

npm install nostr-social-duck

```

As we finalize the Relatr refactor, we'll share detailed insights about the improvements and performance gains. The combination of Nostr's decentralized social protocol with DuckDB's efficient analytics creates a powerful foundation for the next generation of social applications.

The library's repository: https://github.com/gzuuus/nostr-social-duck

Related DuckDD's blog posts:

- https://duckdb.org/2025/01/17/raspberryi-pi-tpch

- https://duckdb.org/2024/03/29/external-aggregation

- https://duckdb.org/2024/12/06/duckdb-tpch-sf100-on-mobile

If you like the project please consider supporting our work by zapping, or contribute to it's development

Cool, waiting for a demo! πŸ‘€

Uh thanks!

Btw, the UX of clicking on random micro icons is not optimal, using a modal with a simple list is more effective.

I would also add the possibility to check custom relays for a note's existence.

A direct download that bypasses the Play Store would be enough.

nostr:npub1cn4t4cd78nm900qc2hhqte5aa8c9njm6qkfzw95tszufwcwtcnsq7g3vle could you evaluate this?

I'm following you and wanted to mention you for the same reason.

I like the idea (yours too) of relays as something people move between.

I don't know if giving them different names would actually help, maybe it's better to use attributes/adjectives.

Replying to Avatar fiatjaf

If you speak any of the languages in this page https://lang.relays.land/ and you've been looking all your life for a reasonably safe relay that only accepts notes in your language then you're invited to try it now.

Let me know so I can add you and then you can invite others.

Japanese is always the most enthusiastic Nostr community!

NIP-11 includes "payment_required" limitation, so it should be quite easy to highlight that.

But, redirecting to the landing page is the only way to expose the payment flow.

As a general rule, I agree.

But animation in a PFP is an incidental feature, actually a bug. Rendering a still image for gif/webp is not simple, often requires extracting the first frame or leverage some rendering exceptions to halt the animation. Better manage it at the source.

I still prefer jpg over webp: the former is not controlled by Google, offer legacy support and sometime has better compression.

Finally, I'm not interested in the animation capabilitiesfor a PFP.

> It is not recommended that users publish these encrypted private keys to nostr, as cracking a key may become easier when an attacker can amass many encrypted private keys.

https://github.com/nostr-protocol/nips/blob/master/49.md#recommendations

In addition to this, ncrypt password should still have at least 128 bits of entropy, which typically translates to a password of 17 characters or more using a diverse character set.

nostr:nprofile1qqswuyd9ml6qcxd92h6pleptfrcqucvvjy39vg4wx7mv9wm8kakyujgpypmhxue69uhkx6r0wf6hxtndd94k2erfd3nk2u3wvdhk6w35xs6z7qgwwaehxw309ahx7uewd3hkctcpypmhxue69uhkummnw3ezuetfde6kuer6wasku7nfvuh8xurpvdjj7a0nq40

Yes, many apps assume that as soon they detect an extension the sign is immediate, and miserably fall with some sort of timeout if the user take some seconds to approve (or didn't approve at all).

I just discovered a fascinating thing.

I've been struggling to solve an internet problem at my parents home for several days, a router and some other stuff cannot connect to internet; the strange part is that my PC and my phone work. My first thought was related to the fact that I use a VPN, but this doesn't make much sense, since VPNs usually are the problem, as they add one more hop to the connection chain.

I did a lot of tests and at the end, exhausted, I decided to order a new cheap router to see if this was the culprit. Today I installed it, same exact problem, damn.

So I noticed that the modem has a diagnostic area with the usual ping and traceroute tools, and I tried them: "unknown host".

This is really crazy, all the WAN/LAN are down, the modem itself cannot see the internet, but with my PC I can connect around and shitpost on Nostr?

So I contacted my ISP and discovered that they suddenly, and without any alert (bastards), disabled the line because there was an unpaid invoice from months ago for an unknown reason, and they are not smart enough to use the credit card they already have to automatically pay it.

Here comes the most interesting part: how does a VPN bypass the administrative suspension on a line and give me free internet?

Did I exploit a huge hole in my ISP (and who knows how many others) infrastructure?

Can any networking guru explain this?