Last Notes
Thanks, good catch, it actually seems a bug in the decoding.
Thanks. Yes we are complicated and all somewhat different. I experiment on myself a lot and I take a lot of clues from evolution, some evolutionary arguments are very convincing. Gluten alone didn't make much difference in my case, but cutting out coffee+milk+wheat for 2 weeks did fix my IBS for a while (until I started cheating)... it took almost 2 weeks for the result to occur which is probably why it has been so hard in the past to test foods (I didn't know I had to wait so long). HIIT is great. I climb hills as fast as I can, forcing myself to over-breathe makes it easier. My current keto diet is not a short-term change, it is a short-term experiment. I will evaluate what to take from it after I'm done experimenting.
Your experience is very much what I expect... where you just can't eat any more fat and protein, and yet you are still hungry for something. Your body wants carbs (for the brain at least) and has to subtitute ketones, but it really doesn't want to, so you remain carb-hungry.
I don't expect people will spread out over thousands of relays. Things naturally gravitate towards centralization. We don't all use thousands of different web browsers or even thousands of different email providers (anymore)... people learn which ones are the best and people naturally gravitate to and centralize upon those. The same will be true of relays. Most people will use the main group of 40 or so relays (which might even whittle down to 10 or so over time, who knows) that everybody knows work well. And that begs the question "they why bother with the outbox model?" Because the outbox/inbox model allows that 5% of people who want to do their own thing, to roll-their-own, to have custody of their own notes, to be sure they are not being censored, to do so without losing their audience.
I hope the fan-out never gets crazy large. I hope I'm right that most people will naturally tend toward using the same popular relays. But if it does get large, I think proxy solutions are going to be the way to manage it.
I didn't realize filter.nostr.wine was such a thing, or that you were involved with it (so much going on in nostr to keep track of who is doing what).
This note is a test of "double quotes"
And also of emojis 🍕.
And uñicodes.
And fake's apostrophes.
But what happens if there is a \\ back\\slash in the text?
This apple crisp takes advantage of flavorful whole spelt and oat grains. The apple base is tart and delicious, and the streusel topping has a lovely contrasting texture, plus extra fiber, nutrients, and nutty flavor.
https://breadtopia.com/spelt-and-oat-apple-crisp/
That is a reasonable optional way to do it. I'll leave this up to @npub1000…vwqk and @npub1hlq…z5wg . They handle the UI/UX stuff.
http://breadtopia.wp.docker.localhost/test-5/
the infamous ouroboros directory.
I also think it would be great for private groups to separately create their own private nostr networks wherever and whenever they want. They would be separate from the wider, global nostr network like a LAN is separate from the interwebs, though using the same plumbing.
You cannot follow someone privately on your main Following list. The Kind3 event has no way to represent such a concept.
But you CAN follow people privately on any other list you create for yourself.
Actually in this case seems more like the evil of banality.
This note is a test of uñicodes.
An author's (self-defined) tags could be part of their profile.
This note is a test of "double quotes"
And also of emojis 🍕.
And uñicodes.
And fake's apostrophes.
But what happens if there is a \ back\slash in the text?
I'm also on graphene. I do have Google Play Services installed in the profile where I am using Amethyst but none of the google apps, frameworks, components have any network permissions so they will never be able to make any translation stuff available to Amethyst. I am not getting any crashes with recent versions of Amethyst (I stay up to date with github APK releases).
My plea is just to keep it like this in the future. Translation is a nice-to-have for me but for my purposes, it's way more important to not have Google in my life than to be able to read non-English notes.
I was also freaked out when I recently read that at least one splashily public mobile client is completely not verifying signatures by default. I can understand alpha testing in that mode with plenty of DISCLAIMERS everywhere, but in my mind, signature verification is so completely and totally fundamental to the nostr protocol that i don't see how you can call it nostr with a straight face if your're not verifying signatures by default. I don't think it's correct to even have an option to not verify them.
Personally, I don't see how anyone can release a public version of a client that isn't verifying signatures on every note that the user sees (but not every note! - see below).
Which brings me to the question of parsimony. Years ago when I was messing with scuttlebutt I was disturbed by the amount of "waste" overhead that the whole protocol relied on. It felt to me like everyone who wanted to participate had to download and lug around their own redundant copy of the entire Internet. That made me feel that there was no way SSB could scale beyond toy use but I was looking for something that could topple the platforms.
I've seen @vitor exploring the use of merkle trees or bloom filters as a way of pairing down the amount of events that a client is receiving from a relay. I don't understand enough about either to know if that is a viable approach but it seems like some kind of significant deduplication is needed at the client level. Ideally it could happen in the negotiation between client and relay so it saves bandwidth, but every event includes a globally unique, content-addressable ID and at the very least clients could/should be discarding any event they get from a relay that they already have, right?
In my naive mental model of client data, events are stored in a DB table uniquely indexed by their event.id. So whatever code is inserting new events into that table would first query whether the db already has that id (which should be a relatively instant query) and toss it if so. If not, then verify signature and then insert. Is something like that scenario not workable in practice? Or is this already what all the clients are doing and that level of optimization is still not adequate to make signature verification viable on mobile?
At the very, very, very least, it seems like every client should absolutely verify signatures on any events posted by a users follows.
But maybe this all speaks to how people are using nostr. I personally do not at all get why or how anyone cares about the firehose of "global" feeds. That to me seems like 100% anti-value. Who the hell cares to see (for more than a second out of curiosity) what a mad mixture of bots, spammers, scammers, and people they don't know (or know of) are spewing into the interwebs? That is attention pollution. It's totally toxic. But, whatever, I guess. Maybe I should add a Seinfeldian "not that there's anything wrong with that".
But I can definitely see where mobile clients could optimize on signature verification by not verifying events in global feeds (which are 99% garbage anyway). Every event from a follow should be verified though. Maybe also every event from a follow of a follow too if that doesn't get too expensive. Would that work?
Never mind; I found your post that explained what happened and re-set my follows and see their posts again.
#[0]
... and the world would be a better place.
#note1w8p…gu25
Or maybe even scraping is too expensive. I can totally live without twitter.
It means what NIP-51 defines it to mean. The private entries are encrypted into the contents of the list so they are shared with you on other clients, but not visibile to other people looking at the event.
Great data point. So I still haven't found a likely culprit.
It might be a bit too persnickety at present. I may need to add another index and allow more filters. I'm not sure.
An excellent alternative to fdroid is obtanium https://github.com/ImranR98/Obtainium which is an app you install on Android that lets you then keep track of releases and updates of APKs directly from their own repos. I use it to keep Amethyst up to date directly from the github repo.
I agree and I like this best because it keeps all the smarts in the clients and keeps the relays more agnostic.
Here's a personal relay strfry write policy in python: https://github.com/pjv/strfry-python-write-policy
Both nostr and Bluesky are fundamentally trying to work on the same problem. The important distinction between what nostr is doing and what Bluesky is doing hinges on whether the respective developers want people whose speech they disagree with to be able to use what they are building to communicate with the rest of the world or not.
In nostr this is clear - the whole thing is architected in a way that it's impossible to stop people from using the protocol to say whatever they want to say. In Bluesky this seems ambiguous at best.
Everyone using f-droid should switch to obtanium.
"Obtainium allows you to install and update Open-Source Apps directly from their releases pages, and receive notifications when new releases are made available."
https://github.com/ImranR98/Obtainium
I can't get lists to work on X. I think maybe because my account can't post?
The way gossip actually works, you get both intelligent relay discovery and also the ability to manually configure relays.
This is a test post. Just checking to see whether it ends up on nostr or not.
Nothing to see here, move along. 😉
http://breadtopia.wp.docker.localhost/test-post/
Yes, seems to be fixed on that commit. Thanks.
Most of my opinions about nostr's architecture come from a conversation I had with a friend of mine who used to work at Twitter. He explained that Twitter is only able to deliver relevant content quickly by pushing it to a huge network of special purpose caches. This is easily done with nostr relays in theory, the hard part is coordinating how caches (relays) get primed. I think some combination of push and pull will be necessary - if indeed the problem can be solved without central coordination.
Mike, did you try my docker server with the write policy plugin? If so, what didn't work for you? Tag spam?
And that's in a context where you can ACTUALLY count followers. You can't actually count followers for real in nostr.
And I can only take credit for coding. @npub1000…vwqk came up with the design.
Should gossip also be fetching metadata for npub mentions within the text of notes? As far as I can tell it currently doesn't - if the npub metadata has already been fetched gossip renders a NIP-05 name but if it has not, it renders a truncated npub as a link. i guess you'd want to limit how many of these you did so if someone posted a note with a thousand npubs it wouldn't DDOS you, but in the case where there is just a few mentions i think it would be a good addition.
Given the current set of incentives in the protocol, it seems like this is the only possible outcome. Anything that makes relays not interchangeable has to end up this way, right?
If relays were like Internet routing hardware where nobody even knew which relay they were connected to (who knows which brand of BGP router their traffic flows through?) then using some kind of refined version of the gossip protocol could (maybe?) be able to spread the load.
I request the next development be making Amethyst again be able to parse my private follows lists so I can start using it again.
PRIVATE FOLLOWS LISTS ON AMETHYST!
I was able to create a semi-kludgy work-around.
1. I created a new, non-private list in gossip.
2. i put one non-private npub in the list.
3. i put a bunch of other npubs into the list and toggled them each to private individually.
When i published this list from gossip, it was quickly available in Amethyst and the feed in amethyst does include all the private (encrypted) npubs from the original gossip list. I pulled down the kind 30000 event from my relay and confirmed that all the private npubs are in fact only existing in the content tag in an encrypted blob. The only clear-text ('p') npub is the one non-private contact i added in step 2.
This works but is a PITA.
cc @npub1gcx…nj5z
tags on notes and you follow not ust a user but a user plus some (sub)set of their tags?
Thanks, good catch, it actually seems a bug in the decoding.
I was able to create a semi-kludgy work-around.
1. I created a new, non-private list in gossip.
2. i put one non-private npub in the list.
3. i put a bunch of other npubs into the list and toggled them each to private individually.
When i published this list from gossip, it was quickly available in Amethyst and the feed in amethyst does include all the private (encrypted) npubs from the original gossip list. I pulled down the kind 30000 event from my relay and confirmed that all the private npubs are in fact only existing in the content tag in an encrypted blob. The only clear-text ('p') npub is the one non-private contact i added in step 2.
This works but is a PITA.
cc @npub1gcx…nj5z
PRIVATE FOLLOWS LISTS ON AMETHYST!
I request the next development be making Amethyst again be able to parse my private follows lists so I can start using it again.
Why nostr matters in ALL CAPS.
TYPING IN ALL CAPS IS SELF-AUTHENTICATING.
Amethyst used to see private lists created by gossip. I just recently alerted @npub1gcx…nj5z that this is no longer working. But it did definitely work a few weeks ago. Unfortunately, I can't say what version it stopped working with.
I've been using Coracle so I hadn't noticed. I didn't change anything with following lists recently that I can recall.
Perhaps Amethyst changed to NIP-44 encryption for the content and forget to support decrypting from both? Just a wild guess. Vitor should know more.
@npub1acg…p35c At one time I was able to see private people lists that I created in Gossip in Amethyst. But now I no longer see them. I can still see my gossip public lists but no longer the private ones. Do you still use Amethyst? Can you see private lists created in gossip in amethyst?
(I'm at v. 0.92.1-PLAY for Amethyst and HEAD of master branch (d6f4e4c) in gossip)
cc: @npub1gcx…nj5z
In case anyone wonders why I punch them in the face if they walk by me wearing Ray Bans.
https://image.nostr.build/d527abb096d9de1f33c3492b22944e0c56b825cf14cb43dee18d8a0300543832.png
Thanks. Yes we are complicated and all somewhat different. I experiment on myself a lot and I take a lot of clues from evolution, some evolutionary arguments are very convincing. Gluten alone didn't make much difference in my case, but cutting out coffee+milk+wheat for 2 weeks did fix my IBS for a while (until I started cheating)... it took almost 2 weeks for the result to occur which is probably why it has been so hard in the past to test foods (I didn't know I had to wait so long). HIIT is great. I climb hills as fast as I can, forcing myself to over-breathe makes it easier. My current keto diet is not a short-term change, it is a short-term experiment. I will evaluate what to take from it after I'm done experimenting.
Your experience is very much what I expect... where you just can't eat any more fat and protein, and yet you are still hungry for something. Your body wants carbs (for the brain at least) and has to subtitute ketones, but it really doesn't want to, so you remain carb-hungry.
When I did a keto diet for a few months it was a very interesting experiment. This was many, many years ago. My experience was that I was constantly ravenous and I was eating constantly while on the diet. It felt very weird to be eating so much and especially so much fat. But I followed the diet I was using and it told me to eat as much as I wanted as long as I didn't stray from the specificied foods - and in particular zero carbohydrates. I'd eat a full, huge meal and then be hungry enough to eat another meal like it 2 hours later.
Very quickly I could feel that my metabolism had shifted into a different mode. And even though I was eating what seemed to me like ridiculous quantities of meat and fat, I started losing body fat within a few days and that continued for a while (maybe 3 - 4 weeks if I am remembering things right) until I plateaued at a lower body fat level.
While I was on the diet, no matter how much food I ate, it never felt actually satisfying. And even though the food I was eating was extremely high quality and very well-prepared, it always seemed like it was missing something. It's hard to put in words what I am trying for but it's like the food was simultaneously delicious and completely blandly uninteresting and all the while I was totally ravenous. It was weird.
I don't think it would be a healthy diet (for me anyway) for a long period but I think it was a really good metabolic reset for a short period. I think of it kind of like running a gas engine flat out for a while to blow out all the carbon deposits. Engines always seem to run cleaner after that treatment and that's kind of how my body felt after the keto diet.
Anyway, that was my experience. I'd say that if you find yourself craving more food than you are "planning" (in the Mike Tyson sense of things) to eat, to go ahead and eat as much as you want. That's what I did, anyway. Just stay away from the carbs which I think would inhibit that metabolic switch that I was talking about and then your body might keep storing the fat instead of burning it.
The endless march of enshitification plods relentlessly onward.
You cannot follow someone privately on your main Following list. The Kind3 event has no way to represent such a concept.
But you CAN follow people privately on any other list you create for yourself.
@npub1acg…p35c I'm running gossip on macos, self-compiled from master and currently up to date with github. I no longer see any UI to toggle persons on my lists as private or public. Maybe I just can't remember where that used to be? Or is it gone permanently or temporarily? Or is there a bug?
Here are a couple worthwhile posts on baking (mainly wholegrain) bread with sourdough starter:
https://breadtopia.com/demystifying-sourdough-bread-baking/
https://breadtopia.com/slow-lazy-sourdough-bread/
Great data point. So I still haven't found a likely culprit.
Fwiw, another data point. I've been using graphene for over a year now and it has been super stable and reliable for me all along. When I first got a pixel to try it out it was very much experimental for me because I just assumed that all kinds of stuff wouldn't work. But after a week of use it was clear to me that it worked better in every way than my Samsung phone on regular Android and I made the full switch.
Where I live out in the country we have shit cell service so I rely on wifi calling and text. This was the primary thing I figured wouldn't work so well. But it turned out to work way better than my other phone.
"Reticulum is the cryptography-based networking stack for building local and wide-area networks with readily available hardware. It can operate even with very high latency and extremely low bandwidth. Reticulum allows you to build wide-area networks with off-the-shelf tools, and offers end-to-end encryption and connectivity, initiator anonymity, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable delivery acknowledgements and more."
https://github.com/markqvist/Reticulum
It might be a bit too persnickety at present. I may need to add another index and allow more filters. I'm not sure.
Testing Chorus
@npub1acg…p35c
Hey @npub1acg…p35c, I think i remember seeing that you use or have used Amethyst sometimes. I'm noticing that I like one thing that Amethyst does that gossip doesn't do (yet?). When looking at a reply, I like how Amethyst puts a "preview" of whatever note the reply is to within (above) the rendered reply in the timeline.
For me this seems like better UX than just having the link to the replied-to note which takes you to the full thread timeline. I like that link too because I often want to click into the full thread view. But there are a lot of times that having only the context of the direct parent of a reply is plenty and it would be a lot more efficient to not need to click over to the full thread in those cases.
That is a reasonable optional way to do it. I'll leave this up to @npub1000…vwqk and @npub1hlq…z5wg . They handle the UI/UX stuff.
Not sure if I am understanding what you are saying but what I hope amethyst does when I set it to connect via tor / orbot is that if orbot is switched off or unable to connect to the onion network for whatever reason, then I want amethyst to not connect to anything anywhere - I want to see a blank screen in amethyst in that case which will let me know that something is wrong with my connection.
IOW if I say connect via tor / orbot, then don't connect (of fail back) in the case of tor / orbot not being connected.
otherwise i will never know if I am actually reading and posting via Tor or not unless i am constantly checking whether orbot is connected.
Cool - thanks for the heads up.
Sorry, but what's this guy going to do when his pirate ship gets blocked "from port" by other Mastodon instances?
While we're at it we should also #banraybans. As well as any other glasses / sunglasses manufacturers teaming up with the likes of poop-for-brains CEOs like zuck to put ubiquitous surveillance devices on the faces of every fucking human walking the streets of earth.
That's an interesting political philosophy.
On that Wikipedia page it says that it differs from other forms of libertarianism by its rejection of private property.
Do you reject the notion of private property? And if so, does that mean all so-called property or only certain classes of property? IOW if we ran into each other at a coffee shop and I chose to walk off with (what I would call) "your" laptop, would that be congruent with your philosophy?
I'm definitely planning to get long form content from Wordpress -> nostr working in my nostrtium plugin as soon as I have some clear time to dive into it. I've had no time to work on it for some months now, but I hope to have a window sometime in February when I can work on this.
So then you still want your laptop to be your laptop but you prefer a different framework of defining what that means in principle and in practice than the conventional, mostly western developed-world legal frameworks that currently dominate. Is that accurate?
Although I don't really like this term very much (because I think jargon in general seems to obscure what it's trying to disclose), I find myself mostly agreeing with what libertarians call "natural law" most of the time that they use it, and I feel like property - possessions - mostly have a pretty obvious "natural law" set of rights and wrongs around them that my dogs seem to understand perfectly well without any codification.
When there is contention between my dogs over some property, most often the assertion of natural law will carry and often the less dominant dog will prevail when she has natural law on her side. But there are also occasions when the provenance of some goody is not clear and in that case, might makes right in the dog world and the spoils then invariably go to the stronger, more dominant dog.
For all its warts, the capitalist codification of law surrounding property mostly aligns pretty well with my notion of natural law around property and mostly (*mostly*) protects humans from might makes right losses. Under your interpretation of libertarian socialism, how would property contentions be managed?
Good on both of you then.
And I can only take credit for coding. @npub1000…vwqk came up with the design.
Thanks. I just did that yesterday. I missed the 'focus' issue the first time but @npub1000…vwqk was quick to correct me 😅
@npub1acg…p35c I like the new gossip login screen. Very polished. Also nice that the insertion point defaults to being active so you can just start typing or pasting right off the bat without clicking or tabbing into it.
I'm able to use lists in X accounts that are private / non-posting. But the UI for creating lists has become extremely obscure and unintuitive. You maybe have just not found where / how to create them?
In the good old days, tweetdeck made it very easy. Also when "free speech champion" twitter allowed 3rd party clients, tweetbot (by tapbots) also made it easy and so clean to use. As far as I can tell, twitter under elon is hell-bent on making it entirely un-usable. Aside from people knee-jerk disagreeing with his politics, I think the UI devolution of twitter is probably driving a lot of people to nostr.
I can't get lists to work on X. I think maybe because my account can't post?
Yeah, I use lists extensively on X and it was one of the two things that I miss(ed) a lot in nostr until now. I love this new gossip list implementation. Thanks Mike!
(The other thing I miss is the UI ability to assemble my lists in parallel tabs in one wide window like tweetdeck)
On my brief read of the whole project, 'reticulum' is not a name for a social media protocol but is instead the name of a completely decentralized, encrypted, cryptographically addressable, un-surveillable networking stack that could (should?) replace TCP/IP altogether. It aims to be the plumbing that the Internet should have had from the get go.
https://image.nostr.build/8a2482221da05b2c8199f599d7b2a042b88f81d09d73e3ff0084f744e79b85d6.png
Within the small reticulum ecosystem, there is a social media / chat protocol that is built on top it which is called LXMF (https://github.com/markqvist/lxmf).
Reticulum is very interesting - thanks for posting that.
nostr devs might be interested in this repo which is a lightweight messaging format built on top of the reticulum networking stack. There is considerable overlap with nostr functionality: https://github.com/markqvist/lxmf
Embarrassed that I can't keep up with the NIPs, but that's awesome.
It means what NIP-51 defines it to mean. The private entries are encrypted into the contents of the list so they are shared with you on other clients, but not visibile to other people looking at the event.
Really excellent work on this. Love the follow list implementation.
If I toggle "public / private" to private for a person, does that mean that if I publish that list the person who is set as private will not be part of what is published (i.e. I'm following them only from this instance of gossip and nobody can trivially [without access to behind the scenes relay data] see that I am following them?
you gotta script it. It's worth the up-front investment.
I'm with you. Please post if you run across an acceptable solution. I will too.
I don't know why the post I'm replying to has a content warning. My old man fingers and eyes don't know how to use this little phone client very well.
That's funny. I also mostly use a desktop over starlink and use gossip (though I happen to be composing this on Amethyst on my phone at the moment) and I currently follow fewer than that so yeah, for me there is no performance bottleneck, no battery issues.
I also run a personal relay based on strfry with my own minor modifications and I very much like the idea of client proxies. But I also grow most of my own food. And while friends who come over admire my garden and tell me how much they'd like to have one like it themselves, everyone knows that the vast majority of people are not gonna be spinning up a VPS to run and maintain a proxy relay.
I think needing to even subscribe and pay for a proxy that someone else runs is going to be too big an adoption hurdle for nostr to get beyond fringe usage in the age of downloading an app to your phone that "just works" in about 15 seconds. I hope I'm wrong but that's how it seems to me.
For me, the problem with even "50 or 100" big relays that everyone uses is that each and every one of those relays becomes a target for government's that think their job is to keep people from saying things they don't want them to say. If there is such a target set, no matter the intentions of the people operating those relays, the whole thing is too vulnerable.
I think the only way it's not vulnerable is if relays are tiny, cheap, stupid and ubiquitous so that it's effectively impossible to police them by sheer numbers. I recognize that world has all the performance and scaling issues we are talking about and it also may not work in the sense of getting past fringe adoption. But again, I'm here for the free speech absolutism, not for the stickers, badges, likes, follower counts, etc.
Most of my opinions about nostr's architecture come from a conversation I had with a friend of mine who used to work at Twitter. He explained that Twitter is only able to deliver relevant content quickly by pushing it to a huge network of special purpose caches. This is easily done with nostr relays in theory, the hard part is coordinating how caches (relays) get primed. I think some combination of push and pull will be necessary - if indeed the problem can be solved without central coordination.
I don't expect people will spread out over thousands of relays. Things naturally gravitate towards centralization. We don't all use thousands of different web browsers or even thousands of different email providers (anymore)... people learn which ones are the best and people naturally gravitate to and centralize upon those. The same will be true of relays. Most people will use the main group of 40 or so relays (which might even whittle down to 10 or so over time, who knows) that everybody knows work well. And that begs the question "they why bother with the outbox model?" Because the outbox/inbox model allows that 5% of people who want to do their own thing, to roll-their-own, to have custody of their own notes, to be sure they are not being censored, to do so without losing their audience.
I hope the fan-out never gets crazy large. I hope I'm right that most people will naturally tend toward using the same popular relays. But if it does get large, I think proxy solutions are going to be the way to manage it.
I didn't realize filter.nostr.wine was such a thing, or that you were involved with it (so much going on in nostr to keep track of who is doing what).