You mean this, nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z?
 https://primal.net/e/note10r3fjahczfls0w6ezvjcndn6clmyygc3unns77smjk29xjz7dm9syc9ynh


WHAT


nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft is on fire lately.

nostr:nevent1qqsdg3lnut0h36d3538dkgg6l4njav4m94n54dw7y5mr9n69zcmt2dspp4mhxue69uhkummn9ekx7mqzyrafsj7hmweg9ur7zmn6apajdg48hxuskujx53rhrux0ttjcqx84yqcyqqqqqqg3g8w5f


That's all fine. We can't do that in Nostr, but you can with DIDs. I don't think it solves much, but it is better than what we have today for sure.

In Nostr, because the key is always present at the event, there is no way to disallow somebody to verify. But you can say that your key has leaked. And from that moment, no one can have any assurances if past posts were signed by the author or by an attacker. It's kinda what you do with DIDs, since people can also store the keys behind the DIDs in their own computers.

So, in a way, with DIDs or not, people can always verify. DIDs have a way to do it in the spec. Nostr doesnt yet. But in the end, the tech stack can only go so far.


I tried. Now it's with everybody else.


The difference is that they keep the last 5 keys in the rotationKeys property of the did document instead of deleting them. Which means people can still validate the past, but only the last 5 keys.

In any case, they don't resign the past with a new key. So, at somepoint your old data disappears. If your past key has leaked, you should not keep it in the rotation set otherwise other people can create valid events under your key's name.


Nice! Let's go!


DIDs allow you to remove the key from the host which invalidates all your past signed documents because no one can verify them anymore.

So, it's not really a key rotation, but a key expiration. You lose all your data regardless. It's similar to moveing to a new key in Nostr.


yep


Time to build Nostr's Push Notification network adjacent to the relay network.


Is nostr-pub.wellorder.net coming back?


Either you do it, or I can use the Push Notification we have for Amethyst to send it to Amber. :)


You can setup your device to auto reply.


Yep. I go back and forth between NIP65 clients and Amethyst (we are still not there) and everything works. There is no point in fighting NIP-65.


Next version: https://github.com/vitorpamplona/amethyst/commit/8ff4ac3709a5088638981b6307899541439a4bd0


Nice! Congrats!


Stay strong 👊


Yep! But we are preferring the Geyser page for now :)


With passwords? It's just nostr connect. No need for other passwords.


Privacy is only as bad as the Nostr Client you are using wants it to be :)


Can NOSTR be used to coordinate social services for people experiencing homelessness? We sure think so.

We have an ongoing project at PathCheck to develop an entire Nostr-native collaborative case management tool for social services that focuses on the homeless community. The goal is to break the data silos each providing agency has and help medical and social personnel from separate organizations collaborate in the same "patient" record. We are actively looking for funders and supporters to start building the tool with our partners on the ground.

If you agree that the government won't solve this issue, this is your opportunity to get involved and prove that grass-roots movements can do better. Please consider a donation, like, share, and even volunteer to work with us. We have a small but dedicated team and boots on the ground to make a real impact.

nostr:nevent1qqsfj2s6xsxqcmrqn9a9j39hz8x30cyln7yvpm5an3djevgm4590lxgpp4mhxue69uhkummn9ekx7mqzyzdsy3l2zsmp53f748thl876hjzcltqsqc6zfnstkw49vq3hahkukqcyqqqqqqghvzh0d


Sim. É só alguém querer fazer :)


Push notifications of the Foss edition of Amethyst.


When an event tagged a user but the app did not receive that event from the user's read relay, the Client should broadcast to those relays.

When an event signed by a user is not hosted by the user's write relays, the Client should broadcast over there.

If a group chat has preferred relay in it's metadata info, the client should broadcast messages that are not in that relay to that relay.

If you attach this idea with GiftWraps, then every client becomes a forwarding "Tor node". You can receive a wrap with a wrap to another user inside. If the relay that user uses for DMs does not have the wrap, broadcast it over there.


You can just encrypt the push message. The Push provider cannot see anything. We do that for Amethyst using Google's and Unified Push's API. No one sees anything.


You will have to uninstall if you installed Amethyst from the PlayStore


Nice!


It's possible to build a trustless nsecbunker: a bunker where your private key is not held by the online service provider, but by you in your phone.

Just make an app that receives signing requests via Push Notifications. The bunker server then simply reads new NIP-46 request events from the user's relay and Pushes it to the app. The app wakes up, gets the event and presents an approval screen to the user. After approval, the app sends the NIP-46 response to the client.

The entire permission system would run on your phone.

It would be like a 2-step-auth for every signature. Every like would hit the phone for approval.

Maybe nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5 can turn Amber into that.


I think NIP-65 can be significantly enhanced if Clients start to automatically re-broadcast everything they can't find in each user's NIP-65 relays.

Authors of can mark events as protected if they don't want that behavior.

https://github.com/nostr-protocol/nips/blob/protected-events-tag/70.md


Good question. Making a different kind allows for voice clients (podcast apps) to be developed without needing to worry/download about the video stuff. They can filter only audio rooms.

We could also do other 2 kinds to split audio and video events that are joinable via WebRTC.

Or you can add tags to kind 30311 to allow people to search for joinable/not joinable, audio or audio and video events.


Waiting for Google to release the next version of their JetpackCompose UI library to make this possible


I would not copy the way we do private zaps right now. It just sucks because it requires special decrypting methods from signing apps to resolve them.


Google is taking forever to add that to their UI frameworks. Looks like it s coming in the next version.


The event seems fine for 30311. I am not sure about that double "streaming" tag though.


F-droid hasn't updated yet. It takes them from a couple of days to 2 weeks to update.


I see WebRTC coming. I like it.
nostr:nevent1qqs9yjhhd569wxggaacp8kyh09cy440ey5sc8tu0fjq7qpmks9h222gpp4mhxue69uhkummn9ekx7mqzyqlhwrt96wnkf2w9edgr4cfruchvwkv26q6asdhz4qg08pm6w3djgqcyqqqqqqg3thp9h


Testing from Amethyst


How can I find some food around here?


hi


@bethanylomonaco hi


Testing Nostrchat.io


Amethyst doesn't remove any metadata ourselves yet, but the server usually does. If you dont trust the server, use another app to clean the metadata before hitting the upload button on Amethyst.


But I don't want an old car. Old cars suck. I want a new car with all the self-driving stuff and without the tracking. :)


only if you use custom emojis. :)


We need open source cars.

https://podcast.firewallsdontstopdragons.com/2024/02/19/car-privacy-is-horrid/


With coding experience or not?

Most people should try https://nostr1.com/ before going for their own servers.


No, and the current way we do it sucks (requires special methods to decrypt from signers/extensions). I don't recommend following our implementations. :(

I am happy to migrate a better one, though


People are definatelly trying. But no one has cracked that code successfully yet.


we are getting fancy aren't we!


It's always interesting to see how trending posts from multiple algorithms don't bring in as many sats as other posts. These posts clearly have a huge reach to trend BUT they don't convert into better revenue for the author.

If you are trying to make a living on Nostr, don't follow the trending topic recipe.

I wish some behavioral data science chad analyzed the intersection of both and dropped some hard knowledge around this.


It's between how the keyboard sets up the cursor when mapping a long pubkey into a name :(

Maybe they can fix it at some point.


Keyboard issue. Change from the default keyboard on Graphene or florisboard to AnySoft, Gboard or Unexpected keyboard and it works.


That's is what play store people love to tell you :)


Nah.. gotta be something easy for the masses.


The roadmap is us.


Our friend just brought home-made garlic power and holy shit the whole house smells like garlic now.

I have been eating fake powder my whole life.


You can DM groups of people today, which is like emailing a bunch of people. But we don't have the create a group support.


The server you use can change your image at any time they want.


The image has changed by the server after the author approved the post.


Too bad I can't intercept the error from inside Amethyst :(


India banning Proton Mail is why we are here


Keyboard issue. Change to AnySoft, Gboard or Unexpected keyboards and it works :)


The concept that AI infrastructure now is so powerful that the human civilization simply does not have enough content to feed it is crazy.


Wait until we get relay apps running on phones :)


only the public part. Amethyst saves it to the private part of the list but other apps might use the public one. Either way, if Amethyst updates the private part, everyone in the public part receives the updated list's notification (as they should). But maybe Clients should not show that as a notification (because it isn't a notification).


no, I keep sending filters because some (many?) relays return the public, non-authed part of the relay just fine.


I just ignore it if we/the user doesn't want to auth in that relay.


#Amethyst v0.84.3: NIP-49 Emoji Password fix

If you exported your secret key with any composable Unicode characters as passwords (like an emoji), please export it again.

Bugfixes:
- Counts any quoted post as retweets in the notification stats
- Avoids the need to p-tag the user to count as a mention
- Normalizes passwords to Unicode's NFKC in NIP49
- Adapts Scrypt lib to support empty keys

Code Quality Improvements:
- Refactors clickable text and notification feed filter
- Updates secp256k1

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.84.3/amethyst-googleplay-universal-v0.84.3.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.84.3/amethyst-fdroid-universal-v0.84.3.apk )


Oh no


If you upload in the feed, it just uses a URL with a hash. If you upload in the Insta-feed then it creates the nip94 record.


It's an ecrypted zip file with your keys inside. With a good password, you can move the zip around without revealing your keys.

Picture this: Person downloads Damus, creates an account and wants to transfer the key to their desktop. They can create an encrypted zip, email to themselves, bring that file to a less safe desktop and use it to log into a Nostr extensions.

If they did that with just the nsec, all of the email servers would have had access to the key.


Are you using Tor or a VPN? 🤔


Hum.. how many search relays do you use? nostr.band, nostr.wine and noswhere.com respond to search if they are active on the search tab in your relay list.


yey!


let me know when you reset them, I want to check which relays receive that change.


Sorry, I mispoke. I can find a list that was changed 12 hours ago. I am not sure where this is coming from, but it is only deleting your relays, not your contacts. Super weird.


Did you follow/unfollow or changed the relays around that time on Amethyst?


yep, your relay list was updated and erased exactly 11 minutes ago.


I already had one user testing an emoji password :)

Not sure if it would have broken it, but probably did.


yeah it's part of the same issue.


See if it is the keyboard. It has been documented that Graphene's default keyboard and FlorisBoard are crashing when apps use a "Visual Mapper" to show people's names intead of their pubkeys.

Anysoft, GBoard and Unexpected Keyboards seem to not have this issue.


Sure, but if that's your fear linux alone won't save you. You have to fight for an opensource hardware. Otherwise any chip can have your malicious code inside of it and the OS won't even know.


It's worth if all you want to do is to be free to install your own apps and not pay Apple's 30% tax on everything.


Yep


I am making memes today.
https://image.nostr.build/6d29d4a5e7a65917504d6ee127ef828c7e8ec51bd8ed70a79d84e4a16089cc85.jpg


Let's break it now before its too late.


You can have it today. Just buy a Pixel, install GrapheneOS and use it with F-Droid, Aurora or Obtanium.


Is this the beginning of the Nostr Browser?


We can probably do Calendar events for these...


Strange, did it present any error when you tried to login?


Do you have a lock screen? If so, it should ask for your fingerprint or pin before exporting.


Only in clients that support ncryptsec1, which are not many right now. :(


We have to find a better way to invite people to these events.  Local date time conversion and subscribe to notification may be the way to go.


#Amethyst v0.84.2: Text alignment fix

Bugfixes:
- Fixes link misalignment in posts

Updated translations:
- Czech, German, Swedish, and Portuguese by nostr:npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
- French by nostr:npub106efcyntxc5qwl3w8krrhyt626m59ya2nk9f40px5s968u5xdwhsjsr8fz

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.84.2/amethyst-googleplay-universal-v0.84.2.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.84.2/amethyst-fdroid-universal-v0.84.2.apk )


Are you using GrapheneOS with the default keyboard or Florisboard? That combination is the issue. If you change it to AnySoft, Unexpected Keyboard or Gboard it won't crash anymore.


Are you using Graphene with the default keyboard or Florisboard? That combination is the issue. If you change it to Anysoft, Unepected Keyaboard do Gboard it won't crash anymore.


How is it crashing?


I think some the the libs I updated broke our formatting. Will fix soon :(


Go to backup keys in the left menu


There is a new ncryptsec1... Key that has the key but it's encrypted with a password, similar to an encrypted ZIP file. If you paste that on Amethyst's login, it asks you for the password and decrypts to get your nsec and then uses that to login.


Nice.
https://cdn.satellite.earth/37b56b732179758a2afbc8f49eab80a7ac92fed23abe642fe77a48cf0a57d32b.png

https://hist.nostr.land


Happy with your first contribution? :)


#Amethyst v0.84.1: ncryptsec support (NIP-49)

Now you can export and login with a password-protected version of your private key.

This new format starts with **ncryptsec** and requires inputting a password to decrypt the key before loading it into a client. Keep in mind that the new format is not designed to replace your **nsec**, but to work side-by-side with it. Keep your nsec in the safest place you can and use the **ncryptsec** to move your key between devices, deleting it as soon as you are done with the transfer.

New Additions:
- Adds support for NIP49 to login and back up key screens
- Adds cryptographic support for NIP-49 to Quartz
- Enables citation on chats via @
- Adds "₿itcoin" to the set of custom hashtags

Updated translations:
- Portuguese by nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6
- Hungarian by nostr:npub1ww8kjxz2akn82qptdpl7glywnchhkx3x04hez3d3rye397turrhssenvtp
- Dutch by nostr:npub1w4la29u3zv09r6crx5u8yxax0ffxgekzdm2egzjkjckef7xc83fs0ftxcd
- Chinese by nostr:npub1raspu6ag9kfcw9jz0rz4z693qwmqe5sx6jdhhuvkwz5zy8rygztqnwfhd7

Performance Improvements:
- Avoids the memory use of the flatten operation on Notification counters
- Adds a check for the main thread when pulling opengraph tags.
- No need to crossfade when clicking on Show More

Code Quality Improvements:
- Updates Compose dependencies

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.84.1/amethyst-googleplay-universal-v0.84.1.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.84.1/amethyst-fdroid-universal-v0.84.1.apk )


Very cool! Can it work with NIP-28 public chats as well?


Testing citing in groups nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z


I proposed a way of doing this called Relationship Status, which not only allows you privately petname pubkeys also categorize your friends and assign scores to them in a true Web of Trust fashion. Clients can do all that in a public or private way with the same event format.

https://github.com/vitorpamplona/nips/blob/relationship-status/81.md


Event of kind 34235 can be opened with this application: highlighter


I feel like people severely overestimate what DIDs do. They don't help you migrate anything to a new key. They just allow the DID owner to remove the key from the host and turn all signed payloads unverifiable. That's all it does.

If you had a bunch of DID-signed DMs and your key leaks, you can rotate your key in the DID document, but then all past DMs disappear and you have to start fresh.

So, the "does not require burning down and rebuilding your social network" is not being solved by DIDs. Sure, you can link your friends by the DID and not the key but that doesn't mean you get to verify the old stuff when your friend rotates his/her key. You are burning it down regardless.


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

Now we need a live chat to accompany these changes.


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

Now we ne


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

Now we n


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

Now we nee


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

Now


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

No


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

Now we


kind: `create_account`
params:

{
 "kind": <create-account>
  content: nip44_encrypt({
    username: "bal",
  domain: "example.com",
  email: "foo@bar.com"
  })
}

I'm so blown away that this works as well as it does

😂 WEBSOCKET BEAR!!!!

I invited people to watch us type on nostr 😂

The one thing that dosen't seem to work is that we can't type at the same time. Early prototype issue I guess. You'd have to have a changes queue to apply things at the same time

Yup, I wrote it very quickly last night; it's very stupid and inefficient, it's not even doing diffs, literally each keystroke is signing the ENTIRE content 😂

😂 love it

https://github.com/pablof7z/collab

fun. Going to definitely have a look at using this in a few places.

right, back to NIP-46, I'm going to change these arrays to objects. What do you think about the bunker:// url, needs to stay? Or can we just use NIP-89 to look up bunkers

the NIP-89 part is a different flow though; we need the bunker:// stuff still for login

you go to highlighter.com, watch the spinners

what about using NIP-05 for that though. If you gave the NIP-05 you're using on the bunker you should sign in as that remote pubkey right?

what if you don't have a NIP-05 or if you don't have NIP-46 entries on the nip-05? nah, we need the bunker:// stuff

ok, fine 🙄

hahaha

paste your NIP-46 as is and we can collab in this one

actually, let's make a new NIP-23 for it; I'll drop the pig here

N


hah!


We need this for NIP development.


Everybody must have a pet dev.


hum.. why was this note deleted?


hum.. why


hum.. why w


hum.. why was t


hum.. why was


hum.. wh


hum.. w


hum


hu


h


This is a new document I'm writing using https://collab-lemon.vercel.app/ which allows for collaborative editing of documents on nostr.

The cool part is that this very simple tool, that I basically wrote in one hour last night, has some interesting primitives that can allow for a decentrailized wiki.

In this flow I can invite editors to collaborate with me; they can suggest changes and I can see them typing in "real-time". When they suggest a change they essentially create a fork of my document, which I can then resign as my own, essentially accepting their changes.

But the cool thing is that suggesting edits is not restricted to the people I authorize, anyone can do it. In my Whynotstr client these "unauthorized" edits are displayed separately and only if you choose to see them.

But anyone can see them. Which means that anyone can fork my document and create their own competing document.

## Decentralized wiki
From a "Wiki" perspective, this could mean that I write an entry for "Second World War"; the entry might be fully biased and I might leave out a bunch of nuance you, coming at it from a different perspective


This is a new document I'm writing using https://collab-lemon.vercel.app/ which allows for collaborative editing of documents on nostr.

The cool part is that this very simple tool, that I basically wrote in one hour last night, has some interesting primitives that can allow for a decentrailized wiki.

In this flow I can invite editors to collaborate with me; they can suggest changes and I can see them typing in "real-time". When they suggest a change they essentially create a fork of my document, which I can then resign as my own, essentially accepting their changes.

But the cool thing is that suggesting edits is not restricted to the people I authorize, anyone can do it. In my Whynotstr client these "unauthorized" edits are displayed separately and only if you choose to see them.

But anyone can see them. Which means that anyone can fork my document and create their own competing document.

## Decentralized wiki
From a "Wiki" perspective, this could mean that I write an entry for "Second World War"; the entry might be fully biased and I might leave out a bunch of nuance you, coming at it from a different perspective sad


This is a new document I'm writing using https://collab-lemon.vercel.app/ which allows for collaborative editing of documents on nostr.

The cool part is that this very simple tool, that I basically wrote in one hour last night, has some interesting primitives that can allow for a decentrailized wiki.

In this flow I can invite editors to collaborate with me; they can suggest changes and I can see them typing in "real-time". When they suggest a change they essentially create a fork of my document, which I can then resign as my own, essentially accepting their changes.

But the cool thing is that suggesting edits is not restricted to the people I authorize, anyone can do it. In my Whynotstr client these "unauthorized" edits are displayed separately and only if you choose to see them.

But anyone can see them. Which means that anyone can fork my document and create their own competing document.

## Decentralized wiki
From a "Wiki" perspective, this could mean that I write an entry for "Second World War"; the entry might be fully biased and I might leave out a bunch of nuance you, coming at it from a different perspective sadf


Hi


Hi th


Hi t


Hi there


Hi ther


H


tesas


te


Who is your favorite Bitcoin dev and why are you not monthly-funding that person?


Careful. Don't forget that I spent 15 years developing and shipping medical devices to the most remote parts of the planet. You know something they don't have over there? Phone lines.

Phone lines are a relic of the rich and middle classes of the past. They never reached remote places and the low income were never able to afford them. Both just leapfrogged this whole thing.

Maybe you can find elderlies that are still not connected. But those are not common anymore. And they certainly don't need to buy a phone line to be connected, when they decide to join the web.


A quick and dirty proof of concept, trying collaboratively writing a document over nostr.


hehe

https://image.nostr.build/1f1bd95526780581df1419bd74ab64aaee2a361c38eaf1d2226cf4a92fbd3454.png


njump.me has to support this event type first

nostr:nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qgmwaehxw309aex2mrp0yh8wetnw3jhymnzw33jucm0d5hsqgpm7rrrljungc6q0tuh5hj7ue863q73qlheu4vywtzwhx42a7j9n5zr9h9m  nostr:nprofile1qyd8wumn8ghj7ur4wfshv6tyvyhxummnw3ezumrpdejz7qghwaehxw309ashgmrpwvhxummnw3ezumrpdejz7qgkwaehxw309ajkgetw9ehx7um5wghxcctwvshsqgrmmmmmugka3evlgcqwq3922wsul966nhrayl04svauwldhsjjcq559uwpr


Sure, but then work encompasses any human activity. Everything is work. Cooking is work, resting is work (rest is a goal), living a happy life is work, etc.


We can implement that if that is your fear. Either way, users should NEVER have to memorize an npub.


A contract that exchanges life hours for money.


What a hawkhole.


> nostr users didnt have to memorize pubkeys to identify impersonation

Who the hell is doing this? Get a better client. You can follow the pubkey you trust and the client can inform you if you are talking to the key you followed earlier or if this is an impersonator.  There is no need to memorize anything.


I am not sure, But even Gmail has a similar rendering bug. So I am not sure how to solve it.


The answer to the "What are we going to do if AI takes over our jobs? People will just do drugs all day." comment is to gradually reduce everybody's work hours until we hit the inevitable zero.

Humans are here to live. Not to work.


NIP-65 works. Our apps just require a lot of work to migrate over.


That's BS. No one memorizes phone numbers these days. I dont know my wife's number. And she has had that number for over 15 years.


Nostr pub key man.. nostr pub keys...


Kind 3 relay lists. By far.

And yes, Amethyst is also one of the hosts of the problem.


Call me on my free email or my nostr pub key via 0xChat


Why do we still buy (rent?) phone numbers?

No one needs these numbers anymore. End them.


In-device models can take care of private events. But otherwise, I am not sure they are that interesting for public events. Constantly updating the local model to match the newest events coming in online is challenging.


I was going to add Gemini to Amethyst but then I realized every damn app now has Conversational AI in some dumb form of questions and answers.

Somebody should build a new Nostr client where instead of any feed, you ask Gemini for what you want:
- Give me the latest from my friends.
- Give me the most zapped posts.
- Give me the first posts of every pubkey from yesterday.
- Give me the streams happening now that my contacts are also participating.
- Give me the latest memes.
- Give me all the reactions to Jack in the Super Bowl.

Etc..


Gitbutler is awesome


#Amethyst v0.83.13: Grinding away

New Additions:
- Adds background support for community and public chat list events from NIP-51
- Removes the confusing notification dot of the discovery tab

Bugfixes:
- Fixes thread rendering when `mention` events are added without mentioning any event.
- Unwrapps the reply message if the GiftWrap was tagged as reply instead of the correct message id.
- Fixes Send to Top in the marketplace
- Fixes text-to-voice accessibility issues in the main feed UI
- Inverts the order of the hidden users in the security screen: last blocked goes first
- Fixes crash when mute list has `e` tags that are not valid hexes
- Fixes crash when opening an incorrect `nostr:` uri

Updated translations:
- Czech, German, Swedish and Portuguese by nostr:npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
- French by nostr:npub106efcyntxc5qwl3w8krrhyt626m59ya2nk9f40px5s968u5xdwhsjsr8fz

Performance Improvements:
- Moves language translation cleanup to the IO thread since it clears disk files as well
- Small adjustments in the re-use of modifiers

Code Quality Improvements:
- Small refactoring to focus the encrypted storage procedures to the application context.

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.13/amethyst-googleplay-universal-v0.83.13.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.13/amethyst-fdroid-universal-v0.83.13.apk )


Very cool! No need for browser extensions on mobile anymore.

nostr:nevent1qqsyfmy0hqpzgghm2yf4vqwgzj6lu8pkm4zuk2pshqfd2rg7hy27zggpzpmhxue69uhkummnw3ezuamfdejsygpn2m0xrvukg7f3e69jzs9jh2ur0cypps8029dmayk7qfyqgzutm5psgqqqqqqs4xmt2h


Can you send a screenshot?


css kind of thing? I don't know what CSS has to do with this :)

You can follow hashtags and the select them in the top of the page.


The difference is that each client can create as many rotating keys to receive the message as needed, including a new one per message if it is really necessary. These are created by the client, the server doesnt know about them.

But the main component is that you can encrypt the already encrypted message to a separate pubkey as many times as you need. You can basically create an onion route using multiple queue IDs where every server only knows where the which node is coming from and going to but not the author and the receiver. Messages can use complely separate routes, making it impossible to track a conversation sequence.

On top of that, dates and times are random. Servers don't know which messages are new and which are not. Many payloads might contain the same messages, adding noise to the network.

All of that is done with a single message type: A GiftWrap event.


At least it is consistent. 🤪
https://image.nostr.build/fd2a4eb8c6cdb78d3d958800391c365db1594d37beeb27a9ebad086d64878190.jpg


Wtf.


The goal of the pool is to have more coordination between participants instead of just a multiplexer for other relays.


nostr:npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63q0uf63m demoing Nostr 20 years ago

https://video.nostr.build/756baf7f1a34309d244efd77b3a8150072af32c43cf618b7e073bc1d18d5bf8c.mp4


People are going to be so mad.


The idea that any relay operator could join any relay pool (like a mining pool) out there to provide storage to the pool, reduce latency and increase speed to clients while getting paid for joining is great!

https://github.com/nostr-protocol/nips/pull/1035


Our push notification server will get a list of your pubkeys for the same device ID. That's all.


nostr:npub1k06ctulq8rcaen067tt6z3y6gxrqtsuje5em5lcn009zfpp0t7gqf0zyu9 just use the Hidden words in the security filter.


Latency and data use of decrypt/encrypt is the main thing for me. Otherwise, it's fine.


No one is using a key derived from a passphrase. That has never been a requirement in Nostr.


Ohhh saving nsecs on Nostr feels dangerous.


If you encrypt the old key with the new key you would have to store the key + an encrypted payload. There is no way to create recreate a seed from one the keys it could generate. And because of that, you have to save both the words and the encrypted payload which given that the private key is already 32 bytes, requires more than 24 words for the two things (payload + seed) combined.


There is a 5,000,000 sats bounty for whoever implements a relay using https://github.com/fiatjaf/khatru that stores the last 3 updates of each person's follow lists and make a nice UI for recovering these or integrate with https://metadata.nostr.com/


Sure, but YOLO.


Sure, but then we will def need more than 12 words.


Let's us know which one wins for you so that we can keep recommending to other people


We can implement. But we don't have the seeds for any of the keys people are already using today. And no one will want to migrate to a new key and lose everything just because of seed words. We have to find a way to make it work with the current keys.


You can't represent an nsec directly (32 bytes) without 24 words.


Hah.. interesting! I will fix this.


FYI, your NIP-05 fails in SSL check


There is a client for that :)

https://nostrapp.link/


Can you take a screenshot when that happens?


Maybe we should just remove everything and just have picture and text :)


2nd person that mentioned it in 3 days.. maybe nobody cares anymore...


indie devs are the best devs.


I wouldn't hardcode any specific business logic. I would just have a map<key as string, value as object> in each event so that the dev can add/remove whatever they want to store together with the event. The db just stores this map in the same way it stores the event fields.


Simple apps should be able to handle decryption while scrolling just fine. So, I am not sure if anything more complicated than that is worth including in your lib. But more complicated UI components might trigger way too many pre-processing algorithms in parallel when scrolling and then pre-caching is the only viable answer. And storing this cache can be beneficial if the sum of all the pre-processing stuff to create those caches on the fly takes longer than loading them from the disk, which in many of our instances, already do.

Some time ago you mentioned that you were adding the .content parser to the db lib as well. That aligns with the cache needs here as well. Being able to pull already parsed .content from the db can provide significant gains in the rendering performance just because the CPU is left alone to do the other things the app might need.


Sure, but the question was if we can add more pre-processed attributes (key-value pairs) to the Event objects so that when it loads from the disk it's not just a raw event. Most of the processing Amethyst does is in the "getting an event ready for the UI" phase, like zap amount sums, reply counts filtered by the user's hidden words list, creating blurhash bitmaps, tables for zap comments per note etc. That's were 95% of the app's CPU usage goes.


Feel free to centralize yourself in one car. But that is not why any of us are here. For that, you can just centralize on Twitter.


Yep


For instance, I keep a separate cache per logged-in user to make sure only that user has access to the decrypted information with that key. That cache tends to be so large that we keep clearing it from memory as the user scrolls.


Does it cache custom objects per kind as well or do you need to keep the session cache separate?


It's your keyboard. Change it to AnySoft or Gboard and the crashes will stop


I don't know. To me it's just like changing Bitcoin. Everything you try to change it into creates unwelcoming side effects. I haven't seen a good proposal for the identity issue that keeps Nostr's simplicity and decentralization where it should be. It's not only about putting big boy pants. It's about finding a new idea. None of the things out seem to work well in the Nostr context.


Sure. I worked with DIDs for more than 5 years. I get what you are saying. There are many cool things out there. My first dismissal of Nostr in 2021 was exactly because Nostr didn't have Identities and my first issue in the repo was to add it (via DIDs or other schemes). So, I understand what you are saying.

But I don't think Nostr is EVER going to have a rotating key.

It's just not what Nostr was made for.

Which brings us to my problem: I need to represent the current keys better. That's all I want to do in this post.


Feel free to draft a NIP for that. The key point still remains.

The current keys cannot be migrated over and we need a solution for that.


No, because there is no way to migrate what you have. You will lose all DMs that you received and there is no way to resign a Kind1 thread since you can only resign your own posts.

But Snort supports NIP-06, you can do it today if you want.


good point. But I get lists of words everywhere these days. I am not sure if that "wordlist" == "money" will last much longer in people's minds.


Then do it.


Again, it's not what I am talking about.

We could use NIP-06, but that requires recreating everyone's private key. Do you want to migrate your existing Nostr profile to a new private key just to get a wordlist?


I use 12 clients regularly these days. If you are using just 1-2 clients, you are doing Nostr wrong.  The whole point is to have a large number of clients that each specialize in a separate thing.


How about 24 words? Nsec is 32byte which, for a 2048 word dictionary, requires 24 words. :(


That's not what I want. I want to encode existing nsecs into wordlists. It's not about seeds.


Nostr uses 32 byte private keys, which requires 24 words with the usual wordlists we see out there.


In the future, sure. People in your WIFI could connect to your phone and manage their group inside the house. But more importantly, it's important to offer a way to backup your server in your phone to avoid losing your data in today's relays.


Do you think a 24-word list is a way better to store/transmit your private key than our current nsec1... code?

Pros:
1. It's easier to copy a word list from a phone to a computer by hand.
2. Currently understood as a "private"/"don't let other people see it" thing

Cons:
1. Confusion with other word lists?
2. Too long?


Your feed is not supposed to show there man... this is a blogging tool, not a twitter client.


Didn't you click in the Alby link instead of the Login Button?


The main issue to me is that the amount in the note might not match the number it is supposed to match. You have to digitally check when you receive it.

Other than that, the project is fun.


What didn't work on habla? I just posted and it seems fine.


Have you tried http://habla.news?


Nostr's biggest advantage is the fact that a brand new client or relay, made from scratch, doesn't take more than a few days to build and release.


Let's go!


We need no middleman. This is how we do it.

nostr:nevent1qqst8ft6dygqpcc5ht656pmu33npsjdvu7zc9j92cny2xmgq36njuwspzpmhxue69uhkummnw3ezuamfdejsygplwuxkt5a8vj5utj6s8tsj8e3wcavc45p4mqmw92qs7wrh5azmyspsgqqqqqqspe7g5e


Just Waydroid :)


Impossible. Amethyst is native. PWA need to be built in Javascript.


I still want to add it inside the app, but it's still too hard to make it work. :(


Waydroid


Try it. It runs on Waydroid.


Amethyst 🤝 Gnome (by nostr:npub1urwukahe069hd26szx0aru5s3wtpsut948mmdke6dsd6lqrr3rwq30c7x5)

https://image.nostr.build/441b6e109ba4e8baed4eecb5302f81f8aef140506b6f1ca5e6962a66535b9622.png

https://image.nostr.build/590bbb6f5e6c484019467e038a1fbada1b1294044b47923e48093e66e2cf64d0.png


Humm.. we need to work on the large display layout 🤔


Wait. Does this actually work? Is it any good?


It would be nice to define a content provider protocol so that we can keep testing completely separate database structures from different relay apps to see which ones are faster in production. :)

I tested a few different table structures, but we can also test Realm and AppSearch db


The phone is the server
nostr:nevent1qqsvch6u7vph60sj5kcvrphe7gn37f2f23r870r4sv32wtgkannd7pspzpmhxue69uhkummnw3ezuamfdejsygr40yrkmxhlpfx0mma8ugz97fyxclja30rrhlrtg5uhyvlph07trypsgqqqqqqsuyw53q


First one :)


What's a grouped selector?


Their investment platforms are already full of counter-party risks. So, that doesn't trigger anyting with them.


yep.


Makes sense. But I don't see people thinking on that possibility if they have already left BTC live on Coinbase.

People either buy on Coinbase with a plan to take it out at some point or leave it there forever. There is no mindset transition between the two that I could find among friends.

And investment platforms also offer that transition to another investment platform. It doesn't change the Custody in the way we know it, but people think it's the same thing.


Yes, please. NIP 65 should be really tiny.


They run a standard anti-virus if that's what you mean by "technical vetting". :)


I am playing with feelings today. It feels a lot better/safer to go into your investment platform and hit buy on IBIT than to go on Coinbase and hit buy on BTC. I wonder how many people feel uncomfortable keeping their stuff in Coinbase and are just deciding to sell over there and buy in their investment platform.

Their BTC is still at Coinbase. They are selling to themselves. Not much else has changed. But people now have a peace of mind that wasn't there before. The expense ratio is seen as "worth it".

Is this more centralizing? Sure. But can you blame them? No.

Let's just hope one day self-custody solutions can create the same safety feelings these custodial companies do. Right now they are no match for it.

PS: Yes, I know, self-custody is better and safer. But that doesn't mean that it FEELs that way.


Android checks the dev signature when updating. That's why you can't install from the PlayStore and update it with Obtainium. You always have to uninstall first to change the signature profile.

But first time installs are still not checked. But that is the same for the usual Play Store. And if the dev decides to go rogue and add some malicious code, neither Google, nor F-droid, nor Obtainium will find it before releasing it.


Terceiro botão na tela de novo post


Public Chats can be created in Amethyst (+ button in the Messages tab). But we don't create communties yet.


Not likely. I am fully focused on Android.


You can request a deletion in some clients, but everything (including a like) is like an e-mail here. Once you sent it, people can keep your "e-mail" forever. It's on their inbox, not yours anymore. You can't delete things that are in somebody else's inbox, including your Like. But you can ask them to delete. :)


Just don't forget that states have control over DNS records. It's quite a centralized tool.

Placing the same information in your Nostr profile in better :)


But then what's the use of the k encrypted inside?


ohh I was thinking on encrypting the entire json of the event, not just the .content. In that way, you not only have the inside kind, but also all tags that were prepared for the event previously.

Then think the `k` tag should be on the outside event so that Clients can filter drafts by kind. Otherwise, it might be too many drafts for some clients.

Just thinking out loud though, I haven't tested any of this. It might be a bit hard to reassemble the New Post screen from a Nostr event as opposed to whatever the client uses to keep the state of the new post.


I'd like to find a better solution than having Draft event kinds for every other event kind. I'd like to have drafts for everything, even reactions and custom zaps.

I was wondering if we shouldn't have just one Draft event kind where a full event is encrypted in .content and a `k` tag defines what event type this is about. Then apps could easily just download the drafts they have support for and decrypt them.


Now available on the Chrome Web Store!

Satcom introduces a dynamic social and collaborative dimension to the internet, revolutionizing online conversations.

Seamlessly share thoughts, ask queries, and interact with others, all integrated directly into the web content you're exploring.

Download extension: https://chromewebstore.google.com/detail/satcom/lhoejonhkpkgnhaamjcplefkkomlldgi?hl=en-GB&authuser=0

https://raw.githubusercontent.com/jinglescode/web-content-conversation/main/assets/screenshot-discuss.png

Github Repo:

https://github.com/jinglescode/web-content-conversation


ohhh Satcom Extension posts kind 1 notes! Ok.

https://chromewebstore.google.com/detail/satcom/lhoejonhkpkgnhaamjcplefkkomlldgi


Cool guy!

https://jingles.dev/


Peer review everything #OnlyOnNostr
https://cdn.satellite.earth/770e6cb2bdde83e8f885cd10a3c7489fe04004be0e10aaa07dcaa664433abc03.mov


Frankly, no idea. It was supposed to load the default relays.


Hello Nostrians!

Check out the latest piece for Bitcoin Magazine Shinobi about Nostr Wallet Connect potential for sparking a Cambrian explosion of bitcoin apps #nwc

https://bitcoinmagazine.com/technical/nostr-wallet-connect-a-bitcoin-application-collaboration-layer

Some best quotes below 👇

"Standardized mechanism needs to exist for all of different tools to talk to each other. This would allow each application and Lightning wallet developer, to all simply integrate one single protocol that would enable their applications to communicate with each other."

"Nostr Wallet Connect is a protocol making the attempt at being a truly generalized mechanism for fulfilling this need."

"It's based on Nostr’s identity architecture where every event is signed by a cryptographic keypair. This allows an application to generate a Nostr keypair, and from that alone have a cryptographic authentication mechanism to use with an external Bitcoin wallet"

"All of this is coordinated over Nostr, allowing for a very redundant means of communication not dependent on a single centralized messaging mechanism to facilitate the network connection between an application and wallet software or infrastructure running on their home network."

"NWC is useful for far more than simply integrating Lightning into Nostr applications. The entire design philosophy of Nostr itself was centered around keeping it simple enough that the entire protocol could be easily implemented correctly by any developer with minimal time."

"Nostr is the perfect underlying protocol to facilitate that given its incredible simplicity and the redundancy of a large set of relays to utilize. NWC is the perfect example of that being a viable solution. "

Learn more at: https://nwc.dev/

https://m.primal.net/HbXA.png


It can.


The humble NIP that made one-click zaps possible is graduating to become it's own thing. The future is bright.

https://nwc.dev/


Lightning is a clusterfuck of APIs that developers have very little time to understand. NWC is an effort to hide all of that from regular application developers that have more to do than to worry about specifics of each lightning provider. That alone should be enough to name it a protocol.


Most people confuse the technical feature of verifying events regarless of their status - once the event has been sent, anyone that stores it can verify it forever - to the semantical need to "delete" or disapprove your own signed events. Even expired events can still be verified.

1. The technical feature will always exist (you can't stop people from verifying events in Nostr).

2. The semantical need wil always exist. We can resolve that need with Delete Requests, expirations and even NIP-32 labels. But it doesnt mean that the information has disappeared.

The hardest part is building a UX where users trully understand that difference.


I just use GBoard. Most of these keyboards are not good enough for me to use them.


Does it work with AnySoft?


I think we already have the logs for that bug. It's not on any of our code :(

My best understanding is that this is a mismatch between the new UI libraries google has and the keyboard you are using.


No idea how to solve this bug :(


This is awesome! Thank you!


Demo video of using Amethyst with commentary. Share with your normie friends or on other platforms if you think it will show them an advantage of using nostr.
https://v.nostr.build/AG5O.mp4


How are SIM swaps still a thing? This is not an impossible problem to solve. Don't they want to solve it?


Some people say it's Amethyst. Others are wrong ;)

nostr:nevent1qqstq56g5rzcqq9d67c4ydk56zze3kjfk2czycav8le75r7947jklcgpr3mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmqzyqzvj9w6alhrsvtl5u6ygjkwuwg2sf5lukqskgjpuhnd6dpal0kvjqcyqqqqqqgelm52y


Great!


Or maybe we have a Nostr event for TO-DO lists that students can just build on top of.


Everybody knows what "asdfasfd" stands for.

COOL THINGS INCOMING!

nostr:nprofile1qythwumn8ghj7unnwdkxz7fwdehhxarj9ekk7ef0qywhwumn8ghj7mn0wd68ytndw46xjmnewaskcmr9wshxxmmd9uqsuamnwvaz7tmwdaejumr0dshsqgp799xjl5eehvt22sp6sm3kvj28m4qgcnv85qrx2f8c54e6u5723cm26d5k  this is your fault :)


I prefer to direct them to the devs directly.


He is going places!

nostr:nevent1qqst82arnycqgf3cehsdwttnnp5dz28454aq4gsda5elr05rjf6u47qpp4mhxue69uhkummn9ekx7mqzyp6hjpmdntls5n8aa7n7ypzlyjrv0ewch33ml3452wtjx0smhl93jqcyqqqqqqgrz728q


nice!


Yep. But I don't think they will chose the algorithm. They will choose the PubKey (the brand or person behind it). If it works it works. If the algo gets too boring they will stop following it. The algo itself is kind of irrelevant. Users will trust other users, not the algo.


As Nostr's Chief Android Officer, I approve this expense report. :)


Also, I think the in-app subscription stuff from Google is not as used/developed as the iOS counterpart. I have used Android for over 10 years non-stop and I have never paid via the in-app subscription framwork. I don't even know if it works at this point :)


I am waiting for an event type where certain pubkeys publish with their trendeing. People can follow those keys to receive updates in their trending lists. Each user can then follow as many trending providers as they want and the Client will merge it all.


No plans to activate any type of subscription this year. It's a possibility for the years to come, but I want to try direct dev compensation first and avoid having to have a formal LLC or an NGO for Amethyst.


If the dev is malicious, F-droid will compile the malicious code as well (F-droid doesn't review any changes to the actual code). There is no extra safety being added by F-Droid. They only check if the code is open source, that's it.


Coding tutorials should just create their TO-DO lists in Nostr and let their students deploy immediately without thinking about databases.


No need for F-droid (which is also very centralized) if you have Obtainium


Nao ha muito para verificar. Relay eh uma propriedade privada. Eles nao podem fazer muito dano (so deletar posts). Relays sao apenas um armazenamento temporario dos seus posts. Se vc nao paga por um armazenamento a longo prazo, eh provavel que os seus dados serao apagados em algum momento.


Once I met a privacy advocate with a 30-year career fighting for privacy at multiple reputable privacy-first organizations who told me a database of medical records shared between the patient and their government satisfies his definition of a patient-private architecture.

Similarly, you will find many decentralization advocates claiming that many solutions, like Farcaster or BlueSky, are decentralized.  They usually truly believe what they say, and that's why they are so effective in selling it, but the trick is to know what their definition of decentralization actually is.


Strange. I have used Obtainium for over a year and never gotten an issue. Are those with Amehyst? Do you also use other forms of installation?


No, they are different things with the same name. That's why it shows as installed. But the PlayStore update will never work because the signature is different. Once you switch to Obtainium, you have to keep using it or uninstall and try another method.


Existem 3 mil relays operando hoje em dia. Tem de tudo. :)


Sim, ou que precisam de muita informação criptografada, como sistemas médicos.


Os mais difíceis são os sistemas que precisam de algo super privado


Sim. Esses são os mais fáceis


But maybe he can create a Nostr account and a lightning wallet to receive a few zaps.


Sorry, I don't think you will find many people with LTC assets in this place.


LTC?


What do you mean? If you joined the group, it should show up in your messages


Makes sense, but I am not sure if the trade off is that much. In the PlayStore, you have to TRUST Google to not fuck around in first-time installs. There is no first install check in the PlayStore as well for those attack vectors.


Imagine when he realizes that I created a coin called Karrot to represent vision exams in a circular vision insurance marketplace between employees, employers and vision doctors. 😅


Welcome!


No idea. The main question is who decides what shows up in Aurora's app catalog?


I am very proud of the verifiable credentials we made for Covid. Those QR Codes were the first time in the history of digital health that medical information was transferred from provider to provider through the patient and not some massive corporation or governments. The patient decides who could see it when the patient shows it to whoever he/she wants. The data is fully stored in the QR as a W3C Verifiable Credential with DID keys. Nothing is more decentralizing than that. And it's so private that most QR codes were actually printed instead of stored electronically.

In every other implementation of health information, that transfer happens either through massive corporations, like in the US, or through governments like in Brazil, India and Canada. In health care, you have absolutely no control over your data. You don't even know who has it and how many times it was used. Our "little experiment" generated 5B QR codes and neither governments, nor the usual corporations have idea who, when or what scanned them.

It was a massive win for the decentralization of health records.


Are you behind a firewall/VPN or using Tor?


Searching for [0] brings back a lot of posts. I have no idea which Client still uses them, but here's one:
 nostr:nevent1qqsrsuc3yd39qh0vx2ldy0a5gl2y33m5snt5t0wvp2j597v59tqnqfspzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgq3q39k0kre32cdkc4x4n40ec8xf6xp64dxtqe4rpvd93r3tmelufnaqxpqqqqqqzx2fphl


Sure, if people can paste that into a browser and things just work that would be better. But I don't think they can do this right now.


Nice! I want this.


nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgnwaehxw309ahkvenrdpskjm3wwp6kytcpr3mhxue69uhkyatrddjhgtnrdaexzcmvv5h8xmmrd9skctcqyztuwzjyxe4x2dwpgken87tna2rdlhpd02va5cvvgrrywpddnr3jylthnsv  why is the njump link not highlighted to click on Coracle? Maybe a bug?


When sharing Nostr content, opt for sharing the link using Client-agnostic platforms like https://njump.me

It's very annoying to receive a link that forces the use of a Client that you don't or can't use.


But we do, the preference to install is in order. Both on GitHub and on https://amethyst.social


yep


Is bitcoin better money because of those properties? Sure.

Are those properties a requirement for money? No. History is full of moneys that didn't offer much but were still highly used.

Is a global unified ledger a requirement? No, you can have sharded ledgers everywhere. They can all be different from one another. Does it exist today? No.  Could it exist? For sure. Do we know how to build it? No.

Just because things are the way they are doesn't mean that better things cannot exist. I don't know if we will see something better than Bitcoin in my lifetime, but there is no mathematical proof that a better system can't exist.

Let's give it another 100 years and check in later. My bet is that Bitcoin will last as long as other global reserve currencies have lasted. Then somebody will have a true new idea.


Yep, but you run the risk of trying to do too much. This is going to be a lot of code to maintain. And since these frameworks change fundamental things quite frequently, it's possible that it gets to be too much to maintain by a single repo.

Years ago, I had an employee that tried to keep a framework with Angular and Ember at the same time (at the time they were the two main frameworks). The project didn't last 6 months before he completely gave up. :(


Yes, the app is FOSS, but the app is the least important part of F-droid. The key is the catalog of apps that is extremely controlled by a few individuals that review. To give you an idea, Firefox is not opensource enough for F-Droid's review board. Which is bonkers.

To me, as an app developer that publishes constantly to both Google and F-Droid, the F-droid review board has been way more controlling of what I can do in the app than what Google does. Which is also bonkers.

But again, neither Google, nor F-droid is there to decentralize things from themselves. Both are incentivized to keep as much control as possible. And that's my hole point to move away to Obtainium.

FOSS doesn't mean necessarily mean decentralized.


Have you heard about a global Cashu ledger? ;)


F-droid is as centralized as Google. Just different overlords.


let's go!


yep, things weren't easy back then. Remember, that most laptops struggled to connect to WIFI in those days. Linux didn't even have drivers for most boards. Then imagine redesigning sockets on top of that mess.


The fact that Bitcoin needs a single chain of blocks is a centralizing factor in itself. Nostr is much more decentralized because it doesnt need a chain. We can have transactions everywhere. There is no need for consensus.

Nostr wouldnt work for a global ledger but it does work for most other applications.


I don't know if that is a good idea. It seems like too much. If your goal is to trully have quick and small apps everywhere, then the choice of the framework doesn't matter as much.


That's unfair. Most of the stuff was really good (for the time and money spent) and was working just fine. He pushed hard. When you try to change things at that scale there is no way to not make mistakes. Remember, this was before Tor became usable. And Tor is basically the protocol for sharing your own internet, just without the web of trust component.


Sim, nao apenas a App é grande e os eventos da Nostr são mais pesados do que outros protocols, mas os conteudos (imagens, videos e fotos de perfil) são normalmente gigantescos no Nostr.

Tem foto de perfil animada que chega a 50MB para uma unica foto. Portanto, chegar a esse volume de dados é normal.


That's a great mission statement.

FYI, I think the choice of `tailwind` vs `shadcn` is too hard for JS beginners (like me). I would prefer that you make a choice yourself for the default case and leave the other option to be activated by params in the command line for the folks who know what these two frameworks actually do.


For now. :) Until GitStr :)


Back in 2005, while cypherpunks were grinding their way into Bitcoin, I was deep into an idea we called "Sovereign Computing": a set of freedoms that would re-create the web with the user, and not corporations, at the center of it. It was initially proposed by Klaus Wuestefeld, one of the senior engineers who shaped most of my early career. The apps we made are mostly gone (turns out CVS wasn't the future of version control), but most of those freedoms still hold quite well.

http://sneer.me/resources/imgs/traditionalNetwork.jpg

At the time, everything was deeply tied to ISPs, DNS, and several middle-layer providers that limited your expressiveness on the web by charging for everything. IRC was coming to the end of its downfall. We were slowly becoming slaves of big tech.

Klaus wrote a manifesto that lured people into developing several little projects that could decentralize everything. Many of them were P2P mesh networks where users could talk to each other directly (without servers) and even re-share their own internet connection with their trusted peers. It was a big f*** you to people that thought they could control us.

Free Software users or not, they were no more than subjects conforming to the arbitrary laws dictated by a handful of Internet `authorities`. People got fed up with that monkey business. They decided they would be free to share information and hardware resources with their friends at their own pleasure.

This is how the manifesto went:

Freedom 1 - Own Name

It is the freedom to choose any name for oneself. The format of the chosen name is not limited in any way, even in the case of homonyms, and there is the possibility to change the chosen name at will.

Freedom 2 - Nicknames

It is the freedom to choose any name to refer to others. This freedom is not limited to persons, but applies to anything accessible in the virtual world. This freedom is based on the notion that absolute addressing schemes imply in the abdication of one's freedom in favor of some central authority. According to this, the alternative would be relative addressing schemes centered on each person.

Freedom 3 - Trust

It is the freedom to trust anyone one wishes. It is the possibility to assign a degree of trustworthiness to any person, possibly depending on the subject (for example, one's opinion on music could be highly trusted, but not on cars or economy). Also, the degree of someone's trustworthiness would depend on the relative distance to other persons (for example, one would trust more one's friend than one's friend's friend).

Freedom 4 - Privacy

This freedom has two aspects: the freedom to see only what one wants, and the freedom to keep information inaccessible to untrusted people. One application of the first aspect would be avoiding spam by only accepting messages from people above a certain degree of trustworthiness.

Freedom 5 - Expression

It is the freedom to express oneself. It is not only the freedom to expose one's thoughts but also the freedom to make syntheses of information provided by other people.

Freedom 6 - Hardware

This is the freedom to share hardware resources. This is based on the assumption that most hardware resources are underused, especially among domestic users. By federating the resources of a large number of people, it would be possible to decrease the dependency on internet providers and internet hosts.

Freedom 7 - Software

It is the freedom to share all software one uses. It is based on free software that is spread through trust networks across the globe. There is no need for a single, centralized distribution point.

http://sneer.me/resources/imgs/sovereignNetwork.png

---

It's bizarre to see how many of those early thoughts can be seen now in Nostr.  Maybe one day we will fully free ourselves from the web's overlords.


This is your periodic reminder to install Amethyst (and all other Nostr clients) through Obtainium instead of Google's PlayStore.

You not only receive faster updates (the PlayStore is currently 4 versions behind) but you also start the process of freeing yourself from your invisible digital overlords.

Just follow this video: https://cdn.satellite.earth/2bd7e308c1797d64fca09b1d61e9bde24c68dd45e501c7383eff1e85392df11f.mp4


I can't find 114. Is there a text somewhere? I am trying to sync 200K events at least once a day. I am not sure if the id-only version would work but happy to test.


#Amethyst v0.83.12: Improved text processing

- Faster text parsing makes it a smoother scrolling experience.

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.12/amethyst-googleplay-universal-v0.83.12.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.12/amethyst-fdroid-universal-v0.83.12.apk )


FYI, I think full Negentropy is way too complicated. I have been testing a similar, but simpler sync scheme and I think it solves most of the need https://github.com/nostr-protocol/nips/pull/826


Foundations, like OpenSats, are very top down. Their managers decide how to award grantees. Associations are generally bottom up. The presence of official members creates a different sense of accountability for each member and more discussions on the right use of the money.

Its just a very different way of doing the same thing.


nostr:npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424 I think this fixes that relay connection issue. 🚀


#Amethyst v0.83.10: NIP-92 and Bug Fixes

New Additions:
- Includes a link to the product in the first message from the buyer in the marketplace
- Adds support for NIP-92 in public messages and new DMs (NIP-17). NIP-54 stays in NIP-04 DMs
- Adds Horizontal Scroll to the action buttons in the New Post screen to partially fix hidden buttons in small/thin screens.

Bugfixes:
- Fixes crash with an invalid custom Zap Amount
- Fixes relay re-connection issues when the relay closes a connection
- Fixes the top padding of the quoted note in a post
- Optimizes memory use of the visual user and url tagger in new posts

Updated translations:
- Persian by nostr:npub1cpazafytvafazxkjn43zjfwtfzatfz508r54f6z6a3rf2ws8223qc3xxpk
- French and English, United Kingdom by nostr:npub13qtw3yu0uc9r4yj5x0rhgy8nj5q0uyeq0pavkgt9ly69uuzxgkfqwvx23t
- Ukrainian by crowdin.com/profile/liizzzz
- Spanish, Spanish, Mexico and Spanish, United States by nostr:npub1luhyzgce7qtcs6r6v00ryjxza8av8u4dzh3avg0zks38tjktnmxspxq903
- Arabic by nostr:npub13qtw3yu0uc9r4yj5x0rhgy8nj5q0uyeq0pavkgt9ly69uuzxgkfqwvx23t

Code Quality Improvements:
- Updates to Android Studio 2023.1.1 Patch 2

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.10/amethyst-googleplay-universal-v0.83.10.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.10/amethyst-fdroid-universal-v0.83.10.apk )


That was my first instinct but so many people were against it that I had to reconsider. :)


oh... interesting... Its the NIP11. The relay should return a JSON with its capabilities.


@Fiatjaf was like "What if we just sign some small JSONs?".

Boom: whole new research field.


DVMs everywhere!


It's not enough to just run over Tor. The SimpleX protocol suggests creating a separate Tor session for each of your contacts. Otherwise the server still knows too much. Just putting them into Tor reduces the metadata, but not by much.

In my version, I want to go further and put each message in a separate Tor route, which is probably too slow. Tor wasn't made for this level of privacy.


It's not private enough. I am looking for something better than SimpleX. Something that has onion routing backed into it (no way to run without it) while at the same time natively paying for forwarding messages to reduce the likelihood of them selling their user's metadata to be able to sustain their operations.


They are all terrible, though.


Good problems to have.


He is the king of monolithic architectures :)


Yeah, spam is not a target here.

Privacy from the relay network what I was trying to understand. I think the ideal network would be some type of onion network where nodes are paid to forward encrypted messages and the path to the destination rarely repeats. In that way:
1. the network is incentivized to continue existing.
2. assembling the metadata of any conversation becomes extremely hard.


One of the reasons Amethyst still doesn't store anything....


Have they failed already or are they still alive? I used their stuff for a while. I was cool. Not Nostr-level cool, but cool nevertheless.


Interesting. I was wondering that a private layer with a native revenue model could be good for Nostr. Is there anything else that always requires a few sats to transfer a message?


Can we transfer a Nostr DM in P2P through lightning nodes (with a small payment to pay the transfer costs of the message)? 🤔

Encrypt and sign with your Nostr key as usual, but send it through the LN network as a payment. That will resolve the IP tracking by relays. It uses the LN network as a VPN (gotta trust the VPN provider) and "Tor" network.


Intersting I wonder if there are some VPN-related timouts going on.


hum... I have seen some reports. Are you using it through Tor or VPN? Or just regular use? Via WIFI or mobile?


Well, my first issue in the Nostr GitHub was about getting DIDs into it :)


Nothing like large old code to sink the big bucks.


I am ready to reassemble Tor in top of Nostr events. :)


Actually, I do. Otherwise, Nostr would have used DIDs from the beginning. :)


Seriously doubt. Most of the adult learning (the good and the bad) right now is happening through social media. There is no way back.


his sleep schedule. :)


how can you sleep that much?


How dare them allow me to speak


Associations typically don't offer any returns. Think how the Rotary and Lions club work. People donate and participate in their meetings to do good, not to have any personal benefits from it.


The sad state of Bitcoin Core funding: "It more or less went from being the era of alt-coins funding Bitcoin to the era of nostr:nprofile1qyghwumn8ghj7vf5xqhxvdm69e5k7tcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qpqsg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237lmu63que4n6l  giving people a lot of money". Carla Kirk-Cohen

https://youtu.be/VRDNtfLmbFU?si=jHjf889HiodLjsUQ&t=1475


These days, I think It depends if they are getting minimally well paid or not. Lots of people still have their 2019 salaries.


It's impossible to have settings for everything.


No more closets?


Shall we just mail them some SATs cards? They might need it in the future.


No. The nostr address needs to be purchased by a Nostr Address provider. There are 1000s of options out there and you don't need one if you don want to pay. But this is a separate thing that identifies you.


Definitely delete them if you want the app to not use it. Loading times and loading pictures depend on your internet speed more than anything else.


It's because you placed an npub instead of a nostr address (which is like an email) in you profile.


Nice! Let us know how this goes


Do they offer a phone app to run their stuff?


Sure, but I want the backup on the phone itself. Most users don't have a computer. They have to do everything in the phone.


Interesting. Other folks said that it was working with FlorisBoard. Do you have autocorrect on?


Thinking about doing some micro apps for android. Is it something you want?

What apps would you want?

1. Delete notes
2. Manage your lists
3. Local relay to backup your notes
4. Other


Local backup relay for sure. I don't want to add a DB to Amethyst if I can avoid.


it's your keyboard. You have to change it. Try Gboard, Anysoft or Florisboard: https://f-droid.org/en/packages/dev.patrickgold.florisboard/


If you want to remove it, take it out of the list


If it's in the list, it will still connect but not transfer anything besides the bytes for the connection


Thats my main problem. But there are some ideas here.


What do you mean by activated?


Very interesting


* adversarial thinking

(And forced replies to make sure you confirm you know you can't write).


It's about adversarial all the way.


No, nobody is "under" anything. They should all be independent from one another. And it's not about sending all the money in just one way, it's to have as many money avenues as possible.

Devs will have their legal and revenue models in each project. The associations would have a separate model that can add or fight against projects according to their own values.


Neither was I. But this idea that "people we trust need to do it" is dangerous. What if WE are wrong? What if our need to "trust" is hampering Nostr's development?

I think about that all the time. The Nostr community is extremely close minded. We are all basically the same individual. It's by far the least adversarial community I participate nowadays.

I want to trust the free market. If some crazy person goes for this and attracts significant support for their ideas, I will be the first in line to want to see it just to make sure my ideas are what I think they are.


No, while the entity could hire those, they would not be managers because the entity wouldnt have their own projects. Their goal is to double down on other projects out there that are managed independently by those groups.


Or many alternatives to OpenSats with completely differentiated fund flows, legal structure and accountability loops.


So, you think we don't already have a W3C in Nostr today? My point is that we should have an alternative W3C to compete with the current one.


Man.. Bitcoiners really have a PTSD with Foundations don't they? You all need therapy. :)

It doesn't need to be just one association for Nostr. The goal is to not centralize, but the decentralize from today's projects and create free-market accountability to the decision on the application of the cash alone.

That is a feedback loop that should be separate from the application development feedback loop.

Devs can do the app dev feedback loop just fine. But we are generally terrible to create good cash application feedback loops.

Separating the two makes sense. It allows users to bet on separate individuals.

nostr:nevent1qqsw2nlnf928yz59e7y8xnx6p9p7385shvan0tg2gxrqrwatyxphxlqpzemhxue69uhhv6t5daezumn0wd68yvfwvdhk6q3qgcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqxpqqqqqqzr7dy7l


No, I mean separate the money flow and accountability to that from the existing projects.

We can have multiple associations as well. As a user, you can subscribe to whoever you think better uses their money.


Sure, the elites today are not making money. But the power is already there. They just need to turn power into profits. It will be a lot easier for them than to any other dev.

Elites are not necessarily good or bad. They will exist no matter what happens. The problem is to create the right free-market accountability to them. Usually that means different interest groups that are ready (have the legal and operational structure) to seize the elites place as soon as they make a mistake.


Those elites already exist. Independent of this idea of the association. A developer elite we have today is not necessarily better than any other type of elite.


Needless to say, just copy whatever you need from Amethyst :)


Quartz is very basic: Just models and the crypto stuff. We are slowing moving things from Amethyst over there.

The relay connection management via RelayPools we all use is completely outdated. And I think there will be different relay connection strategies for different apps. It's unclear if there is a way to create a single lib that provides enough flexibility on relay management to make it work for a good number of apps.


What's the error? And which server are you uploading to? It could be that the video is just too big and no server is accepting it.


That's the benefit. Associations generally operate like that.


Foundations tend to be legally limited on having members, so I think Associations might fit better in this model. But yep.

Good thing we are so free that we can't really block the creation of such entity :)


Some entrepreneurial mind should create the Association for the Development of Nostr: a formal membership-based entity whose sole purpose is to use it's membership revenue to support the open source development via it's own staff.

Having an entity that is pushing code without being connected to any particular project is essential for decentralization of our own projects.


In the year that Apple finally arrives in VR, Meta, Microsoft, Google and even Samsung are dropping everything to go all in Generative AI.

Competition is back. Fun times ahead.


This video is the warning you need to not handle your keys in the open, much less in a QR code.

https://video.nostr.build/923e09a299a4ac02f79f2a8caee7786bccc4762cb6b9f719648e729747b79c4b.mp4


I loop through tags so much that my main priority is to minimize alloc as much as possible. The filter -> map creates two lists and would already create Garbage Collection problems when scrolling.


are you serious? :) If so, you are running a very old setup.


I keep going back and forth too :)

I think 1 might get annoying very fast.


I need your opinion.

When you are on Amethyst's the main feed (not in a thread) and you click reply in a post, write your message and post, should Amethyst:

1. Redirect you to view that thread and show your reply OR
2. Stay in the main feed to quickly move to the next topic?

1 or 2?

1 shows the confirmation that your post is there.
2 allows faster replies in many posts.


Ignore me, I am just testing something.


That's sad :(


There are some video formats that are poorly designed and the uploader can't process it correctly. It usually happens after some compression by another app like WhatsApp or Telegram.


Thank you!


hum.. I dont have a report on video uploads. Is the issue on all videos or one specific video? Which server are you using to upload and which Android do you use?


There is no such thing as a perfect product. Lifetime of an app's codebase is usually 2-3 years. After that, the app either starts feeling outdated or, more frequently than not, another app does the same thing in a more modern way.


Not necessarily. Pharma interferes for sure, but nurses and doctors either with little time or literally burning out is also a huge source of: "oh do you just want the pill? Sure, here is the pill."


nostr:nprofile1qyvhwumn8ghj7un9d3shjtnndehhyapwwdhkx6tpdshszrnhwden5te0dehhxtnvdakz7qghwaehxw309aex2mrp0yhxummnw3ezucnpdejz7qpqxdtducdnjerex88gkg2qk2atsdlqsyxqaag4h05jmcpyspqt30ws5jg057  can easily build one.


Yep, that is a well known issue in the default keyboard of Graphene when using with Jetpack Compose apps.


I always avoid recommending client-based relays. Independent relays are generally better for decentralization.

Try:
- wss://nostr.mom
- wss://nos.lol
- wss://nostr-pub.wellorder.net
- wss://relay.nostr.bg
- wss://nostr.bitcoiner.social

Paid:
- wss://nostr.wine
- wss://relay.orangepill.dev

Get a Personal Relay:
- https://relaying.io
- https://nostr1.com


One of the things I learned in the US Health Care system: you better ask a ton of questions because for every health situation there is always going to be a very, very easy and wrong solution.


The quotes are the best.


I used to say that you can't overcome Google by just copying the same business model that Google uses. You have to create not only a new product but also a new way to collect the revenue. We will see if it works :)


I think many of these keyboard issues are related to the autocorrect mode of the default keyboard. I think somebody was able to disable the autocorrect and it also started working.

nostr:nprofile1qy2hwumn8ghj7mn0wd68ytn00p68ytnyv4mz7qgmwaehxw309aex2mrp0yhxummnw3e8qmr9vfejucm0d5hsz9thwden5te0wfjkccte9ehx7um5wghxyee0qqsr5hx0nu0va5508g6dk9mq2nchurlz2jf2x0tnfdxqfq4qngn4ajsh4jmln  do you want do a post on the keyboards that you have tried? I would love to have it so that I can share with GrapheneOS folks that are having the same issue. I think most people have never thought about changing the keyboard and just bash Graphene/Amethyst for the instability.


Very strange.


It seems to work. 🤔
https://image.nostr.build/3c7b6f69dd426454fa7135f384381d899ae90c758fad96766de5ebaddbfeeab2.jpg


hum.. so it could be that and older event is arriving from a relay that is in our default relay set, then it changes to the 3 relays and disconnects from the relay you might have a more up-to-date relay set.

We might need to figure out which relay has that event with just 3 relays in your list.


Let me know when it happens next time without resetting the relays on Amethyst. I want to see if your relay list online is blank or not (sometimes other clients clear it up).


Yeah, we need to figure out a better way to separate those two groups


It shows all participants and it sorts by your follow list first. So you know where your "friends" are talking :)


In the same way that bitcoin transactions are fully public and can be watched by the IRS, zaps can also be watched by them. There are private zaps, but very few clients implement them. The majority of zaps you receive are public and you cannot change that (it's the sender's choice).

If you don't want to receive public zaps, don't add the lightning address to your profile.


You can now use your Nostr key to create a zap forwarder to your Cashu wallet. 🤯
nostr:nevent1qy08wumn8ghj7mn0wd68yttsw43zuam9d3kx7unyv4ezumn9wshsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qy88wumn8ghj7mn0wvhxcmmv9uq3qamnwvaz7tmwdaehgu3wd4hk6tcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qyv8wumn8ghj7mn0wd68ytnxd46zuamf0ghxy6t69uq32amnwvaz7tmwdaehgu3wdau8gu3wv3jhvtcpr4mhxue69uhkummnw3ezumt4w35ku7thv9kxcet59e3k7mf0qythwumn8ghj7un9d3shjtnwdaehgu3wvfskuep0qythwumn8ghj7anfw3hhytnwdaehgu339e3k7mf0qqsqpny7nqr8tggktwrwcp4q2czwa4u4zy6zkp9mmevcyec2hr9cpyqq589ta


The discovery tab is the last to load. So that could be it. Or if you are using relays that limit in the amount of subscriptions or filters, they will cut the discovery tab requests :(

You can also try moving the app to the background and back to the front again. That forces the restart all connections with relays. If this restart fixes it, let me know.


This is very cool! Quick Nostr projects are easy to make with Osty

nostr:nevent1qythwumn8ghj7unnwdkxz7fwdehhxarj9ekk7ef0qywhwumn8ghj7mn0wd68ytndw46xjmnewaskcmr9wshxxmmd9uqsuamnwvaz7tmwdaejumr0dshszxmhwden5te0wfjkccte9ehhyctwvajhq6tvdshxgetk9uq3jamnwvaz7tmjv4kxz7fwdehhxamgv4ex2tnrdakj7qgewaehxw309aex2mrp0yh8xmn0wf6zuum0vd5kzmp0qywhwumn8ghj7mn0wd68ytnzd96xxmmfdejhytnnda3kjctv9uq3gamnwvaz7tmjv4kxz7tpvfkx2tn0wfnj7qgkwaehxw309ac82unsd3jhyetvv9ujucm0d5hszxmhwden5te0wfjkccte9ehx7um5wfcxcetzwvhxxmmd9uqzp37ljat86eatz94h069h0k5cp38lvjl2dkn2qf2vg6s68p6k42xyht54r4


Can you check if this is a keyboard issue? Does it happen if you change to another keyboard?

0.83.8 had several dependency updates. It may be that one of them is breaking on some keyboards :(

Also, I placed the report here: https://github.com/vitorpamplona/amethyst/issues/757


Are you using any other client?


Play version or FDroid? This looks like it only happens in specific OS versions. We are still trying to find why


Just image previews for public notes. You will see more pre-sized blurred images before the real ones load when in mobile data. It doesnt do much over wifi.


This is actually good. You should add more stuff: ark, cachu.


Thank you! So it's immediately after you select. That gives me a good idea where to look. It also seems like sometimes it works, right? That weird.


Any chance you can record a video? We are hunting for this bug, but we have no idea where it is.


Displaying or not, Zaps are public. The IRS already knows you received them.


I am willing to bet that, in 20 years, when Nostr becomes the only social network, there will be physical relay companies whose sole job is to receive a letter from regulators with a Nostr filter and reply with printed pages of the Json events.

Congress will love it.


It worked really well :)


Listening to them would be just like zap.stream.

Talking is still hard because it has to connect with a given audio protocol. But maybe we can create the equivalent of NIP-96 for that protocol so that all Nostr Audio rooms can be connected using a single API.


Testing the new Nostr Nests 🚀

https://image.nostr.build/c93e7eff33905b06d44f162c2d3db5966b2c7d4de32f7e83aee6ff311d002cec.png


let's go!


Good point. Why can't we get a mortgage on a massive S&P purchase?


Another deep learning from Nostr: an "eternal machine" does not require digital scarcity (blockchains)


No KYC helps but does not solve it. Your government doesn't need KYC to figure out you have illegal (in their definition) bitcoin and put you in jail.

You have to play politics. Signing off from politics just because you have non-KYC bitcoin is a huge mistake.


ohhh yeah, I need to fix that. :(


That's the problem. It ONLY doubled. The S&P gained 2.7x without reapplying the dividends. And I am willing to bet it gave you more headaches than what a line in your Fidelity Account would do.


* rein


Kind of... The government can simply ban bitcoin in the same way they did with Gold in the 30s. There is some control in the table for sure.

Tech doesn't solve politics. If you allow your government free rain, they can pretty much control anything you can think of.


Many of my friends have been preferring to own an S&P index and rent as opposed to owning a house. I find myself in that understanding as well.

Flimsy US Houses depreciate too much, too fast, and require too much regulatory upkeep (taxes, licenses, reviews, approvals to modify, insurance, not as liquid, etc) to be worth the hassle.

If this is true for the rest of the US, my main concern is decentralization. It doesn't make much sense to have the entire population owning your most valuable 500 companies as their main asset. It's a lot easier to shape/control 500 companies than millions of houses.

But maybe I am overthinking this. Is this a valid concern?


Nice! Finally!


Thank you!


Interesting. Do you use an app that does this already? I have seen long screenshots but never did them myself.


If I coded for 4 days straight and ship in the evening, Amethyst would have used 15 fonts and half of them would have been cursive.


Not yet


We are now in half a second to do in-device text-to-image generation. We will see in-device mid journey first, than chat gpt next, then in-device video generation. Things are moving fast.

https://blog.research.google/2024/01/mobilediffusion-rapid-text-to-image.html?m=1


Double agent ? :)


Just zap the release notes. That is the best way. :)


If you receive yourself, in a thing you control (similar to a bank account), you have to declare as your income and deduct expenses from it. I want to see if we can avoid all of that.

On top of that, I don't want the legal liability of having made sale-based promises to users (like the translation item in Purple).


Ok, Everybody wants Amethyst Purple now. But hold your horses.

I want to first try a release-based donation model that goes straight to the devs/designers/translators who helped in that specific release. It's similar to what we do today in my release notes where your zap splits go straight to the devs.

The goal of the model is to align the right incentives with the finances: we only get paid when we have something new. If we don't ship, nobody gets anything. That will keep the wheels turning and avoid the usual product stagnation.

On top of that, I don't want to make Amethyst a company. At least not yet. Companies are too centralized and complicated for my current taste. I want to see if we can stay as a humble open-source project while collecting the same amounts a company would but through your direct payments/donations to what would have otherwise been employees.

Basically, an extreme version of value 4 value.

We will see if the idea works. It's still early and we already collect a good amount per month (~$1700/mo combined). So, it should be possible. Fingers crossed.


I am going to try to make it work without subscriptions and purely on donations in the release posts. We will see if it reaches the required amounts.


#Amethyst v0.83.8: Bug Fixes

New Additions:
- Removes the need for Amber's package name in the androidManifest for the external signer by nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5
- Adds a longpress to copy url to the url preview card by nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5
- Adds support for always rejected permissions from external signer by nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5
- Adds the exception descripton to the Zap error message.

Bugfixes:
- Fixes secondary buttons theme in the login and signup screens.
- Fixes vertical misalignment of some npubs in the middle of the note.
- Fixes NPE when accounts are not present when resuming the app in a group
- Fixes missing language options for Greek by nostr:npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
- Fixes content sensitivity for NIP-54 images.
- Fixes proxy setup when de/activating Tor / changing ports by nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5
- Fixes remember of the wrong hashtag because it's a different post.

Updated translations:
- Czech, German, Swedish and Portuguese, Brazilian by nostr:npub1e2yuky03caw4ke3zy68lg0fz3r4gkt94hx4fjmlelacyljgyk79svn3eef
- Spanish, Mexico and Spanish, United States by nostr:npub1luhyzgce7qtcs6r6v00ryjxza8av8u4dzh3avg0zks38tjktnmxspxq903
- Hungarian by nostr:npub1ww8kjxz2akn82qptdpl7glywnchhkx3x04hez3d3rye397turrhssenvtp
- French by nostr:npub106efcyntxc5qwl3w8krrhyt626m59ya2nk9f40px5s968u5xdwhsjsr8fz
- Dutch by nostr:npub1w4la29u3zv09r6crx5u8yxax0ffxgekzdm2egzjkjckef7xc83fs0ftxcd
- Serbian by nostr:npub187h9tymz5j6vhyl26kl74yh6yzqzpjec9806w7taey2zefytlmdsttx7v2

Performance Improvements:
- Makes sure cancellation of coroutines stops long processes.

Code Quality Improvements:
- Makes the benchmark module profileable
- Updates dependencies

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.8/amethyst-googleplay-universal-v0.83.8.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.83.8/amethyst-fdroid-universal-v0.83.8.apk )


Thanks to nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5, Android users can now sign in to noogle.lol using #Amber. 👀

🤌


No. We would have had 15 professionally-looking Bitcoin full node implementations if he was Satoshi.


nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft's marketing agency is going wild.

Go try http://shipyard.pub

https://video.nostr.build/ba75b04c45ac77bca421b5f1165b38791081b6a9845e831e79e9d4a7c695bc1c.mp4


Nice! This is way better than Zap Splits with devs :)