Avatar
hzrd149
266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5
JavaScript developer working on some nostr stuff - noStrudel https://nostrudel.ninja - Blossom https://github.com/hzrd149/blossom - Applesauce https://hzrd149.github.io/applesauce

nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft did we end up settling on a NIP spec for both our implementations? I figure it wouldn't hurt to write a small npm package for this since it was pretty easy to do client side

oh yeah... nsite.lol is setup with a tor domain, so any app deployed there can be accessed over tor

I could, however the https certificate wouldn't work. Unfortunately its all about https 😞

nostr:npub1jcympy69pht7ptan39se4nd09e4q66qhey649uu3rczm2zh88c7s0n2890 on your latest episode you guys where talking about the new passport prime from nostr:npub1s0vtkgej33n7ec4d7ycxmwt78up8hpfa30d0yfksrshq7t82mchqynpq6j and mentioned building a nostr hardware signer app for the passport

As the developer of the only nostr app to integrate the original nostr-signing-device https://github.com/lnbits/nostr-signing-device I REALLY want to see this built and would be willing to help out in any way I can

I don't know rust and I generally only work with JavaScript in the web browser. But if it was possible to make it compatible with the web serial API then I would be more than happy to integrate it into #noStrudel

For everyone who is curious its mentioned around the 1 hour mark

https://www.fountain.fm/episode/pLbJGZI3nmaRtg3GeaBI

Just a heads up I rugged (removed) the next.nostrudel.ninja deployment. The hosting provider I was using (fleek) switch their login system to crypto wallets and I'm not able to login with my email anymore so I've stopped using them

If you want the daily changes you can find them on https://nsite.lol

New version of #noStrudel with some new features and a lot of cleanup under the hood

Most of this version was cleaning up the core of the app and building out the applesauce library

https://hzrd149.github.io/applesauce/

You can run it using docker using docker with "docker run --rm -p 8080:80 ghcr.io/hzrd149/nostrudel:0.42.0" or the update should be available on nostr:npub1aghreq2dpz3h3799hrawev5gf5zc2kt4ch9ykhp9utt0jd3gdu2qtlmhct and nostr:npub126ntw5mnermmj0znhjhgdk8lh2af72sm8qfzq48umdlnhaj9kuns3le9ll shortly

nostr:naddr1qvzqqqr4gupzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzfmhxue69uhkummnw3e82efwvdhk6tcqp3hx7um5wf6kgetv956ry6rmhwr

mirrored the stream to nostr 😀

nostr:naddr1qvzqqqrkvupzqcdevslary76xzmmfgtxre7kv24cquhjnnvl08fs52mfl9e6a2pnqyt8wumn8ghj7ur4wfcxcetjv4kxz7fwvdhk6tcqqa68xupnx5unjfl99vs

I've been thinking about testing this for a while but nostr:npub1h8nk2346qezka5cpm8jjh3yl5j88pf4ly2ptu7s6uu55wcfqy0wq36rpev appearance on the survival podcast is a great opportunity to test

nostr:nevent1qvzqqqqqqypzpw08v4rt5pj9dmfsrk0990zflfywwznt7g5zheap4eefgasjqg7uqy28wumn8ghj7ctvvahjuat50phjummwv5hsz9nhwden5te0v4jx2m3wdehhxarj9ekxzmny9uqzqxppwqppgwk3p2e8t6cu39668s0k2dw9dc6d9keq5hdt0fncqd8wcpdtk9

I created a nostr live stream that re-uses the HLS stream url from rumble

https://rumble.com/v5zytkw-guy-swann-and-jack-spirko-on-bitcoin-in-2025-epi-3599.html

nostr:naddr1qvzqqqrkvupzqcdevslary76xzmmfgtxre7kv24cquhjnnvl08fs52mfl9e6a2pnqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qqrhgumsxv6njwgz8d27p

Its difficult to discuss this over text, If you like I would be down to setup a voice call to chat. I've been getting more into V4V music and I think your the person who can answer some of my questions and I can answer your nostr questions 😀

yes, you could use a friends server. but I would guess thats much more difficult than publishing a nostr event

Replying to Avatar StevenB

RSS has solved this (not saying their isn't a nostr solution as well).

https://lnbeats.com/album/287e27fa-adc5-4762-956f-0282bba5ed77

https://cdn.kolomona.com/podcasts/lightning-thrashes/playlists/001-to-060-lightning-thrashes-playlist.xml

Here's a playlist nostr:npub15z2javq62eh2xpms7yew0uzqsk4dr7t3q3dq4903uuxdyw2ca3kstx6q95 put together of every song he's ever played on Lightning Thrashes. I'm currently working on the ability for you to save your playlists as an RSS feed to share with anyone. If you want create your own playlists, Sovereign Feeds is what Sir Libre used to build his feed and then he hosted it on his own server.

The issue with saving a playlist as an RSS feed is that I have to have a domain, and a server, and a https certificate for that server, and...

Where as if it was a nostr event it could just be signed and published to a relay

neither option is better UX for new users. but for existing users (and myself) its much easier to create and manage nostr events then it is to manage RSS feeds

nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr heads up in commits since 0b0aa6fc234e6a9c78826ce2e69adcf1c5f210c9 the input window is not parsing #hashtags correctly #bugreport

will be fixed next comment, I'm reworking how events are created :)

also its using a "K" tag instead of the standard lowercase "k" tag

Just finished a the first working version of the applesauce-loaders package

https://github.com/hzrd149/applesauce/tree/master/packages/loaders

The documentation is very sparse at the moment but the package exports a class called `ReplaceableLoader` that can be used to dynamically load any replaceable event (1xxxx, and 3xxxx) from any relay in a efficient manor.

In theory it also respects the relays limits because it uses rx-nostr under the hood to make the requests

Its all built on rxjs and the loader is simply a rxjs Subject that takes an AddressPointer as an input and outputs events it loads from relays

The cool part was figuring out how to make it load from the cache relays first, then the remote relays, and finally the fallback "lookup" relays

I ended up using a generator function, first time I've ever used one in javascript 😀

https://github.com/hzrd149/applesauce/blob/master/packages/loaders/src/loaders/replaceable-loader.ts#L32-L92

I'm really proud of this and how well it works, but I would appreciate any feedback from other nostr devs interested. I promise ill try to write better docs next week so the code is easier to read

You can see a working example of it over on https://blossomservers.com/reviews I doesn't look like much, its just loading profiles but it proves its working 😀

noStrudel uses the NIP-51 bookmark list kind 10003 and its been working pretty well. I just haven't tested it cross app though

if the publicDomain field isn't set it will default to using the protocol + domain that the request was made on

It has the flaws of Merkle DAGs but it does not use merkle trees, its basically just a recreation of torrent V1 files on top of nostr and blossom servers

I'm not trying to fix anything with this, just building an app to stress test blossom servers. and I was curious if it could be done in a really simple way

The applesauce documentation is slowly coming toggether https://hzrd149.github.io/applesauce/introduction/getting-started.html

I forgot how long it takes to write docs... this was one day of work

lumilumi has almost as many features as #noStrudel, the UI is a little hard on the eyes but I really like it

https://lumilumi.vercel.app

nostr:naddr1qqxnzdejxu6nqd35xsmrvvfjqgsgfvxyd2mfntp4avk29pj8pwz7pqwmyzrummmrjv3rdsuhg9mc9agrqsqqql8kqyt8wumn8ghj7un9d3shjtnwdaehgu3wvfskueq56ad2q

The DVM requests usually include a list of relays the client wants to use to communicate. although I'm guessing the primal DVMs are only listening on the primal relay and my client doesn't know that

Example request

nostr:nevent1qqsxv08afe2cfyy7ceccjass9j6cf7hexfq0v2mxf978k9a797twrwcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs989pqv

next version of #noStrudel is going to have a hacky gif search. and when I say hacky I mean it barley works because its built using 1063 events and NIP-50 search

although It should get better as more 1063 events are published and as search relays get better

If you need a better gif search you should use https://gifbuddy.lol/ which will download the gif from tenor and publish a 1063 event to nostr so its available to everyone else

nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn I love this I wish more apps did this so I didn't get spammed with decryption requests

ah of course. I thought this was maybe the first time you weren't going to build a feature into amethyst 😆

I have this exact model of drone. its pretty fun but only gets about 5 minutes of flight time

nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6 nostr:npub1ktt8phjnkfmfrsxrgqpztdjuxk3x6psf80xyray0l3c7pyrln49qhkyhz0 I found a "bug" between the blossom cli and cherry-server

When I enable the mime type filter on the server to only accept images and I use the blossom cli to upload a .jpg image. the server returns a 415 error

I think this might be due to the blossom cli always sending the content-type header to "application/octet-stream"?

project links:

https://git.fiatjaf.com/blossom

https://github.com/0xtrr/cherry-server/issues

Client can and probably will use the "url" field returned from the /upload endpoint when composing kind 1 notes. although the GET / serves a different purpose

Take this note for example nostr:nevent1qvzqqqqqqypzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzfmhxue69uhkummnw3e82efwvdhk6tcprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsqgp40020uraxgjhz7qlaspnvwfu782qgulw7vrqqe2q45su6kqywkss9rclp

If my main server cdn.hzrd149.com went down or the image was removed from it. clients could lookup my preferred list of blossom servers (kind 10063 event) and start going down the list asking each one for the exact same blob (without needing to know how the server works)

1.

2.

Thats the point of requiring the "GET /" endpoint to be in the exact same location on every server. so its super easy for clients to quickly fallback and check other servers