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

Looks like another client that supports streams https://sats.gg

nostrudel.ninja is the stable version. Although at this point its getting a little outdated.

But I'll probably release a new version as soon as I get this relay stuff figured out

Replying to Avatar Dissident Sound

OK i'm finally posting from noStrudel

i literally just opened it and it wouldn't post then i said OK to update and now it works

good work nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr but don't do it agian LOL

there has got to be a way to test these kind of changes in some kind of a sandbox that won't leave users out in the cold for days. only make the update go live after it has been tested to work.

???

or do you want users to simply use other clients while you work out the kinks ?

the problem is every client has different functionality and if you force users to stay on those clients long enough to actually get used to that difference - why would they come back ?

Its still not completely fixed. I've still got a lot more changes to work on. but it should at least publish events to your outbox relays again.

also the next.nostrudel.ninja is the testing sandbox 😁

Nope, I setup my browser to clear history when I close it. So I learned pretty quickly to save anything that I might want to come back to

Its pretty nice. Also don't have to worry about browser history

We have all seen the typical Genesis block artwork out there with a big ugly bitcoin logo on it

Like every true bitcoiner I've wanted to hang it up in my living room to demonstrate how smart I am. although I'd like it to be a little more subtle

A few years ago when I learned how a bitcoin block is structured I thought it would be cool to make a genesis block artwork but instead highlight the different parts of the blocks binary code so it would look more interesting.

This is about as far as I got. I think it looks okay, but if feels like its missing something. and the description text on the bottom feels really crowded 😞

I don't know how to make it better but I'm sure there is someone out there who is a better designer or artist than me and can make it better.

Here is the source SVG (it only delays well in the browser)

https://cdn.satellite.earth/5d5f4b550926cc6e5a7a8ecc5793baecb20ffadfab58e6b06ab8fb2397447815.xml

I think the "petname" field in NIP-02 could help with this, just need clients to start adding it to the kind:3

NUT-11, P2PK https://github.com/cashubtc/nuts/blob/main/11.md

I'm still learning it myself and only nutshell supports it but its pretty strait forward. just encodes a "unlock script" into the secret of the token and then the mint requires a signature to use the tokens

These nuts are very safe. They are locked behind a pubkey

Yeah, they have a P2PK script on them and the mint will only allow you to claim them if you provide a signature from my nsec

Posting these to nostr for safe keeping until I can write the code to redeem them 😁

cashuAeyJ0b2tlbiI6W3sicHJvb2ZzIjpbeyJpZCI6InlqelFoeGdoUGRyciIsImFtb3VudCI6MSwic2VjcmV0IjoiW1wiUDJQS1wiLHtcIm5vbmNlXCI6XCIxM2JiNGZiYjNiNjk1ODQ5YTFiMGRmODM0MzVlMGFmNlwiLFwiZGF0YVwiOlwiMjY2ODE1ZTBjOTIxMGRmYTMyNGM2Y2JhMzU3M2IxNGJlZTQ5ZGE0MjA5YTk0NTZmOTQ4NGU1MTA2Y2Q0MDhhNVwifV0iLCJDIjoiMDNhYWE1NjIxNjZjZjEwMGE5ZTIxMDA4YzcyNWM2YzMyNWU4NDRjMTc5Y2Y3MGYyOWQ2Y2EyYjM0MjExODViYmQ1In0seyJpZCI6InlqelFoeGdoUGRyciIsImFtb3VudCI6NCwic2VjcmV0IjoiW1wiUDJQS1wiLHtcIm5vbmNlXCI6XCJkNzNjNmZkZjk0NmRhNGYwOGJlZThjNzVjMjU2MWQzOFwiLFwiZGF0YVwiOlwiMjY2ODE1ZTBjOTIxMGRmYTMyNGM2Y2JhMzU3M2IxNGJlZTQ5ZGE0MjA5YTk0NTZmOTQ4NGU1MTA2Y2Q0MDhhNVwifV0iLCJDIjoiMDJjYjA0Y2YxOGY1YzYxZjZlNzNiNDc5ZDg3YTg2ZGExZjVlZDI5NjcwY2MyYTE1YzY5ZDQwYzU4NGJjMDVkNTFlIn0seyJpZCI6InlqelFoeGdoUGRyciIsImFtb3VudCI6MTYsInNlY3JldCI6IltcIlAyUEtcIix7XCJub25jZVwiOlwiNTNmNDU2MzIzYTYwMmVjZTg4YjE4YTU3OWQ5MDk2MjRcIixcImRhdGFcIjpcIjI2NjgxNWUwYzkyMTBkZmEzMjRjNmNiYTM1NzNiMTRiZWU0OWRhNDIwOWE5NDU2Zjk0ODRlNTEwNmNkNDA4YTVcIn1dIiwiQyI6IjAzNjRhOTAxMzY5YThmNzBhMWUzNTQ4NWNhY2JjNGVmMjk0NDRkMGY5ZGIyZTlhNDI3MDVlMGZhMDk4NTE2OGM0OSJ9XSwibWludCI6Imh0dHBzOi8vODMzMy5zcGFjZTozMzM4In1dfQ

The next.nostrudel.ninja version might be broken for a bit, I'm rebuilding a lot of the relay code and I broke a lot of stuff.

If you click on the little relay button in the top right and add a few relays will should start working again, but I've still got a lot of UI work to do

nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr

Hi!

next.nostrudel.ninja is broken again.

Empty feed, empty notifications, empty contact list.

No errors.

Yeah, Sorry about that. I'm rebuilding a lot of the relay code under the hood and its only in a half working state.

If you click the small "relay" button on the top right and set a few relays it will start working again.

Although there is a bunch of UI work I've still got to do

A test

cashuAeyJ0b2tlbiI6IFt7InByb29mcyI6IFt7ImlkIjogIjFucnRWUmxSalVRSSIsICJhbW91bnQiOiAyLCAic2VjcmV0IjogIltcIlAyUEtcIiwge1wiZGF0YVwiOiBcIjI2NjgxNWUwYzkyMTBkZmEzMjRjNmNiYTM1NzNiMTRiZWU0OWRhNDIwOWE5NDU2Zjk0ODRlNTEwNmNkNDA4YTVcIiwgXCJub25jZVwiOiBcIjhmMmQ0MDEwZmUyOTA0NjY4ZDUzZmU5Y2JiNzExOWQ5XCIsIFwidGFnc1wiOiBbW1wibG9ja3RpbWVcIiwgXCIxNzA2MDk4Mjg5XCJdLCBbXCJzaWdmbGFnXCIsIFwiU0lHX0FMTFwiXV19XSIsICJDIjogIjAyOWM3MzlmZjg4NmY2NWQwMDRhM2ZlMTZhY2FiMzZiZjcyYjA1N2RmMjJiZGY2YzZiZDlkZDE0MWZkZjdhNGYzMCJ9XSwgIm1pbnQiOiAiaHR0cHM6Ly9taW50Lmd3b3EuY29tLyJ9XX0=

I don't really mind adding it back in but id like to find a better place for it in the UI

I've been doing some tests and it looks like I can store about 100k events in an IndexedDB while keeping the query times below .5s

That plus a shared web worker would make a pretty cool caching layer...so I guess ill try adding a caching layer to noStrudel. maybe it will make the app faster?

they look awesome. I guess ill try to find them next time I'm in stl

Normally I don't mind getting sick because its a great opportunity to relax and watch movies. however this time its a little annoying since I still need to pack and leave in two days

Replying to Avatar Leo Wandersleb

Hey nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr! I love noStrudel and wonder who's behind it. Is this your fun project or do you have a team? It's amazing the quality you are delivering and it certainly feels like a whole team working on this, yet the repo claims it's basically all you.

Its just me and I guess you could say its been my fun project. although its more just my nostr sandbox.

Back in the earlier days of nostr there was only damus and astral.ninja. astral.ninja was slow and I didn't have an Iphone. also neither really let me explore the protocol, they kind of hid it away.

So I started building my own so I could learn how the protocol worked and so I could have the UI exactly how I liked it 😁

right, the only idea is to show the feed of kind 1 notes from a relay. but filter out the people you follow. probably would just end up with spam though... πŸ€”

awesome, hopefully they can teach me more about relays.

The main reason relays kind of suck in noStrudel right now is because I still don't really know what they are or how I could explore them

nostr:npub1aeh2zw4elewy5682lxc6xnlqzjnxksq303gwu2npfaxd49vmde6qcq4nwx it looks like your lightning address is missing the "allowsNostr" field. noStrudel relies on that field to know if the address is zappable

https://ghst.to/.well-known/lnurlp/daniel

I don't know what ghost addresses are but they might not support zaps

Been listening to this on repeat all day. Best original Christmas song I've heard this year https://podverse.fm/clip/uTJUOtYyXY

I can't find the original RSS feed for the song though 😞

#nostrdesign I'm looking for some ideas. noStrudels side nav bar is getting too crowded and I want to add more stuff to it.

I would also like to move some of the things in the "tools" section into the sidebar, but I realize most users wouldn't want to use them all the time.

I'm looking for any creative or cool ideas to let the user customize the navigation. but still be able to access all the things with only a few clicks

Tagging nostr:npub149p5act9a5qm9p47elp8w8h3wpwn2d7s2xecw2ygnrxqp4wgsklq9g722q nostr:npub1r0rs5q2gk0e3dk3nlc7gnu378ec6cnlenqp8a3cjhyzu6f8k5sgs4sq9ac any anyone else with good ideas

P.S I think it would be cool to do away with the sidebar entirely

I don't really do a lot of 3D printing so my plan was to blindly copy the thingiverse website and its features.

The idea so far:

- Use NIP-94 (file metadata) to upload and list STL files

- Create a new event kind that is a "3d printable thing" or a collection of STL files and other image/pdf files

- Build a fancy UI to let users browse and zap the things

I can't find it anymore but when I did this same search a few months ago it kept returning results for another shitcoin called SATS. So maybe that's where is getting the $15?

Hopefully soon 😁

⚑πŸ’₯ I just zapped you from the sky

Replying to nobody

nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr if you need a LibreTranslate endpoint to test against, hit me up.

Transactions is probably one of the oldest things on my to-do list. Ive tested LibreTranslate although I couldn't figure out how to make it ignore URLs and other non word content.

the way NIP-28 channels work with one event for metadata and one for channel create makes channel discovery a little difficult...

good idea, that has a pretty high success rate. although most people only know my looking at their phone πŸ€”

I can walk outside and get a pretty good idea of the time. but how do I walk outside and check if its Wednesday?

nostrudel.ninja is the stable version. It updated every few weeks.

the.nostrudel.ninja and next.nostrudel.ninja are the alpha verion. they update every time I make a change ( and end up breaking more often )

Submitted the app πŸ‘

I think I heard about that app store a while ago but never looked into it. it looks kind of cool

I already have the third one. just need the other two. πŸ˜„

If you say the code or numbers out loud (or whisper them) its much easier to repeat. something about hearing yourself talk makes it easier to remember

Replying to Avatar Water Blower

https://video.nostr.build/fe40f309c4458fc0ee83f70cdaa1403703fee22882de409362cf74422d9934f6.mov

As promised, I solved the List Synchronization Problem (your contact list being swiped out problem) for the whole Nostr community so that you don't have to re-invent the algorithm again.

Here is a demonstration with Relay List, which is a harder version of the problem because we also use relays to synchronize the configuration of themselves.

You can open 2 different devices/clients and modify the same list with different values, and they will converge to the same value instead of overriding each other.

Watch what happened from 26s - 28s!

The secret is using a data structure of CRDT. More on this later.

nostr:nprofile1qqsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgspz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3xamnwvaz7tmjv4kxz7tpvfkx2tn0wfnszymhwden5te0dehhxarj9cmrswpwdaexwnanw2j nostr:nprofile1qqsr9cvzwc652r4m83d86ykplrnm9dg5gwdvzzn8ameanlvut35wy3gpp4mhxue69uhkummn9ekx7mqpzpmhxue69uhkummnw3ezuamfdejsz9rhwden5te0wfjkccte9ejxzmt4wvhxjmc3nfy6g nostr:nprofile1qqsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqppamhxue69uhkummnw3ezumt0d5q36amnwvaz7tmwdaehgu3dwp6kytnhv4kxcmmjv3jhytnwv46qz9rhwden5te0wfjkccte9ehx7um5wghxyecrzy6tn nostr:nprofile1qqsglv2qkn5dmmuhee9cy8fywfu2rfp4xd3xy0myqg2gfvmjl9yqqrqpp4mhxue69uhkummn9ekx7mqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3yamnwvaz7tm0venxx6rpd9hzuur4vg070dh7 nostr:nprofile1qqsrhuxx8l9ex335q7he0f09aej04zpazpl0ne2cgukyawd24mayt8gpr4mhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet5qyv8wumn8ghj7un9d3shjtnwdaehgunpw35jucm0d5q3vamnwvaz7tmjv4kxz7fwdehhxarj9e3xzmnyv0c7x9 nostr:nprofile1qqsfnz2sqsflkatdssmeztxr90s8xrd7r07xkhfwaa6eu9zkcguljpgpp4mhxue69uhkummn9ekx7mqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3kamnwvaz7tmwdaehgu3wwdmkjumn94jku6t8d4sjucmgx9sv8m nostr:nprofile1qqsph3c2q9yt8uckmgelu0yf7glruudvfluesqn7cuftjpwdynm2gygpzpmhxue69uhkummnw3ezuamfdejsz9rhwden5te0wfjkccte9ejxzmt4wvhxjmcpzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgg6dq49 nostr:nprofile1qqsxu35yyt0mwjjh8pcz4zprhxegz69t4wr9t74vk6zne58wzh0waycpz3mhxue69uhhyetvv9ujumn0wd68ytnzvuqs6amnwvaz7tmwdaejumr0dsq3qamnwvaz7tmwdaehgu3wwa5kuegqrtefg nostr:nprofile1qqs99d9qw67th0wr5xh05de4s9k0wjvnkxudkgptq8yg83vtulad30gpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq32amnwvaz7tm9v3jkutnwdaehgu3wd3skueqprfmhxue69uhhyetvv9ujumn0wd68yurvv438xtnrdaksp8quad nostr:nprofile1qqsqqqqqqzp8l74ff0l29zxrml8yggk8jnamje39k6e3ayzf7u5awqqprpmhxue69uhhwetvvdhk6efwdehhxarj9emkjmn9qyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduy9aajz nostr:nprofile1qqsx8lnrrrw9skpulctgzruxm5y7rzlaw64tcf9qpqww9pt0xvzsfmgprpmhxue69uhhyetvv9ujuumwdae8gtnnda3kjctvqyxhwumn8ghj7mn0wvhxcmmvqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hschfr5x nostr:nprofile1qqs8lft0t45k92c78n2zfe6ccvqzhpn977cd3h8wnl579zxhw5dvr9qprpmhxue69uhhyetvv9ujuumwdae8gtnnda3kjctvqyxhwumn8ghj7mn0wvhxcmmvqyg8wumn8ghj7mn0wd68ytnhd9hx2tvlfps nostr:nprofile1qqsyt3qly8su7u2l5mvu5g9cuqp22axm0w6fa9hw3xp5cek6c4zxk7sprpmhxue69uhhyetvv9ujuumwdae8gtnnda3kjctvqy28wumn8ghj7un9d3shjtnwdaehgu3wvfnszxnhwden5te0dehhxarj9ehhyctwvajhq6tvdshxgetkrz9mhs nostr:nprofile1qqs8hhhhhc3dmrje73squpz255ape7t448w86f7ltqemca7m0p99spgpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3qamnwvaz7tmwdaehgu3wwa5kuegppamhxue69uhkummnw3ezumt0d5hkly8m nostr:nprofile1qqspqxesa6yvy7snme5t7lyvqcmgaglraqmkg9v4cxr82emarzjx53gpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmev9382tndv5qjqamnwvaz7tmjv4kxz7fddfczumn0wd68ytnhd9ex2erwv46zu6nsazpqkk & I forgot the nostr name of strfry author everytime

I'm just tagging more nostr developers I have on top of my head. Feel free to tag & share to other developers & users.

Feedbacks welcome. If the effect in the video is what you consider a solution for the list synchronization problem and upvote this note, I will draft a NIP.

This looks cool, but I have a few questions.

In the example you showed each client is creating a different relay list, then when it discovers a relay list created by the other client it merges it.

1. How dose this handle removing different relays in both clients. wouldn't the client just see the relay list from the other client and add the recently removed relay back into the list?

2. Due to how events are spread between relays, A lot of the more obscure relays have really old versions of my relay list. If the app happened to connect to a relay that had a 2+ day old version of my relay list would it attempt to merge it with the newest relay list, even though there are relays that I explicitly wanted to remove?

I like the idea of detecting and merging the relay list. but if it defaults to always merging whatever lists it finds. then I think this could make it difficult to remove relays.