https://github.com/fiatjaf/nak now accepts human-readable date inputs to --ts, --since and --until:
~> nak event -ts 'two weeks ago' -c 'I bet Trump will dodge a bullet one of these days'
~> nak req -k 1 --since 'a month ago' --until 'July 1st'
Also it will automatically use a private key from NOSTR_PRIVATE_KEY if that is available in your environment, thanks to nostr:npub10npj3gydmv40m70ehemmal6vsdyfl7tewgvz043g54p0x23y0s8qzztl5h and nostr:npub1937vv2nf06360qn9y8el6d8sevnndy7tuh5nzre4gj05xc32tnwqauhaj6.
nak is really useful
Sure np, might message them on github later
Sorry, I take that back. It actually is clear with the examples by the end of NIP. Relays fault
I guess the spec is not very clear as it mentions "errors" only on NOTICE, maybe that's why most relay implementations do it that way
Oh ok got it. So errors then should be sent with CLOSED, rather than NOTICE + EOSE.
Yes, I'm writing a test and used an invalid hex for the error case. Did a little workaround to associate the NOTICEs to the EOSE. Nevermind! I was just saying I find it a bit odd not to follow the same pattern as EVENT, EOSE, etc
[
"NOTICE",
"ERROR: bad req: unexpected character in from_hex: 109"
]
No worries. Implementing a part of the Dart client test and wanted to assert the error came from a specific sub. I wonder why there is no ["ERROR",
Unfortunately relay implementations don't do that. Trying to process the error in the client
It's the only way of conveying errors
NIP-01 makes EVENT, EOSE and CLOSED send back the requested subscription ID, but not NOTICE. When you get an error you can't know which subscription it's from
Yessir! we'll get there
YouTube is absolutely trash for not only allowing, but recommending this!
RIP to those who fall for it.
Also.. AI is about to wreak havoc cuz this is decently good. https://video.nostr.build/65ef4e0c1a9dc3dc5a9342b12b08fe43f1f365a4985e3c2e2a51d31469418614.mp4
If you were not bullish enough on nostr, watch this
nostr:note1pdhp4uvls84mcurtwyh22x69ghym2vguegmylfdw5thecvqu755q4x4py8
nostr:npub149p5act9a5qm9p47elp8w8h3wpwn2d7s2xecw2ygnrxqp4wgsklq9g722q we need ig-like clients, anyone building it?
Sure, I'm talking about the present moment. Unlikely though, as much as I despise Google
To whomever built that app: if you're going to fork Amethyst at least please use your own app identifier and a different icon. It takes no effort. It's otherwise confusing to users, zapstore was showing it as an update to Amethyst
maybe or maybe not, i'm talking about an insurance market developing, risk has a price
Insurance market for ecash mints
Yea makes sense. I guess using NIP-50 for now
Dart > Javascript/Typescript
NIP-189 SQL queries
A new `sql` field is introduced for `REQ` messages from clients...
jk 😅
I see the problem but don't agree with the solution.
It's like wanting to stay poor so if you get robbed, thieves won't get much money from you.
Bad actors will always find ways to DoS if they want to.
The free market will fix this problem. What if custom web apps want to pay money for these "databases"? And we're preventing relays from finding a monetization scheme
An advanced query NIP could be discussed and implemented by more specialized relays, that are either subsidized or can charge money for access
Man, I'm all for fiddling around and learning. But should we limit nostr's capabilities because some people might want to fiddle building a relay without using a database? With all the stuff in the world you can fiddle with? I think we're trying to solve a different problem
I also don't know, but anyone making a relay implementation very easily = basically implies using an existing database (of which SQL is probably a majority).
The person who creates their own indices manually is an expert, and they probably should be using a proven product instead of fiddling around, no?
Maybe we should define "ultra-flexible" but having a powerful querying language encourages bad behaviors in developers...why? what do you mean by that?
Limited querying language is wasteful because we need to make multiple queries vs one, download tonnes of events when a few would suffice, make client side operations that should not happen, etc
Too fancy why?
Again my point about waste.
I think we could find the minimum common ground from a variety of query languages (sql, nosql, graphql), primitives that have emerged for most use cases. I'm not advocating for anything too sophisticated
The relay I wrote runs SQLite on Bun.js, it's crazy fast to the point that calls are non-blocking and all that on a $20 VPS.
If slight more complexity makes it bad for huge relays, then that's also a good thing
That's a great question, I am not sure. Maybe there are other ways of doing it without joins. Anything in that direction would help, queries on nostr are very primitive - so clients implement workarounds that are wasteful anyway, like data duplication and lots of extra queries that add processing and bandwidth
Yeah I was thinking the former: kind B claims to inherit from kind A. It is real inheritance but requires manual work (asking clients to include new kinds)
How about a `k` tag that declares inheritance?
In my kind 32267 I could add ["k", 30818] so then wiki clients can query for { kinds: [30818] } and { "#k": [30818] }
