Avatar
Vitor Pamplona
460c25e682fda7832b52d1f22d3d22b3176d972f60dcdc3212ed8c92ef85065c
Nostr's Chief Android Officer - Amethyst

Trust is an invisible currency.

It not only allows for transactions of value, like exchanging goods for money, but also exchanging vulnerability for connection, or ideas for adoption. It's a medium of exchange for belief, forgiveness, and follow-through.

Trust must be earned through actions like honesty, consistency, and reliability. It is harder to acquire and more valuable when present. It's the core ingredient for strong bonds, deeper connections, and reliance.

Happy new year, folks! May your revolutions come true

Who is going to release the first new client of 2026?

Simply because we haven't found anything better to put there. This was the most interesting image we got that more or less aligns with the community we built.

Again, no one has ever sent me an actual proposal to change, and you two are the only ones even talking about it in over 2 years. I accept the help. Just find something interesting that connects with what Amethyst is.

Search means looking for users when you @ somebody (local db of profiles FTS indexed) + searching for something you have seen (FTS of content events) + searching for both in a relay with NIP-50.

In practice, the API call can be replaced by a relay, which we already do. But it is too slow or inconsistent over time (relay gets busy)

Just imagine the amount of work to re-do Nostur in Android... 3 more years just to get to the same level it is today.

Come on man.. the job is to find one that looks good in EVERY SINGLE PROFILE. Don't offload a page with tons of options that don't even make any sense to us. You are the one asking for it. This doesn't require any technical skill. You can find one that works.

Also, you don't want AI slop, but you are perfectly fine with ultra-generic, corporate-looking, boring STOCK photos that have no soul whatsoever? That is indeed worse. The current image is fun, unique, and connects the topics of "Social", Bitcoin, and touching grass at the same time, while using our mascot Amy (a baby ostrich) as a base. It was created to celebrate Ametyst's first year, and that is why it is a "birthday" scene.

Find something that has a story... that connects to us as a community. Not some boring stock image that could be used in any app.

Yes, I am going back and forth on the idea of caching vs full db. Ideally the json events should stay local so make sure search of the past seen things works, but it is probably too big to keep on phones (10GB for my account) and it is definitely not fast. Every time it hits the disk, it slows down to a crawl.

Ideally, I'd like to keep the db with under 75MB of memory so that I can have 400MB for the rest of the app. But the indexes alone won't fit in 75MB of ram...

Don't worry, half of us aren't great english speakers either. :)

We have a few NIPs and drafts of different ways to do the same thing. We are currently trying to figure out which one is better for which type of service.

I actually think the goal of private equity is to destroy businesses. And their investors are all those businesses' direct competitors, with a bunch of fools from public markets make it legal. In that way, the competitor can share the cost of bankrupting a rival with the public market while collecting new revenues from those who won't go to the bankrupt place anymore.

Now put that simplistic view 7 c-corps deep and add politicians and sovereign funds to it.

The dev learning curve is always the same

Graphene? There is a bug that AOSP doesn't send the onPause event and the app doesn't know it's in the background... I am still trying to figure out where this is coming from. But it doesn't seem to happen on Google/Samsung variations.

Also. Don't worry we are not downloading 3GB of events on Amethyst yet :)

Nip99, but specific is good. Nips usually start super general and migrate to more specific kinds with more appropriate tags.

Its like pictures and videos that went from kind 1, to nip 94 files to nip 68, and videos files went even further by separating between shorts and longs.

Two weeks of hardcore performance work on Quartz, but now we can import 3GB containing 2.1 million contact list events in 9.4 minutes, *single-threaded* on a Pixel 9, using just a cool, calm, and collected 15MB (yes, MB) of RAM.

That's up to 10,000 events per second per CPU for lighter follow lists and 3,000 events per second on heavier ones.

By import, I mean receive, unzip, parse, string intern, verify, save, and index (SQLite) with individual transactions on write-ahead logging to guarantee DB consistency and match real use cases.

JSON parsing w/ string interning is now pretty much capped by IO and interning at 120,000 events per second per CPU or ~50MB/s per CPU.

JSON Parsing + interning + verifying runs at ~20,000 events per second per CPU or ~30MB/s per CPU.

None of these use SIMD instructions, which are still poorly supported on mobile CPUs.

Vai tudo via Tor e portanto privado. Só os relays declarados na sua lista são considerados confiáveis.

Eh o novo normal. O amethyst agora se conecta com todos os relays que os seus follows usam. Assim vc não perde nada. :)

"Trust but verify" is a better motto than "don't trust, verify".

GM.