Last Notes
Hey @nprofile…fksp I'm getting an error when trying to zap @nprofile…mqyq: "Could not generate a lightning invoice for this project". Can you tell me what's going on there?
Sorry, I am mid refactor, I should have released an alpha version. Pin welshman to the previous version or use what's in the lockfile. I'll hopefully be able to update flotilla this week
I was wondering if the name got changed
NIP 29 support is not needed for Flotilla or Chachi
Nice! Both players are me. I'm game for a match
It's a fun pun to snipe people with, especially around here
I'm watching Go Magic on youtube, but mostly just playing
I'm learning go, rate my game
https://cdn.nostrcheck.me/97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322/71b036982007a3f0523e388092d09c30021bca8338dc2706df76cfc2f8bf2252.webp
I just don't see why you would. Why wpuldn't you just use lisp and program everything using cons cells?
Yes, I rugged myself, it's on my list
Not if you're careful about deduplicating requests
Browsers have a limit, I guess it eats battery, this was the whole debate we had with @nprofile…a0ce a year ago
Check out bitvora for some recent development in the personal relay space. I don't know if they have tutorials, you're right that the user documentation is awful in general.
https://github.com/bitvora
A lot of lists are also out of date. The first wave of projects is probably 90% dead, which can give the illusion that the whole space is too
You'd still end up connecting to more relays than necessary. The most useful part of merging filters is figuring out which people publish to hubs and which don't, eliminating relay lists with 30 relays on them. @nprofile…8wqr @nprofile…qjvg @nprofile…0dsc have recently worked on this I think
Thanks, it's a big day for me
We shouldn't merge the PR, relays should continue to support multiple filters. But, having implemented this in coracle recently, it's actually super nice because it encourages callers to split requests by filter, which results in slightly faster response times for each result set.
To do it for real, yes, I completely agree
An attempt at building go on nostr: https://github.com/coracle-social/nogo/blob/master/index.html
Keep recording it, thinking about it, even prototyping. Nostr has a lot of momentum right now, so I don't think a toy protocol will divert substantial effort away from nostr. But keep it visible enough so that if/when a successor is obviously needed we have a good starting point. It's a good project, and I think (at least for now) it "counts" as nostr
Feeling pretty good about myself, just vibe coded 700 lines of utter garbage in only 30 minutes
I am 35 and I still don't know how to use commas
I mean that John may have been a nazirite
Doing the lord's work, in both cases
Oh yeah, I forgot, that's Gigi 😂
Engagement: the ultimate shitcoin
If not, click "skip this step" and go to the relays tab and choose some relays
Have you published relay selections? I can't find them on your profile. If you haven't created a 10002 event, coracle will fail this way to avoid accidentally overwriting important metadata events.
Have you tried coracle.social?
Block their IP? Ignoring closed is definitely bad behavior. EOSE + CLOSE is forcing me to do weird hacks in coracle
@nprofile…dwak auth.nostr1.com is sending an EOSE along with a close, which doesn't seem right to me. Is this deliberate, or a bug?
https://cdn.nostrcheck.me/97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322/d6111b09e4df10ac4dfedc089afd6a7e13850bfd9dc9de5f344612e582e1278f.webp
I can't imagine being someone with more time than ideas, but somehow that seems to be extremely common with developers
Slow, I'm currently shaving yaks in the himalayas
Yeah, there were some other red flags in the docs, like:
https://cdn.nostrcheck.me/97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322/9e764a50d7d2361693dd671ae0c14cd5e876f6183e74b6a239dffb7df00980a1.webp
So we'll see if they deliver anything worth using
Big if true, I love the idea of a lower-level backend + event sourcing. This might check the box for @nprofile…20a8 as well, he and @nprofile…jyqh were talking about decoupling application logic and rendering recently.
https://tenor.com/i6ZfyIZDWKl.gif
Ah, nice, that's the opposite approach to what I'm doing but it makes plenty of sense
I made it opt in because it requires additional trust and additional processing. I think it was a good call for now at least
There is no authority, just like nostr. Embrace the chaos
Because I want a better internet. I have values other than efficiency and profit. Idealistic, I know, but why work on any of this stuff otherwise?
That's a slick interface, I like it a lot. The main reason I wouldn't use this implementation is that a lot of the policy is baked in, which might need to be configurable by the application. I have a bunch of policy stuff here: https://github.com/coracle-social/welshman/blob/net2/packages/net2/src/policy.ts which is mostly reasonable defaults, but if users wanted to configure auth policy per relay I don't see how that could be done in applesauce. Also, why no`subscribe` ?
You're welcome! Notifications being missed depends a lot on which relays they're published to, if they're not sent to your read relays they won't get picked up. Lots of clients aren't good about this, but if you can narrow down which client sent them I can look into it. And of course coracle has bugs too, some of which I'm attempting to refactor away this week.
Hmm, sorry I missed it, mind trying again?
Making everybod's lives miserable is gain enough
I'm honored
#nevent1q…ca5a
You really are from the future
Thanks, I might just do that. For now, I'm probably going to go with emitter version since I really need to get this refactor done. But let me know when you publish the rxjs relay stuff, I'd love to learn/contribute there.
This is the most nuanced take I've seen on this subject yet.
First of all, yes, I agree github is not ideal and we should move NIPs elsewhere. But so far no one has stepped up to build a viable replacement, so for now we have to deal with the two-tier system through culture, by encouraging devs not to worry about things not getting merged. I personally have 10+ unmerged open PRs which are in varying levels of implementation in my stuff. Having them unmerged is 1. an invitation to collaborate, and 2. a signal that they're not adopted widely.
As far as lexicons go, when I was designing my own protocol that was the direction I was taking things. I'm still sympathetic to the idea, except for what you pointed out about control over the lexicon. Numeric identifiers are much better, because they're neutral — *if* we can get into a good habit of publicly signaling their use and adoption. That's not trivial of course, and points back to my first paragraph.
As far as specificity, the terseness and ambiguity is (I think) one of nostr's strengths. I could be wrong about this, because it basically goes against all the conventional wisdom of specification writing, so we'll see if it works out in practice. But specifying the minimum interoperability surface area allows there to be more flexibility in how a given data format can be used. This can lead to inconsistent UX, which is a problem but something devs are motivated to work through because it aligns with their interests, or it can lead to innovative new ideas. In either case though, it forces devs to be more conservative about how they treat events, encouraging defensive coding (in case of deliberately malformed events as an attack) and wider interoperability. This is an adaptive approach rather than a validate-and-throw-away approach.
Yeah, I think I understand all that in the abstract, I'm just finding it quite hard to actually execute, partly because of the duplex nature of websockets, which is what I've been focusing on far, and partly due to the forking nature of streams, which makes me unsure what subscriptions need to be managed and which don't.
Me too, and getting deeper. I hate falling down these holes 😂
I do too. @nprofile…rxj5 is there a repository with wip code anywhere?
Hey, did you guys get my DM? I'd still love to get something set up.
Most apps do follow this. It's a dafinition based on that "plain text" recommendation, @nprofile…ucgf just didn't want us to use the term plain text, so we made up a new name.
Dang, sorry to hear that! I am re-writing some core networking code, which should help with general stability, but it sounds like the system might just be getting clogged up with those hellthreads. I'll have to do some load testing at some point.
Yeah, the tricky part seems to be intercepting send messages so that you can buffer them and re-send after authentication (or remove reqs that have been closed before they were sent while you were waiting for auth). Here's my (half-baked) policy for that:
```
export const socketPolicyDeferOnAuth = (socket: Socket) => {
const send$ = socket.send$
const buffer: ClientMessage[] = []
const authState = new AuthState(socket)
const okStatuses = [AuthStatus.None, AuthStatus.Ok]
// Defer sending certain messages when we're not authenticated
socket.send$ = send$.pipe(
filter(message => {
// Always allow sending auth
if (isClientAuth(message)) return true
// Always allow sending join requests
if (isClientEvent(message) && message[1].kind === AUTH_JOIN) return true
// If we're not ok, remove the message and save it for later
if (!okStatuses.includes(authState.status)) {
buffer.push(message)
return false
}
return true
}),
)
// Send buffered messages when we get successful auth
return authState.subscribe((status: AuthStatus) => {
if (okStatuses.includes(status)) {
const reqs = new Set(buffer.filter(isClientReq).map(nth(1)))
const closed = new Set(buffer.filter(isClientClose).map(nth(1)))
for (const message of buffer.splice(0)) {
// Skip requests that were closed before they were sent
if (isClientReq(message) && closed.has(message[1])) continue
// Skip closes for requests that were never sent
if (isClientClose(message) && reqs.has(message[1])) continue
socket.send(message)
}
}
})
}
```
Here's a question: I feel like I started wading into rxjs with a very hard problem, websocket connections. Websockets are shared resources, and so need to be modeled using a subject somewhere along the line. They're also bi-directional, and so I'm not sure how to pass them around in an idiomatic way. I'd like to define a function like`implementAuthPolicy(tx, rx)` that can intercept and buffer both sent and received messages. Maybe that's less of a question than me just thinking out loud.
Thanks, that rfc looks really nice. I also looked through nosotros/core and the code is super clean and includes a number of patterns that took a while for me to identify (like the relayFilters stuff). Have you looked into https://github.com/penpenpng/rx-nostr at all? My impression was that everything was pretty tightly coupled, making it hard to implement custom policy. Speaking of which, how do you handle relay AUTH when using websocketSubject? I am using policy functions that patch my socket adapter: https://github.com/coracle-social/welshman/blob/net2-rxjs/packages/net2/src/policy.ts
Because I'm writing a web client
Cool, that's good to hear. I was like "cool, a way to avoid memory leaks". Then, 5 hours in realizing I had to deal with memory leaks.
As in, you tried it, and went back to imperative event listeners?
Attempting to learn RxJS because it seems like streams would be the correct way to model events flowing from a relay through various utilities for welshman. I'm currently learning about how to manage subscriptions using`takeUntil` , and it just seems like footguns and strange mental models abound.
I'm interested in others' experience with Rx*. Is it the amazing paradigm shift people say it is, or does it just make your code more obscure and come with its own problems? In anything less than something like Elm (which I do like), it seems like all you can do is move around the imperative parts of your code, not get rid of them entirely. I had my love affair with point free via ramda a number of years back, and eventually left it for non-curried utility functions (typescript especially made ramda painful). This feels very similar.
https://i.imgflip.com/9opw9g.jpg
That vegan diet is really working for you
There is always that danger
Completely agree, this was never going to be anything other than a long, slow, enjoyable grind
Hello from https://enterthenostr.com/
Nice, that's a good one, I hadn't heard it before.
"content to fill a little space, if thou be glorified." is brutal 😂 but in line with John B's "he must increase, and I must decrease"
Correct, it probably would have been better to use the bookmarks list nip (although that didn't exist at the time)
No, I never got around to building that unfortunately. Collections is still in the "proof of concept" phase.
I agree strongly with your point about "faithful presence", while at the same time mostly failing to content myself with it. The humility and diligence that being "ordinary" requires of us is way beyond what's required to have higher (and more abstract) aspirations.
I also agree with the idea that "we need to content ourselves with it being just plain _good and faithful human work_ that helps our families and benefits our neighbors", but I also see that often becoming a reason for complacency in practice. For example, Christians often just invest in index funds without thinking about what kind of activities they are becoming complicit in.
The balance between grand vision and being "faithful in little" is so difficult I feel like I can't fit both in my head (let alone heart) at once.
I see you have only four people muted, I assume you had more before? Just to double check, are you using multiple clients/devices, and if so which ones?
If you're right, I think I'm in danger of committing the sort of democratic "change the world" fallacy, where everything you do has to have global significance. I recognize that this isn't possible for everyone (and so can't be a prerequisite for a meaningful life), or even necessarily healthy for people who adopt it, but it's hard for me to let go of, and a big part of why I'm here on nostr. At the same time, I think we should have a cosmic view of the meaningfulness of our actions. How do you reconcile those two things? I'm probably just restating the question, but puzzling over this has been a challenge for me for years.
This is the answer I was looking for, thanks!
I swim in mostly post-millennialist circles, and have lately started to feel the effects of over-realized eschatology you identified above. At the same time, I feel like God must have a place for our work, just because we spend so much time doing it. The amil answer isn't completely satisfying to me, because it seems to limit the scope of the effect our new identity as Christians has on our whole lives, but I think your reference to Jeremiah is also a good answer to that — we "mind our own business and work with our own hands" to build up the city of man not as such, but for the peace of the people within it (either evangelistically, or for the Church as a separate enclave).
Thanks for your thoughts, I'll check out those VanDrunen books.
Tell me what you really think of me 😂
No, haven't had a chance to look into it yet, this week
Have you seen https://github.com/bitvora/wot-relay
Yep, exactly. PZP solves this with "tangles" and I think p2panda has a similar data structure. There has also been talk on and off about adding synchronization or merkle tree stuff to nostr as well. I think it's a feature rather than a bug.
Decided to read some Solarpunk fiction, and it's the most communist thing I've ever read. Not sure if it's all that way, or just the anthology I happened to pick. The first story is like "I (xeh/xer) used AR gadgetry to hack a smart building made by CAPITALISTS to lock them out and used it to house homeless queer youth instead."
It never quite rises to the top of the todo list
Yes, secure scuttlebutt was a predecessor to nostr. It just didn't work very well for multi-device, and required clients to download a lot of unnecessary data.
"This" being the old creation, right?
My belly's getting flatter already
Butt aches, legs unsteady
I have a thesis I want to run by my fellow #christians. Maybe I'm just rediscovering postmillennialism, or historic premillennialism, or something, but some of this seems original.
There are two halves of Biblical/world history: Creation and New Creation. Creation's head is Adam, whose commission is dominion. New Creation's head is Jesus, whose commission to evangelism. Dominion involves subduing physical reality to human ingenuity; i.e. technology. New creation involves subduing humanity to divine love.
We are told that this world is going to wear out like a garment, and be rolled up like a scroll, prompting apocalypticism throughout history. Yet Jesus says that the Kingdom is with you, and that it is the latter days. This is conventionally explained by the "already not yet", that New Creation is latent within our earthly lives.
But what if that is true beyond just the devotional? Jesus says the kingdom of heaven is like leaven, and we take that to mean that our souls are being saved. But what if the world itself is being saved? What if every rock, tree, ocean, cloud is being invisibly, slowly suffused by the Good News of Christ's immanent lordship over the earth? What if New Creation is slowly covering Old Creation like moss covering a rock, and when the rock crumbles away the moss will retain its shape? What if the new creation is already here, and is no less physical for it's being spiritual, and when "we see him face to face" and are changed, the rest of the world — including nature and the physical stuff we've built — are suddenly changed as well?
This fits with the idea of the "garden city" — in the Bible, cities come first, and then God irrupts into their center (for example Solomon's and Ezekiel's Temples), changing their entire nature, purpose, and organization.
This seems to me to reconcile God's apparent intention to discard this world in favor of a "new" one with his obvious love of what he has made. Thoughts? Hallucinations?
@nprofile…gpgh @nprofile…lg5q @nprofile…u5qv @nprofile…29w9
Great day for podcasts, listen below to my undergraduate thesis advisor (and former pastor) talk with Jonathan Pageau about Biblical typology and the reconciliation of the Church:
https://fountain.fm/show/f8YMIl493SRHK2VTbLqb
8 miles today, 26+ this summer
Just hit 8 miles, feels good
Nice, speaking at MIT, that's an accomplishment
Nice, that worked, although excalidraw replaced whatever old content I still had there 😅
It's ok, I'm glad people are liking Jumble
My market share is melting away
Nice, this is pretty good. Are these hosted anywhere?
I'm not sure, if you get it on web you can open the developer tools and take a screenshot on the console. I'm not sure about android. But I'll look into it
Likely due to a parsing error on a note, is there anything in particular that's causing it?
You can just go on a walk
I am 35 and training for one currently. Of course, that voice has been whispering to me for 15 years at this point
What in particular isn't working?
In this case, I know exactly what it is, and the types come from the pit of hell
`nip19.decode(bech32) as any`
IYKYK @nprofile…6lq7
I present to you a new standard of laziness:
https://cdn.nostrcheck.me/97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322/551c567a6a4b016b3c1608e66f98838c77cf583bdb0eb72878397786ff34779b.webp
The guy came right out and called it domestic terrorism. Meanwhile people protesting abortion clinics on public property are being labeled terrorists and jailed. So duplicitous.
The workflow is annoying, but go to feeds, edit -> people -> self, then search for the content
Maybe (although I did like that), but they did at least cover most of the development happening
She's primed now, in a year you'll be talking her out of burning down banks
We read Ronja a few years ago, and Seacrow Island more recently. Great for kids and adults alike
I haven't read that one, Lindgren is lovely
No, it's not your fault, as it turns out linking to spotify with no query param was breaking things
@nprofile…xvxe what would you think abput using a different kind for 7D replies? Kind 1111 is sort of over-engineered for something so simple
There's the source of confusion
In NIP 22? Sure, but NIP 7D specifies not to do that:
> Replies should always be to the root `kind 11` to avoid arbitrarily nested reply hierarchies.
Maybe I should have used a different reply kind, but I don't really see why this is ambiguous.
I think you should do that. It's ok if you don't understand why 7D exists, you don't have to use it.
From the spec:
> Replies should always be to the root `kind 11` to avoid arbitrarily nested reply hierarchies.
No, it absolutely isn't. Kind 1 allows for deeply nested reply hierarchies, 7D does not (for example). Clients should encourage longer, more complete thoughts in 7D vs kind 1s, which are context-independent and probably more memetic. It's a different medium entirely.
One of your notes broke my parser for spotify links, I've pushed a fix which should solve this
RIP @nprofile…9n2u. There are some accounts attempting to replicate their work, like @nprofile…5prm, but I'm not really satisfied with them. It's a big project.
Epistemology > Ontology > Teleology
I love asking what the purpose of things is. But in order to do that, you first have to know what the thing is, and in order to do that, you need to know how knowledge works.
Alternatively, asking what the purpose of something is can be a much richer definition of what it is than a pure description. And being embedded in this rich landscape of meaning can lead to richer conclusions about what knowledge itself is as well.
codebuff
https://codebuff.com/referrals/ref-3fcc22f4-10f9-419f-a0e9-e9d7b4368e21
Any problem can be solved with more layers of indirection, except for too many layers of indirection
A 90s nostalgia catastrophe
Taking spam reports into account would fix this pretty quickly
Just publishing to your group's relay would work (sort of), but it demonstrates the more fundamental problem, which is: why would I ask people to jump through a bunch of hoops to use a decentralized system, if they're not interested in the public broadcast part of it, which is what requires all the centralization? Might as well have custodial identities and a familiar setup. Other than the fact that people need nostr and this is a first step that direction. I just can't sell a product if there's no value proposition.
Yeah, I think "private by default" is actually a really good way to go unless you want the open discoverability that something like twitter offers. But comparatively very few people use twitter vs facebook, which sort of pretends to respect your privacy
Yes, but IP addresses don't have your face on them
I think it could be "solved", but privacy is essentially working against the grain of nostr. Put another way, if you don't want to reveal yourself at all you're not interested in the open network value proposition nostr offers, and so there's no reason to use nostr instead of something more centralized.
Yes, and it's one of the biggest violations of privacy in history. They tricked normal people into revealing way too much about themselves. But yeah, fediverse might actually be a better solution for certain types of groups (although I'd prefer something encrypted).
No guarantees, unless you have a relationship with the relay admin (or run your own relay). But because of signatures, archiving is very easy on nostr.
Thinking through groups on nostr for communities that put a premium on privacy, and I'm not sure it's going to work.
You can get privacy of communication via relay authentication or encryption. But a starting point for identifying each other is to publish a public profile, which might not be desirable. And you might want to use your real name in a community, but not in public.
I'm just imagining asking a little old lady in my church (assuming she can get past the cryptographic key pair step) to permanently publish her name and picture to 8 billion people on the internet in order for her to get access to announcements about after-church potlucks. It just doesn't make any sense.
Having a single profile for your online identity violates the "selective revelation of self" principle. Even if you use different keys for different things, you ideally are only going to want to share your profile with certain people.
A possible solution to this is encryption-by-default. Only send your profile to the people and communities you want to reveal yourself to, AKA the Google+ circles model.
Have I been barking up the wrong tree this whole time? I know some people have said "nostr is for public data". I still don't completely believe this, but it's harder to work against the grain than I expected.
I made this joke a few weeks ago to some folks at the liberal coffee shop in my town, they looked at me like I had two heads
Smallweb creatives, illustrators, animators, cabinet makers, finish carpenters
That's sort of what I'm thinking, if anyone can make attestations you can select which ones you trust, making it decentralized and also be able to fallback to well-known/institutional ones. You don't have to limit yourself to just one attestation either.
Thanks for contributing! Hoping to tackle it this week or next unless someone beats me to it.
I'd personally like to see a NIP for this; ID providers could then publish attestations (unless privacy is an issue?) and clients could fetch attestations from reputed ID providers. This would make it possible for anyone to become an ID provider.
These are beautiful. I've never seen pictures of a safari like this.
I bought a gamestick last week, so mario, pokemon, stuff like that
Meanwhile here I am playing 90s games with my kids
That makes sense, but I believe you can generate frost shards independently, which would allow multiple trusted parties to collaborate without ever seeing the full key. Of course, hand-off in such a way that no one has the whole key would also be a problem, but I think we have the basic tools
This is very weird, thanks for the additional information
Why is key management a non-starter? I could see companies running a relay, but I would think a pubkey would be a better way to start.
I'm already finding it to be an incredible research tool for my book. "Hey perplexity, I heard one time that Aristotle said something about experience being formed of many memories, could you give me a citation?" "Sure, check out Book I, Chapter 1 of his Metaphysics."
Thanks, that would be helpful
The notifications thing is a known issue, but requires some deeper work to fix. When mutes re-appear, are the people un-muted, or are they just showing in the feed? Is there any action (like muting a note for example) that triggers it?
I always said NIP 29 incentivizing centralized 3rd party hosting was nuts
Are you using any other clients?
What library? Or is this built in to flutter?
@nprofile…ddx7 this is why clients should just render nip19 stuff regardless of whether it's prefixed
I personally like knowing that I'm missing context. But do you have "Ignore muted content" turned on in settings?
What people often get wrong about faith is that it's not about "what", but "whom" you believe in. Faith entrusts the self to a creator, savior, and comforter. The doctrines are only downstream from the person.
Pantheism is incoherent because it fails to provide a framework for morality, since All is One. You have to accept that our experience is a meaningless fiction with no relevance to our transcendent selves except to reach maturity through the accumulation of experience.
Yes, Mithras, Krishna, Tammuz, etc. The parallels are either tenuous or the mythology is ahistorical.
Categorically different from "Jesus was a Judaite from Nazareth". But also interesting how closely the crucifixion matches. Could Odin have been derived from Christ?
Going to attempt to write something authentic, but without alienating my readers 😂
"But violence ages swiftly, a few years pass—and it is no longer sure of itself. To prop itself up, to appear decent, it will without fail call forth its ally—Lies. For violence has nothing to cover itself with but lies, and lies can only persist through violence. And it is not every day and not on every shoulder that violence brings down its heavy hand: It demands of us only a submission to lies, a daily participation in deceit—and this suffices as our fealty."
- Aleksandr Solzhenitsyn
All books are books more or less about who God is
Eichmann is interesting, I hadn't read about him before. The loss of free will in that sense definitely can and does happen. But I also resonate very strongly with Solzhenhitsyn's Live Not By Lies essay, which extends hope that we can live truthfully and freely in any situation, if we attend to it.
Yes, I get your point. We're all shaped by our environment. But that's ok, there's no "view from nowhere" that sets us ethically above everyone else. We do our best with what we're given.
But I disagree about Odin. I don't have to adopt the frame of the original adherents in order to evaluate claims of historicity. Odin wasn't a person (at least we have no evidence that he was). There is plenty of documentation about Jesus and the early Church (even if you reject their claims). Odin also doesn't solve any of the many philosophical problems that existence presents. He's just another version of infinite regress (although the idea of a personal god obviously has elements of truth compared with Christianity).
Free will is essential to love, which is why God gave it to us, and which is also why evil exists. At the same time, I'm a Calvinist, so I do believe God is sovereign over history (but in a transcendent way).
💯 but also I'm not writing a book of theology (mostly)
I agree they're distinct, but I don't think they're completely disconnected. It's possible to have a framework that doesn't reflect reality, but the purpose of the map is to accurately represent the territory right? If there is no map (or if it's inaccurate), we can't find our way.
What do you mean by deterministic? Bitcoin and nostr are great because they're not over-realized, which is part of why they're so powerful.
How so? My point is that both philosophy and faith are reasonable, universal frameworks of meaning. I thought that's what we were talking about.
Odin makes no claim to historicity. He, like the Greek gods, is a complete non-starter. Just because a bunch of people believed in something doesn't make it credible.
I've been doing so for a very long time. I haven't found anything comparable to the God of the Bible.
Yeah, it's a big lift right now, but it'll come with time. Nostr has the potential to be a good bridge to those tools.
Without a universal framework of meaning, you get solipsism, which is not what anyone actually believes in practice. We have reason to believe that the other person is there, and philosophy (love of knowledge) is the attempt to understand those reasons.
Why should your conscience bind mine? What purpose does social harmony serve? Both of those things are very good practical reasons for moral judgments, but they aren't self-sufficient. They depend for validity on some framework that provides context for and confers meaning on conscience and society.
I've read widely, and engaged with a lot of views (this conversation is a case in point). Some non-Christian ideologies appeal to me to some degree (buddhism, quantum consciousness). But radical individualism ain't one of them.
What I'm referring to by the way is GK Chesterton's observation that just as a bullet is just as round as the earth, all world views are equally circular, but some have more explanatory power. Radical individualism has very little explanatory power IMO.
It was a fun read, I won't say any more than that 😂
In the interest of building in the open, you can read my work-in-progress here:
https://github.com/coracle-social/cypherspaces
#nevent1q…fpll
@nprofile…v0fw here's a good article I always send to people who are stuck in a materialistic or otherwise constricting worldview: https://alwaysasking.com/why-does-anything-exist/
It's not by a Christian, or about Christianity, but I think it very persuasively lays out the logical necessity of God.
Well, there are some questions I don't know how to answer without God as an axiom. Specifically, I've never heard a compelling case for the meaning of life that doesn't rely on a transcendent God, which is an important anchor when you're talking about fulfilling human purpose. A belief in the goodness of the world is also most strongly backed by a belief in the Christian God (rather than a pantheistic consciousness) because of the doctrines of creatio ex nihilo and incarnation. But I'll try to explain all that in a way that isn't dogmatic, but reasonable.
No nested replies though. Those make sense for some things, but I opted to go with flat reply hierarchies. I'm sure you could hack flotilla to do what you want though
I'll try to make those parts interesting, just for you
Thinking about writing a book on how cryptography might be used to craft a more humane social media ecosystem.
https://image.nostr.build/b7623c279e5f664e799a5e4f89d4646bef3884165aa4b66c41b2385bada239eb.jpg
Would you be interested in reading such a thing?
Have I been shadow banned? rekt
"Block" has been discussed, and is a good idea despite the fact that you can't really enforce it. But if clients implemented it, it could help.
Actually, best thing to do is face the dog and back away slowly. If you run, their chase instinct will kick in.
Always nice being stalked by an aggressive German Shepherd while out for a run
If you're interested in this topic, read The Makers and the Takers. It's a very short book about how Jesus addressed economic oppression in the gospels. Super good stuff.
Alternatively something like this: https://github.com/nostr-protocol/nips/blob/9224e829dbf4e053bce03addbc4757122d3d4902/89.md#relay-handler
The word "might" is doing a lot of heavy lifting there 😂
I actually really liked the API branding. It felt less financial-institution-y and more hackery
@nprofile…z85y seems to be stuck on events that occurred in 2020. My guess is that it's a result of associating Trump with covid, and now that he's back that's all it can think about. Anyway, I know no one wants to revisit that particular part of history, so I'm killing the stache for now. RIP
#nevent1q…3x4a
Haha that's a very fun idea
Cool idea:
https://www.seven39.com/
I think that would be great
Yeah, Coracle groups are long dead. The new way is flotilla, which differentiates by content type (but is not reddit-like). Different people will use different architectures, but we seem to be converging on relay-supported. Here's my guide for making groups that are compatible with flotilla, which includes more detail:
#nevent1q…ze2e
Oh, sure, for that I think better discovery tools would be the way forward. Mapping of topics to people in a decentralized way (I attempted this with nip 32 collections) would get people started, and web of trust would bring them the rest of the way. But you're right, the people have to be there first. So again, I would just say let it happen, we'll have ven diagrams overlapping with bitcoin at first, but it'll expand.
Hmm maybe it's your client? It's working ok in coracle. Anyhow, groups.coracle.social will get you there
Moderation can be done in millions of ways: whitelist by pubkey, blacklist by pubkey, whitelisted content (post submit, this is what nip 72 did), blacklisted content, in-protocol via clients, out of protocol via relay (in which case you need to know which relays are supposed to be used, and a plan for migrating), relativistic to user, relative to admin/mod/relay, or any combination of the above. No community solution is going to work that only prescribes a subset of use cases (not to say architectures, that should be prescribed)
I don't know this one is particularly borked. My theory is that Trump has been basically absent from news for four years, and so it associates him being in the news with these other events that were in its training data
I think just let it happen. I do think people who connect with their communities online via "community clients" will convert at some rate to nostr as a whole once they organically discover it. This has always been my thesis about communities, and in a sense it's a marketing tool, but the difference is that it puts the interests of the user first. Nostr shouldn't be a solution looking for a problem, it's ok if adoption is slow. But also, people with a following going nostr-only is probably the other big lever.
I really need to add a disclaimer at the bottom of those posts. Or just shut it down
NIP 72 communities had its day, but was mostly abandoned because of its moderation model. I tried to fix it in coracle, but never got 100% there: https://groups.coracle.social/groups/naddr1qvzqqqyx7cpzq6m4ualvd9678njyahavucqu3r369ufqydk2gzfqwlc54s2g35u3qqgnzdph8q6nqde3xqurvvpexvunjvc0ccsyq/notes
The demand shock would be otherworldy, I know so many working dudes who want one
How does that equate to 97.8%?
Where do these numbers come from? XRP is absurd
"Accumulating value for the American people" what an Orwellian turn of phrase
That's bizarre. Unfortunately I don't know if I can blame Coracle's flakiness on Amber. I think for me it's relay selections but my code is bad and hard to fix.
Honestly disgusting. This only creates a huge incentive for more digital asset forfeitures
You'd think this universe would be big enough
Until you want to enforce access control or moderation, then you're in rube goldberg land
Keypairs do not already function like groups. Relays do, which unlocks progressive enhancement — one part of which is adding a keypair so it can publish notes on its own behalf.
Keys do not make good groups, believe me, I tried it: https://github.com/nostr-protocol/nips/pull/706
Communities can switch relays by switching relays. It's the same as switching pubkeys would be, there has to be an authoritative identity. If that has to change, then it has to change. Pubkeys can't be censored by DNS, but they're harder to change. It's a trade-off, but communities need a host in any case, so it's easier to start there. Once you select a relay url, you can follow its pubkey to get updates on the relay's new location, then update your memberships from there.
I don't understand your second question. I don't know what a targeted publication is, but if it needs to be replaceable then model it that way.
Cross-posting doesn't have to be surfaced in the UX. Just create multiple events under the hood, like we do with DMs. When you DM someone, two events get published, but it only ever shows up as one message. Just have a button that says "post to x, y, z communities". Depending on how you do it, you might publish one event to multiple relays, a root event to your relay with three reposts with h tags, or just three copies of the event each with a different h tag. All three are legitimate approaches.
What about with the federation stuff and alternative URLs? A relay could keep its canonical url, but still be available on alternate domains (or even transports). The relay could also advertise active replication of content with another, entirely separate relay.
For anyone out there desirous of implementing a Flotilla- (and Chachi-) compatible client:
#nevent1q…dcv9
Yes, it absolutely is, you should be using a signer to keep your key safe, here are some options: https://nostrapps.com/#signers
No, for iOS you might try https://nostur.com/
Also upvote my HN flotilla post: https://news.ycombinator.com/item?id=43282724
That's kind of weird, maybe try coracle.social
Quick, revolt.chat just got 400+ upvotes on hackernews — go upvote my comment advertising flotilla to pump nostr's (and my) bags: https://news.ycombinator.com/item?id=43282688
For context: I considered forking Revolt to build Flotilla but decided against it.
Getting ready to use encrypted messages to a group as a multi-broker DVM to implement websocket connection handling using turing complete CSS so get ready 👀
Correct, the ncryptsec should be entered into a signer app like Amber or nsec.app, rather than directly into clients (which should just not hold keys). This is a lift for newcomers for sure, but it's an important pattern to push for security.
For the last several months I've been working to develop patterns for using keys with cross-platform applications like Flotilla in a way that doesn't scare people off. This is crucial for achieving my stated goal of creating software that serves the kind of people who do not know what a public key is.
There has been plenty of work in this area by other people which has brought this goal slightly nearer for me. In particular, I think`ncryptsec` for backups and good mobile signers like Amber are the cleanest solutions out there so far, and multi-sig key storage protocols like bifrost and promenade promise to substantially strengthen security without increasing the burden of new concepts on users.
Unfortunately, none of these solutions remove the need for users to learn what keys are. Users are going to have to be able to use keys, and in order to do that they will need to develop a mental model for what they are and why they matter. If they don't understand what makes keys important, they won't understand why traditional custodial account management is a problem.
To that end, this blog post is my best attempt (so far) at explaining Why Keys Matter.
#nevent1q…f3er
IT'S MARCH 5TH, NOT APRIL 1ST
Save it and the password you chose in a password manager. You can later log in to clients by pasting the ncryptsec and password. If you want to be extra careful, store the ncryptsec and password separately. The reason to encrypt it is that it keeps your nsec secure when it's in your clipboard or stored in unsecure setrings (like when sending it to yourself via email or text message).
Ah, ok thanks, I'll look into that
Coracle knows 👀
https://image.nostr.build/29c1c7ceade59f758bba1c6c5145bbafff6438d2232b74c0c278ef410bf94931.png
Yeah, it's annoying, some clients use different fields to manage lightning addresses. They should probably clear the alternate when they update.
You're not talking about buttons not responding right? Just that the design requires multiple clicks?
If you're using albyhub I bet it's incoming liquidity
That's what I'm talking about
Facebook: https://www.youtube.com/watch?v=zEn4ABFiMVo
Reddit: https://www.reddit.com/r/modhelp/comments/7k9u71/how_do_i_transfer_ownership_of_a_subreddit/
Slack: https://slack.com/help/articles/204401633-Transfer-ownership-of-a-workspace-or-org
Discord: https://support.discord.com/hc/en-us/articles/216273938-How-do-I-transfer-server-ownership
I agree with everything you said, but unfortunately my friends are hostile to the idea of bitcoin maximalism
Some bugfixes and small improvements for Flotilla and Coracle are now available on web and @nprofile…s3et (with App Store and Play Store in review for Flotilla).
# Coracle 0.6.7
* Add note info to DMs
* Make lnurl parsing more robust
# Flotilla 0.2.12
* Fix keyboard covering chat input
* Fix thread replies
* Make error reporting and analytics optional
* Replace long press with tap target
* Fix time input
* Fix nevent hints for url-specific stuff
* Fix confirm and reactions on mobile
* Add reply to chat on mobile
* Fix profile suggestions
Amethyst's drafts spam relays. Coracle has lighter-weight local drafts though.
#asknostr please drop your favorite source for refuting the value of "utility tokens". Bonus points if they specifically address Cardano and Solana.
Because that's where your NIP PR is
If you want to go next level, you could use https://github.com/nostr-protocol/nips/pull/1554 which supports that use case
Cool, that worked. Have you thought about adding "nostr events" to the upload data functionality? Either via jsonl, or by specifying relays + filters. This is what I'm waiting for.
"Behold what manner of love the Father has bestowed on us, that we should be called children of God!"
I wrote a beast of a post on github which goes through this all in more detail. The key stuff is still possible without making it the root identity (the relay can advertise its own key and use it for anything it wants to). Another problem with using the key as the base identity, apart from rotation/management, is it forces clients and maybe relays to do a lot of very complex, stateful validation. For example, validating a chain of moderators is insanely difficult. If what the relay says goes, that problem goes away.
coracle doesn't automatically retry. I've considered it, just haven't built it. What you can do though is open the publish status window (on desktop) from the bottom left of the main navigation and manually re-publish from there.
This is a bug in coracle, fixed in the next release. For now, @nprofile…cvys the problem is that your profile's lud06 field is invalid. I'm not sure which client you're using, but if you clear that out and leave the lud16 field as-is, you'll be able to receive zaps.
Forgot to say, thanks to @nprofile…kunp for putting this together!
Having something already implemented is a good thing. It forces a minimal kernel, with progressive enhancement. If that's impossible to accomplish the next time, sure, create a new standard. But ideally NIPs are extremely easy to support, with lots of optional stuff.
> I don't think 7D can do BB boards and Slack/Discords at the same time.
I still think you're letting existing products dictate what we're building. It's ok to invent new content types. What exists is a very small cross-section of what makes sense, and in many ways the wrong one (which is why we're here in the first place).
> The discussions on a BB are not chats and are also not threads. They are almost like Mailing list discussions (heavier content/message), but not quite.
I'm not sure what you mean by threads here, but I basically agree. BB-type "threads" were what I was aiming at with 7D. My goal is to have a non-chat place within communities where more substantial conversation can happen, not a twitter-post-type thing. I really think your spec is the same thing, just more developed, and of course with markdown support. But unless tables or your specific way of organizing content are essential for forum posts (I don't think they are) I don't think there's any incompatibility.
Check it out, welshman now has documentation: https://welshman.coracle.social/
For those not in the know, welshman is a distillation of a lot of what powers both coracle and flotilla. Source below:
https://github.com/coracle-social/welshman
Disclaimer: very alpha, so use at your own risk.
It's not DRY, because there's nothing to repeat. DRY is about code re-use. 7D is just a stub. I anticipate new tags, events, etc.
Kind 1 is ugly, but it's also the kind that has the most users by far. This is the value proposition of nostr. I'd take ugliness with interoperability over feature-completeness without interoperability any day.
> The need for interoperability includes the semantical meaning associated with the type of content, not only it's functional underlinings.
That's exactly my point. It's not about keeping specs DRY, that's insanity (in code as well as in specs). It's about optimizing for interoperability by focusing on semantics, rather than functionality.
You're right, my use of simplicity/complexity is backwards according to Rich Hickey. What I meant was that proliferating standards make room for complexity within a single spec. Using a single spec for multiple closely related UX's forces the spec to not be opinionated.
My point is that "doing something well" is subjective. Two clients might want to do the "same" thing, but differently. This requires agreeing on a kernel data format and diverging in how those clients infer meaning from what is explicit in it. Like, instead of prescribing that every thread has to exist on a board, just let threads be their own thing — they can be organized by nip 51 list, topic, nip 29 group, relay, author, whatever. I don't think we should be over-prescriptive in specs, because ironically it introduces complexity as different clients try to bend the spec to what they want to accomplish. This results in combinatorial complexity. While if the spec is very minimal, yes there are limits to the functionality, but those are well understood and can be managed.
What in particular? The re-posting via kind 1? Because I agree with that. But in any case I think clients can still provide a good UX by reconciling the different kinds when needed.
Yeah, obviously we can't go to ultimate simplicity or else there would be no information in the specs.
Just YOLO merged PR #230 (we're currently on PR 1818), which introduces NIP 66 for relay monitoring, authored by @nprofile…53ac.
This PR has been in the works for over two years. It's honestly hilarious that it hasn't been merged yet, since we're currently on version 7 of the spec.
I find this NIP interesting personally, because even though uptake has been slow (I don't have it integrated into either Coracle or Flotilla, although several clients do use it), it's going to be very helpful in scaling the relay network by providing metadata on which relays are most reliable, and for what purposes.
It's also done in a very nostr-esque way; basically "relay monitors" (which self-advertise) publish kind`30166` events in order to report on relays. Anyone can publish these reports, which gives us the best of both monitor reputation and openness.
If divergence in UX justifies divergence in data formats, then every distinct UX would have its own data format, and there would be no interoperability.
On the other hand if semantics justify data formats (e.g. we've arbitrarily decided that short form video vs long form video are different concepts on an ontological level), then divergent UX can interoperate.
The difficult thing is deciding what the trade-off should be between simplicity (by collapsing multiple types of thing into a single standard) and complexity (proliferating standards and granular tags for more complete support of more use cases).
The limiting factor is simplicity. Once a spec becomes too complex, the number of implementations drops significantly. Therefore, in order to support interoperability, applications have to interoperate on a level below their desired UX, and supplement either through inferring additional meaning from the base data formats (which logic may diverge between clients) or by creating proprietary data formats to support the client's UX.
It's not combinatorial complexity, it's postell's law
Yes, but in theory nostr prefixed links shpuld be enough. If you have a native app it should open those links regardless of where they show up. The bad part is for people on web or who fon't know what those are. In that case prefixing with njump is better. But it's worth pushing people towards the native solution
Another friend has succumbed to the XRP mind virus 😭
That is by design, a relay may choose to actively deny new requests or fuflill them as able. The spec being loose allows for different relay policies. Just like every client has to deal with weirf tags, cluents and relays should both be highly tolerant of weird behavior.
So much emotional thinking out there
Go to settings and enable auth, it should do what you're describing
Tricky, you have to use the advanced mode. Coracle also doesn't really recognize tag lists
WoT is calculated client side, but additional results are loaded from some search relays. I am planning to integrate vertex though, at least as an additional backend
Thanks for asking! I've got ~1 feature left to deliver before I start launching it locally. I'll probably write about it after a while.
You could post it using a burner key and then repost it from your normal account. Your repost might get zapped, but it would be for sharing "someone else's" content. Probably wouldn't hold up in court, but the ability to send people money without their consent is going to upset a lot of things.
Where are the Butlerians when you need 'em
Technology is like a genie. Found in an obscure place, willingly compliant, overly literal, conferring great power - and ultimately, entrapping its own master.
LLMs are revolutionizing how I write tests. Instead of writing tests, now I:
- Ask the LLM to write tests
- Refactor my code
- Tests fail
- Delete my tests
- Ask the LLM to write tests
I don't understand the receive/send distinction and why it's important. Is it just that you want certain shards to be passive and unable to initiate requests because they're in an untrusted context? This seems like it could be a nice complement to the usual pattern of nagging the user about every permission request.
On promenade, I highly encourage you to check it out: https://git.fiatjaf.com/promenade
It's currently used by https://start.njump.me to encourage new users to get started with a multisig bunker, without having to set up any signer software on their end. This seems pretty close to the ideal of abstracting away keys for new users without compromising security too much.
If we get key rotation, simplier coordination, and/or encryption using frostr, that's an improvement over promenade. But third-party shard custodians have to be plugged into the nostr social layer via NIP 89 so that we can avoid collusion of dishonest signers.
Dude, this is fantastic. Nice work! I love seeing my stuff get forked to scratch an itch.
Can you compare/contrast this with fiatjaf's promenade project? Can frostr be reconfigured to support third-party shard custody? It would be great to solve key management and rotation without users having to learn how to do it (at least to start). Short of collusion between providers, I would imagine custodial shards would be pretty safe.
New Coracle release: 0.6.6
- Show complete website/lnurl
- Scan images for sensitive content
- Make muting on feeds more strict
- Apply muted words to nip05
- Fix list editing
👀
https://image.nostr.build/157080036e18d1057bac36fc836a132e60964289fa346987212dcfbe11f615fa.png
https://github.com/nostr-protocol/nips/pull/1796
This should be fixed on web, I'll release a new Android version today
Gotta nag the maintainers, there are 1000 open PRs. Looks like @nprofile…5fsc was going to do some additional work and forgot about it.
Pretty neat VR NIP 29 client in development by @nprofile…3h0k: https://github.com/visiondevcamptokyo/devcamp/
Ah, the good old "failed successfully" standby. Did the DVM request get sent? If so, it's pablo's fault
I am the developer of coracle.social, so you might give that a try. Amethyst on Android and Damus on ios are the most popular mobile apps. 0xchat is very nice for DMs and chat.
Luckily most of these tools are highly targeted. The use of them doesn't break nostr's user-centric nature either, so I don't think it will actually result in meaningful centralization
These people all have mostr.pub nip05s right? I'll see about blocking profiles with a given nip05 domain
You mean summarize those?
Thanks! I'm honestly not sure, short of contributing to development. Telling other people about it is good though, while coracle is far from perfect it has things other nostr clients don't
Thanks, that's definitely a bug
That's the neat part, we don't
Maybe send an email to my nip 05
Shopstr published the listing using the currency code SATS, while coracle uses SAT. We're working it out
Is this the git version of consolidating utxos? Honestly didn't know you could do this.
I don't really want to encourage people to use coracle for these, since I've removed a lot of support for them @nprofile…xeyl is there a NIP 89 handler for shopstr?
Is this your way of telling us you're becoming a product manager?
Run your own relay, your content will eventually get scraped and replicated
This is the scariest image in existence
Instagram didn't always look like instagram. You might enjoy the next episode of the @nprofile…zv0e in which @nprofile…lh06 and I talk about this very thing.
I'm hoping to possibly have a basic version done tomorrow. Probably get it integrated with flotilla next week. The first version will be only emails, and so it won't do much with pause_until etc. What do you mean by adding a new kind to pokey?
@nprofile…xeyu bro you guys gotta stop spamming me with notifications about your fake replies
Building a generic solution to this based on a draft by @nprofile…6pfl. Could be useful for pokey too. https://github.com/nostr-protocol/nips/pull/1796
See https://github.com/nostr-protocol/nips/pull/1796 for an updated version, would love your feedback @nprofile…r2zc
Ah, I see, the client would have to block on auth in order to make sure it got the maximum results. Hmm
I haven's spent much brainpower on it, but isn't partial results the default? In my mind it's ok if relays withhold some events without telling the user, because no relay has a complete dataset. Communicating that that's happening, and how to get around that is harder, but maybe a job for LIMITS or nip 11 or something.
I like the initial design, but I think it's missing a lot of important stuff. Could be a good starting point though, the architecture makes a lot of sense.
It also doesn't support the nip 29 membership use case
No, but in all reality that's probably the first thing my target users will ask for
Coracle has light mode, flotilla WILL NEVER
Thinking about how to add push notifications to flotilla for closed communities — since push notifications have to be sent from a server, I need some way to get access to auth-gated content. The simple way to do this would be to just share the user's own session with the push server, but for obvious reasons that's a no-go.
The cleanest solution I can think of would be to allow an active NIP 46 session to delegate permissions to another session. All I really need is authorization to sign a `22242` event on behalf of a user.
Below is a draft NIP that introduces a `delegate` method to NIP 46 which "locks" the delegated session to the initially requested permissions:
https://github.com/nostr-protocol/nips/pull/1795
@nprofile…xqzw
Perplexity has turned adding push notifications to flotilla from a multi-week ordeal of navigating labyrinthine documentation to a two-hour thing (apart from the problem of how to actually implement the push notification server).
Google/Amazon/Apple docs are full of conditionals: "For a local development environment, you can set up ADC with your user credentials or with service account impersonation by using the gcloud CLI. For production environments, you set up ADC by attaching a service account."
Perplexity: "Go to the Firebase Console and select your project. Navigate to Project Settings > Service Accounts. Click "Generate New Private Key" to download a JSON file containing your credentials3."
Understanding the system architecture of Google's entire authentication system is not important for my job as a developer. I just want the thing to work, just give me a key. If I ever need to "attach a service account" I will figure it out at that point, probably using AI.
I'm so glad I can spend more time coding and less time reading awful documentation.
I bet it's a khatru bug. I opened a PR a while ago, can't remember if it got merged
Yeah, flotilla has calendars, but they're scoped to a single relay
RFC: should clients send users' kind 10002 to every relay that they publish to so that other people can find their profile information (etc)?
https://github.com/nostrability/nostrability/issues/166
@nprofile…anm8 I've been unable to successfully authenticate to groups.0xchat.com for a few days now:
```nak req -k 1 groups.0xchat.com --fpa -v
connecting to groups.0xchat.com... waiting for auth challenge... performing auth as 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798... msg: error: failed to authenticate
failed to connect to any of the given relays.```
That's a great idea, I like svelte's tutorial a lot
That's bizarre, are you using nip96/nostr.build or something else?
I wish there was a better answer
You're trying to lure me into filling out your FAQ aren't you 😂 It's on my list, I just don't feel energized to do it because I did something similar last year and it was a lot of work and never got published. Also I don't think an FAQ with unedited responses will be much help to new developers.
But to answer your question:
Read nostr.com, read nip 01, install nostr-tools and work through the examples in the readme.
Just like you don't learn a programming language by reading the reference manual first
Oh, absolutely. I didn't write this, I just used it
Yup 😂 I like to live on the edge
Someday someone will write a book
I agree with the sentiment, but there's areason people always end up adding stuff. Also, I still have ptsd from my junior dev jquery days 😂
I'd be interested in looking at your project though, if only to see how you've arranged things
Too many options, I don't know. I'm interested in learning more about rimmeljs or some other observable thing, stencil for making web components tractable, rust (dioxus?)
Everyone should go use https://sidiropo.github.io/youcupid
Match created between PABLOF7z and gitlost_nbot!
Match created between PABLOF7z and gitlost_nbot!
Match created between fiatjaf and Donald J. Trump!
Match created between fiatjaf and Donald J. Trump!
If you're going to be stuck in the past, you could do worse than redux! I actually really like that approach still.
Vanilla results in writing your own state managements, htmx requires a server component, and web components are cumbersome (although I have my eye on stenciljs). Also considering rimmeljs and my own micro framework for svelte store based components.
Because it's terrible for anything other than physical backups
I haven't picked an alternative yet. I'm stuck with svelte for the foreseeable future, since I have probably around 40k lines of code written using it.
Vanilla js is great for small things, but it's hard to reconcile state with the dom reliably. I like the idea of a very small framework supplemented with vanilla (which in a lot of ways is what svelte was).
My polemic against svelte 5 continues
In fact it doesn't, you have to re-assign the variable in order to break reactivity
The pattern is really weird in isolation, but it makes sense for use cases like portals and modal dialogs.
It worked in svelte 4 because this is just how javascript works. It seems like svelte 5 is trying to re-implement garbage collection by undefining props on unmount. Svelte 4 just used javascript for state management — even though there was some compiler magic with stores that get `unsubscribe` called automatically, it was basically relying on the javascript VM's garbage collector to avoid memory leaks. I suspect something about runes makes this more difficult.
The`reduceLinks` utility has been a little unstable, but that's pretty much all that's changed recently
@nprofile…0w3p I want to know if you have answers
No, media is not private yet unless you use a custom server
Ah, the joys of svelte5:
https://stackoverflow.com/questions/79446266/svelte-5-deep-reactivity-results-in-undefined-props-after-unmount
Anyone have any advice for me?
What version of FF are you running (menu > help > about firefox)? Are you using a private tab?
They get nice listings of custom feeds and other cool tools built into clients. More user choice, less vendor lock-in.
Haha sorry about that — the web version should have the fix in about 10 minutes, I'll release a new APK soon after that
(sometimes it can take a little while for the browser to load the new code)
aHA! I suspected this. What you thought was a bug with the editor was actually a bug with the renderer. I fixed that bug late last week, which means your notes all got published as intended. Does this fix your issue?
Click "console" at the top
Oh, that's weird. Is there any red text under console?
Blossom servers is a todo, it's currently using coracle's nip 78 settings blob. Also, yes, the key is hardcoded 😂
@nprofile…ue6x have you been able to get coracle to load? Are there any errors in the devtools console?
Can you send me a link to a post that was affected? I have a hunch that the bug may be on the rendering side rather than the composition side.
Just added a paragraph to the article that covers that:
> For the uninitiated, DVM stands for "data vending machines". They're actually sort of hard to describe — in technical terms they act more like clients, since they simply read events from and publish events to relays. In most cases though, these events are part of a request/response flow initiated by users elsewhere on the network. In practice, DVMs are bots, but there's also nothing to prevent the work they do from being powered by human interaction. They're an amazingly flexible tool for building anything from custom feeds, to transcription services, to chatbots, to protocol gateways.
By global do you mean global or the default follows feed?
Can you be more specific? Works on my machine etc
NIP 46 only right now. I think tgere are iOS signers, but I'm not sure how good they are
Possibly, but lots of components listen on the repo object, 1000 isn't actually too outlandish. What's not loading?
Very good article by Gordon Brander on (indirectly) protocol design: https://open.substack.com/pub/subconscious/p/dont-fork-the-ecosystem
Lots of proposals were put forward for this, and this is the one that got the most traction and support. Doesn't mean it's the best, but it's what we have now
At least I've got a win somewhere
Negative filters are more computationally intensive, relay devs tend to resist that kind of thing. Also, adding stuff to the query language forks the protocol and requires most implementations to upgrade before it can be relied upon. Adding a new data format is a way to get the benefits in parallel with adoption, without breaking much.
Sure enough, it was working a week ago, but it's gone. I'll fix it
Compatibility, that won't work for notes without it. You'd have to add negative filters for replies, the best way to do that is using a different kind
@nprofile…npu3 hmu and I can help you get set up
It's currently impossible to fetch root botes without fetching replies of the same kind. This fixes that. Also, it's only intended to be used with non-kind 1, which are pretty entrenched already.
https://imgflip.com/i/9kc10p
I added a service worker this release, I wonder if it's related. Did you look at the console? I've heard multiple people say they've had this problem
Sure, nostr-relay-tray is probably the easiesway. You can also add a relay on start9/umbrel, download jsonl files, etc
Seems ok from here, what are you seeing?
That might be it! Thank you, I will investigate
Sorry your setup is so borked, I have no clue why
Though flotilla should work with tor relays if using the tor browser
This is usually due to storing too much in browser storage. I've reduced the limits and hope to address it more granularly at some point
Thanks for letting me know. I've noticed it on occasion as well, something to do with the editor library I'm using. Is there anything you do that makes it happen consistently? A reproduction would be helpful.
@nprofile…j3sv got this error bumping flotilla past 0.2.9 - could it be you're not parsing version numbers correctly?
https://image.nostr.build/23d3262476b4fac7bb41efc6d692ea39be1f8880a1145e6628c16cd42cbac7b6.jpg
could you be on an old version of coracle? There were some bugs like this with the initial release of this version a few days ago
Only if you don't keep a backup
Seems ok to me?
https://image.nostr.build/d5c013a077daf4b0b582af470f95ffb4a91d53ffd005d46909f985d3002fff4d.png
👀 Maybe we got rate limited by ip?
All of it, but with the caveat that I'm a little over-scrupulous, and interpret things pretty liberally to make sure I'm covering my ass. So "cookies" might mean cross-domain trackers; all I mean is that I store your session across page visits. I don't know if that's unnecessary, but I like to be on the safe side.
Just spending the day thanking people whose work I've benefited from. nostr-editor is the bomb and I'm grateful for it 🫂
Ignore the metadata requests, my relay selection code still needs work. But sub 08321708 isn't returning anything after 7 seconds.
https://image.nostr.build/dc8e78c3da51e74a9a9b6eab9fbf9372fab879bd3106ec251645c45c9e89881f.png
I think developers haven't done a lot of usability testing partly because they're not satisfied with their software themselves yet. It doesn't make a lot of sense to get input when there are self-evident issues there. I am getting close to happy with flotilla though, so this is item #3 on my list (after building two things that are 100% required by users first).
I agree with that. But it's also true that if you have radically different values or cultural background from me, it makes understanding, and therefore effective love, more difficult. It's more effective to serve the people near you before you try to help the people far away. But point taken for sure.
The Golden Rule is also a great way to approach product development. I'm currently researching push notifications for Flotilla, and it's easy to decide the strategy I want to go with, because I know what kind of notifications would be useful to me.
Going this route means that you appeal more strongly to a smaller audience, because people are weird, and your preferences may not be universally shared. This flies in the face of the data-driven conventional wisdom about designing products. But I think it is far better, because it results in a higher diversity of solutions in any given space, that are higher quality from the perspective of their target users. Loving people from your authentic self has compounding benefits.
Finally got flotilla submitted for review on the app store! Fingers crossed it goes through...
Not to say that I disagree. A federation event on the relay level seems like a better way to do it than directly within NIP 29 though, since it can be used for a million other use cases related to relays.
If you're wondering how my day is going:
https://image.nostr.build/b51c38da7006656dadadac2320cf7cf704ed4fff5e18dee7a4f0b0bb102d4073.png
@nprofile…wh98 @nprofile…xprr and anyone else with an app on the app store, how did you handle the export controls for encryption? My understanding is that at least NIP 44/04 are considered proprietary encryption and need an ECCN approval from BIS.
What you're talking about is a totally different medium. But I agree, it would be a much healthier way to consume social media. However, it requires drawing lines regarding what the "top" is, and implementing automated filtering to reduce the amount of content to a manageable size. This is harder than simply showing the most recent stuff to the end user.
Backup relays are something I've thought about some. I even had them in some revisions of my relay-based groups:
https://github.com/coracle-social/nips/blob/379b69c42b9db641e0c8383d5bfbd891ef4abaf4/29.md#federation
https://github.com/coracle-social/nips/blob/60179dfba2a51479c569c9192290bb4cefc660a8/xx.md#federation
But in most cases, the backups don't even need to be specified, since anyone with access to the main relay can sync events to their backup. Then, when the original relay goes away you just manually move to the new one.
It's a lot simpler than in a twitter context. Since the relay + identifier is the full id of the group, forking happens explicitly by copying data and using a new qualified id. The outbox model in the narrow sense is irrelevant, and in a broader sense it's barely visible (unless @nprofile…xupk starts building multi-relay groups, then all bets are off).
A post by Eric Hoel which backs up what I've been saying about AI-assisted coding:
https://open.substack.com/pub/erikhoel/p/brain-drain
I was saying last week that I felt like using AI to code made me more distant from the code, making it hard to understand and maintain in the longer term. I called this "legacy code generation". There's also a long-term effect:
> There’s increasing evidence for the detrimental effects of cognitive offloading, like that creativity gets hindered when there’s reliance on AI usage, and that over-reliance on AI is greatest when outputs are difficult to evaluate.
This is balanced by AI helping experts to fit more context into their brains at once, to work at a higher level, which is definitely a super power. I was even wondering the other day whether both versions of programmer might coexist in the long-term — one in-the-weeds, highly productive programmer might complement a high-level prompt engineer.
Also, this sentence makes me feel good about my default position of skepticism:
> For individuals themselves, the main actionable thing to do about brain drain is to internalize a rule-of-thumb the academic literature already shows: Skepticism of AI capabilities—independent of if that skepticism is warranted or not!—makes for healthier AI usage.
Quick follow-up release from yesterday with some fixes.
# 0.6.2
* Prevent notes from opening when links are clicked
* Use wasted space on mobile notes
* Fix images/link behavior on mobile
* Show PoW difficulty in settings
* Fix WoT filter not getting applied
You're right, that part got lost in the shuffle
@nprofile…g4dm reminded me that I forgot to include proof of work in the changelog — you can now attach PoW tags to your notes, and filter notes by PoW for people who don't meet. your web of trust threshold.
#nevent1q…aplh
Quick tutorial on DVMs I wrote yesterday:
#nevent1q…z6jg
Thanks, I'll look at those tomorrow
@nprofile…p47z dvmdash.live seems to be timing out for me
In the console, what does `window.nostr.getPublicKey()` do?
Coracle doesn't normally fetch reposts, and when it does it collapses them.
That's the goal, this release wraps up 3 months of work, now I'm free to focus on flotilla
I mean, it's hard coded, but I would add your NIP once it's drafted
yep, pushed it this morning
🌀 Coracle 0.6.0 is out!
I know the hype has died down, but this release brings long-awaited support for rendering kind 20 (Olas). Along with that, media viewing has gotten an overhaul and should be a much nicer experience now.
Other than that, we've got note publish scheduling via DVM, pinned note support, and lots of improvements to speed and stability (fewer spinners!)
Full change log is below:
- Add support for tor/local relays
- Use nstart for onboarding process
- Oranize media into grids and add full-screen overlay view for images
- Fix several note editor bugs
- Improve thread, profile page, and notification loading
- Show more details on reaction notifications
- Improve mutes, add setting to completely hide muted people
- Tweak long form article rendering
- Refactor zap dialog
- Add kind 20 rendering support
- Improve rendering for various note kinds
- Use more subtle placeholder avatar
- Fix handling of all-caps lnurls
- Fix rendering of notes in publish information dialog
- Add pinned note support
- Remove broadcasting of note parents
- Add note scheduling via DVM
- Clean up modal colors and design
Thanks to @nprofile…u22r and @nprofile…aepq for their contributions to this release!
I approve of this. It would make it quite easy to build automatic lists based on web of trust as well.
Nothing better than digging up eggs out of your own garden
You might try https://github.com/franzaps/zapthreads
I don't know for sure, but I'm pretty sure listening to something while your body shuts down for the night is not good for your sleep. It's certainly one of many ways in which noise fills all our quiet spaces. Sleep timers enable this pattern.
Sleep timers are a dark pattern
Neither did I, but you'll get used to it. It's actually quite helpful, and this is coming from a die hard clojure fan
Lots for search. For coding assistance I'm very skeptical. It's great for certain focused tasks, but in most cases it's a great legacy code generator.
No one has built an end-to-end flow like this, but the pieces are slowly coming together. Flotilla supports invite codes, and making a zap receipt into an invite code would be trivial. The UI is probably the biggest lift, but some nip 29 apps might work well for this (I assume since it's a one-time event a single channel would be preferable to flotilla's many-room approach)
This is hilarious
https://haterade.substack.com/p/i-tasted-hondas-spicy-rodent-repelling
The term itself is an abomination
Dark mode everywhere, then just invert your colors
https://image.nostr.build/b58e00a37683f3ddbfbfb54053d4bd43f99c04d5540393dce916a9b8ffb21916.png
React seems like a pretty good framework-agnostic rendering layer.
Gotta manage the complexity of the 50k shitcoins somehow bro
I don't want to "connect a wallet", I want to pay in bitcoin
So I guess it's impossible to just pay with bitcoin when using coinbase checkout? Can someone confirm? I can't believe how idiotic the crypto industry is. They've managed to re-invent the walled gardens and whitelisted integrations of the legacy financial world, lure normies in and make them think they're using permissionless systems.
https://image.nostr.build/9e58de859bc68fde35225d1335db49ca77668b674b2cce271b1bb0290afb925a.png
https://images.unsplash.com/photo-1734784548166-a1ffe07dd7cd
https://images.unsplash.com/photo-1737917818689-f3b3708de5d7
Ignore this
https://images.unsplash.com/photo-1734784548166-a1ffe07dd7cd
https://images.unsplash.com/photo-1737917818689-f3b3708de5d7
https://images.unsplash.com/photo-1736177843409-73956dc1c810
Ok, but legality has bearing on awfulness
Not just that, but only children are markedly different from first borns
Right, that's basically how microsoft's product works. They don't release the database because you could then craft images that foil the fuzzy hashing algorithm they use.
Coracle will still attempt to send stuff, and old-style messages will still be readable. Suffice to say it's complicated because of interoperability. Hopefully this will improve as more clients add support and UX gets more attention.
Kind 10050. But you as a user don't need to know that. Just have the person you're talking to go to relays and add "DM Inbox" relays.
If the user selection for inbox relay doesn't exist, the user has not expressed that he is using a client that supports nip 65. Any fallback relay will be invalid, since read/write 10002 relays may not even accept 1059s. The only correct thing to do is to surface the error (and hopefully help users fix it).
The spec specifically says only to use the designated relay list
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/
That means the person you're talking to doesn't have their inbox relays configured (or coracle couldn't find them), so coracle doesn't know where to send your messages.
"Deep reactivity" means using proxies, which are a leaky abstraction. The way reactivity is handled based on component state is also leaky. And runes are magic which infect the rest of your codebase, making everything into compiled svelte code
Eschew vestigial prolixity
@nprofile…xsxu what ui framework are you using with your observables experimentation? I'm thinking of moving away from svelte. Is applesauce built around the observable/reactive paradigm?
Good, American car companies are a joke
Feminism is ironically an attempt to judge women by masculine standards. If you want to raise a daughter to be a woman in the fullest sense of the word you will reject feminism.
Wouldn't that just inflate all scores by 1?
Yeah, coracle doesn't have great support for local relays yet. Hoping to address this soon
Coracle has all of these things 🫡
Yep, if you include the protocol it gets it
This also is fixed in the next release
Allow opting-out of the new posts notification at least, I added this to coracle at one point, and I think it's a very dark/annoying pattern.
If you haven't listened, we went in depth on this topic here: https://podcasts.apple.com/us/podcast/nuh/id1694064646?i=1000677472142
Our work has paved the way for new developers to make increasingly better stuff, I'm stoked.
Ah, nice, that screenshot makes it make a lot more sense
I haven't tried dev, but here's a quick video I recorded with some things I noticed:
https://coracle-media.us-southeast-1.linodeobjects.com/nosotros.mov
It is so exciting to me to see my vision for coracle actually happen. For a variety of reasons coracle is just not quite what I've always been going for.
Well, then you need bridges for web apps to get to the DHT. So I don't think a dht should replace outbox, but it could be helpful as a complementary index.
DHTs are a nice tidy technical solution. It uses math to find the optimal solution for traversing a bunch of nodes. It's really cool, and might work really well for bootstrapping.
DHTs are good at storing an index, but not a massive amount of data (hence pubky's home servers). Nostr relays are great because they give us the ability to scale as much as the web has for both indexes (sub-optimal probably) and data (the only way it's been proven to be possible), while retaining decentralization.
I got nerd sniped. After being so annoyed with migrating to svelte 5 I started wondering how hard it would be to make a reactive framework *without* all the magic. Not all that hard as it turns out.
So I built nug, a very small reactive dom system. It doesn't use virtual DOM, and it doesn't use proxies. Instead, it just uses svelte stores, and some completely untested techniques I made up for splitting up large lists and render trees.
Source code: https://github.com/staab/nug
Demo: https://nug-n8tt.onrender.com/
Here's a quick demo of the new calendars page on flotilla:
https://coracle-media.us-southeast-1.linodeobjects.com/calendar-demo-02-06.mov
@nprofile…9xl5 can you give flotilla another try and tell me how it goes?
The proxy stuff was one thing, all my events get copied when they get saved to indexeddb, but since you can't detect proxies (except by copying them), there's no way to fix it in once place except try/catch every put operation. On top of that, the`$state.serialize` thing has to happen in a`.svelte` file. But I don't want to infect all my normal code with svelte stuff, I like to keep the two separated.
Other things:
- Reactivity has subtly changed. Stores don't see to be enough in every case. I've had to wrap a store in a`$derived` to get reactivity working.
- Reactivity is much more magical. Stores are extremely simple, but there's no way to dig in and debug runes.
- Runes also work the same way as react hooks do, which means implicit state based on when the variables are accessed or modified. This breaks timeouts, async functions, etc, and leads to hacks like`untrack`
It's not horrible, it's just... worse
I forgot to build before releasing the apk 😭 uninstall and re-install should do it
Flotilla version 0.2.7 has arrived! This will hopefully solve some stability issues folks have been having — if problems persist, let me know!
Also in this release is the long-awaited "Calendar" tab. Now you can manage calendars within relay-based groups! Give the new release a try and let me know how it goes — new versions are available via @nprofile…kfwk, app.flotilla.social, and (eventually) Google Play.
Changelog:
* Add calendar events
* Migrate to svelte 5 (fixes some bugs, probably introduces others)
* Migrate to new welshman editor
* Make reply indicator nicer
* Make share indicator nicer
* Improve feed loading
* Show marker for last activity in chat
Habla.news and yakihonne agre good for long form. But you may be looking for wikifreedia.xyz
Very likely, @nprofile…evsd want to come on TGFN and talk about it?
Gossip, NDK stuff, rust-nostr has support. I've lost track at this point.
It might be simple — I didn't see a main.go. Is there a single binary for relay + dvm, or separate ones? Are the files in cmd the entry points? If the latter, how would I configure the relay and dvm to talk to each other?
This looks rad, and it's done in a way that ensures reputation is available to anyone without a centralized chokepoint. Now I just need to figure out how to run an instance... @nprofile…kwlg are self-hosting docs forthcoming?
#nevent1q…7amz
Yeah, that was my first impulse, but no. Which I think is ok, it's interesting to see how far we can get with data format design instead of database features.
It only took me two implementations of my own to notice. Maybe it's because there are so few events out there that clients can afford to just download them all? It never occurred to me before.
Not by duration exactly, but by timeframe. But I think that's what you meant.
The alternative would be potentially to just list the dates the event falls on in YYYY-MM-DD format, but that's basically just a time hash, and introduces the question of timezones. Another alternative would be to have queries like since/until on tags, but that seems unlikely to get adopted at a meaningful rate.
It's crazy, but there's currently no way to query NIP 52 calendar events by time. I don't know how that slipped past review (and implementation), but I aim to fix it: https://github.com/nostr-protocol/nips/pull/1752
@nprofile…f4wq @nprofile…au3h
Yeah, there is a lot of essential complexity in groups
Have you seen this one?
#naddr1qv…n8aq
It is, but it's all been rolled into nip 29. See more details here: https://github.com/coracle-social/flotilla/issues/83
https://i.imgflip.com/9j14i5.jpg
NIP xx is only an obsolete draft, flotilla follows NIP 29 now
Yeah, the issue I'm running into is when saving events that have been infected with proxies to indexeddb. Proxies are "transparent", except when you try to clone them, in which case they crash the whole shebang 🤦♂️
Yes, runes are designed to be used outside of components, which means they infect everything
Yes, my next golang-based PWA will be a hit I'm sure
I'm probably being dramatic, but I'm currently in the Anger phase of the 5 phases of grief
So apparently it's impossible to reliably (and cheaply) detect proxies, which means there's no generic way to un-proxify an object recursively. What a mess.
#nevent1q…9rvq
Proxies allow you to track changes deeply, so no more`x = x` silliness. Which is nice, and helps with performance, but leads to madness.
Yes, by object I mean pojo. Classes should not wrap data except as a way of providing functionality
I couldn't justify using such a niche tech stack at work. It would have been a good idea though.
Nice, stencil looks interesting
It just moves complexity around. Instead or using stores any time you go outside a component context, you use runes everywhere. But the gotcha is those are proxies, not real objects.
Can't leave well enough alone
Neat, I hadn't heard of that one
Svelte 5 ruined the framework so badly I might have to switch completely away. I just discovered that you have to use`$state.snapshot` any time you want to pass data to functions that won't work with a`Proxy` — and it doesn't work recursively. This is on top of tons of subtle semantic changes having to do with when reactive stuff runs. It's a totally different framework, and it's stupid.
Is dart good? Maybe I'll just go back to clojurescript. Or maybe go all in on rust.
Oh, that far back? I thought it was a Harris thing
Why does every new official have to be a "czar" all of a sudden?
No, it's my bug, it just might take a while for me to solve 😐
The good news: I was able to replicate the error
The bad news: it only happens on a production build
Sveltekit is making me go gray
Ah, I know why, it's to decrypt user settings events rather than DMs. I see some errors in my bug tracker, I'll see what I can do to address them today
You could use a tracking pixel (disguised as a useful image), although many clients use proxies with caches, so it might under-report views. This is something that will probably never work on nostr, since it requires platform intermediation.
I'll include a slider that goes from "baby eagle" to "crypt keeper"
I just got a new prescription for my glasses, so maybe I'm only temporarily young
https://github.com/coracle-social/flotilla/issues/106
This happened immediately after Jordan and I recorded a TGFN episode. He was like "call you back bye" and sent me this link a few hours later 😂
#nevent1q…5mzu
Whoa, yeah, yikes, important distinction there
I think there's room for both, clients can respond or not depending on how aggressively they wan to auth. If there are implicit access controls going on, the relay may choose to respond with some subset of data without notifying the user. Or it may notify so the user knows to authenticate because they're missing out.
Coracle has it built in to the zap dialog, I know Amethyst supports it too. You can also sign out, create a new account, zap, sign out to do it manually
I'm not sure, I think that might be better handled in some other software. There is a NIP for these controls, and moderations.nip29.com is doing some version of it, but it's not really there yet.
Yep, just make up a random private key for the zap
Christianity isn't powerful, Christ is
I haven't had the experience, but it's super weird, and apparently happens to men more than women
That's the neat thing, you don't. That's when you turn off your phone and go outside
No lightning address or the payment isn't going through?
Probably just a cosmic coincidence, the logo is awful
Maybe this? https://block.github.io/goose/docs/guides/custom-extensions
What the heck, notebooklm stole my original coracle logo and just turned it upside down. I'm suing.
https://image.nostr.build/9dbb24017862bd271729cd217bbe9561cf20b679d3074e3d7f18ae981fad2ba3.png
Kagi is awesome, now I want to look into KU
I'll also focus on that 😂
app.flotilla.social or flotilla.social? In either case I believe it's a cname, so IPv6 would depend on my hosting providers.
Hard to say. I know what should be, but not what the current state of things is. There are lots of hacks out there to get around client limitations, but if clients don't add support their users lose reach.
Hoping to write a tool to fix this for everyone
I agree, but everyone's gotta have at least one NINO point
Blog posts are editable, it's just kind 1's that shouldn't be
That is an interesting take
I never thought it would happen to us
nostrapp.link makes it pretty easy
> there is no way to specify how to launch a local application in such a way that other applications could do it automatically.
🤔 still would be worth it just to get recommendations and promote the software
Take the NINO quiz! Here's how flotilla fares:
- [ ] There's no NIP for your data format
- [ ] There's a NIP, but no one knows about it
- [ ] Your NIP imposes an incompatible/centralized/legacy web paradigm onto nostr
- [x] Your NIP relies on trusted third parties
- [ ] There's only one implementation of your NIP
- [ ] Your core value proposition doesn't depend on relays, events, or nostr identities
- [x] One or more relay urls are hard-coded into the source code
- [ ] Your app depends on a specific relay implementation to work
- [ ] You don't validate event signatures
- [ ] You don't publish events to relays you don't control
- [ ] You don't read events from relays you don't control
- [ ] You use legacy web services to solve problems, rather than nostr-native solutions
- [ ] You use nostr-native solutions, but you've hardcoded their pubkeys or URLs into your app
- [x] You don't use NIP 89 to discover clients and services
- [ ] You haven't published a NIP 89 listing for your app
- [ ] You don't leverage your users' web of trust for filtering out spam
- [ ] You don't respect your users' mute lists
- [ ] You try to "own" your users' data
That's a 3 on the NINO scale. The "trusted third parties" thing is debatable; in this case I'm counting relay operators, most of which are nip29 multi-tenant relays and relay.tools currently, but ideally that will improve as people run their own infrastructure.
How does your app fare?
#nevent1q…w9gv
I'm trying out goose and it just keeps adding println statements
Oh haha I'm clearly illiterate in Trump Lore
That's an amethyst only thing
Yes, I can feel it happening already. I even heard some conservative commentators comparing Beren to Paul Atreides. Which is honestly not the worst thing. I'd prefer to keep a constitutional republic, but in reality that's long gone. A right wing Caesar would be a more graceful degredation than a left wing one.
That makes sense, huge win. Maybe I've confused hype for the tech for hype for the project.
You keep plugging osty, but there's nothing there? The documentation website is basically empty
Get AI to stitch them together at the edges, it would be amazing
Play it to yourself while you go to sleep
YMMV I guess, just tried and got this:
https://image.nostr.build/0e893b21e1d2d10c7132a13dcc52b87e000e25d63fbaecfcca8b654bc6868695.png
I feel the same way. Like I'm missing something. Also, have you tried codebuff? It's the only one that has been remotely helpful so far.
Sounds fantastic. Execution looks good from the video. Release it now to take advantage of the hype over your post above! Building in the open is way better than trying to engineer a launch.
New blog post just dropped:
#nevent1q…rhn9
This is all being done voluntarily, with no government involvement, so political philosophy is orthogonal to the question. Also, I'm not a libertarian
Oh, neat, that's quite good actually
I'm all for dunking on Sam Altmann, but celebrating the penetration of Chinese values into American tech seems more like a self-own
@nprofile…2luk is nostrdesign.org dead? I was reading that!
I'm pretty sure the benchmarks it advertises are manufactured as well. DeepSeek seems substantially dumber than other LLMs, just from anecdotal evidence.
Open sourcing DeepSeek doesn't negate the propaganda built into the model. I don't really see why people think this is such a win. It's all propaganda, manufactured to get you to read more propaganda.
Thank @nprofile…d9u3 for that one
Yes, but it's easy to rent one at relay.tools
Hang on, let me get my fake mustache
Primal has a bunch, but I don't think they have relay selections, which makes them hard to use without hardcoding primal's relay
Coracle and flotilla both have this as well
brb, being the change I want to see in the world
Why aren't people partying in the streets?
I've been thinking about communities on nostr (and off) for a long time. You know where to find me if you want my input. Also give flotilla.social a look if you haven't already.
It's deep. I tried to explain it more theoretically here: https://www.youtube.com/watch?v=R-5DHymkfzw. Referential transparency is a superpower.
content addressability ftw
This is basically what addressable events gets us, and in a nostr-native way. The objection to edit has two parts:
1. Mutable state creates lots of weird problems. Either you lose history, which allows authors to rug people and build fraudulent social credit, or you keep all the history. Amethyst's edits keep all the history, which allows fiatjaf to spam everyone on Amethyst. Immutability solves all this, at the expense of not having edit.
2. There are lots of editable types on nostr, e.g. blog posts. The usual topic of conversation is whether *kind 1* notes should be editable. My opinion is that the cost/benefit ratio is in favor of having edits for blog posts, but not for kind 1's (since edits are usually light, made very soon after clicking send, or fraudulent). Another way to think about it is that kind 1's generally have so few words that a single edit is much more likely to change the meaning of something that people have already replied to/reacted to/zapped. Whereas people sort of expect blog posts to change under their feet.
The things immutability buys us are largely invisible, but are way more important than what edit gets us. Which is probably part of the reason youtube doesn't let you edit videos, and twitter didn't have edit for a long time.
Just discovered @nprofile…x37k, really appreciating the content so far
Now we have to de-duplicate quotes?
Kind 1 maximalism at its finest
Me at my home gym:
https://imgflip.com/i/9ie27o
Does boost use kind 1 quotes or reposts?
I think that's right. I'm not saying this particular proposal is the Right Way, just that it's the most tangible one that addresses this problem that I've seen so far
Nobody:
Javascript developers: ===
I have two and I think they're dying
Sure, it's basically a discord alternative which lets you self-host your community and interoperate with nostr identities and content.
I'm not sure about this. I believe @nprofile…ptp4 has figured out a way to use secp keys with MLS. Another solution (obviously over-complicated), would be to share secp keys over MLS
In the short term, make it optional (easy enough with DMs, trickier with encrypted lists and application settings). In the long term, some kind of device key sharing scheme, hopefully via MLS
bugs, bugs everywhere
By canned, I just mean either self-promotion or customer support put-offs
No 😈 but there is an "unmanaged" coracle group on relay.nostrtalk.org
BITCOIN SHOULD BE MADE OUT OF BONES
Low information density, it rearranges conversations too much, it uses infinite scroll rather than pagination, it also seems to be used in contexts where there are lots of canned responses vs old-school forums where you have very organic conversations (complete with "my knee replacement went well thanks"). I think the IA is just confusing as all get out. Like, what are the statistics below associated with? The post before? After? The whole thread?
blob:http://localhost:5173/2786537a-2022-4917-8f5c-00578e2a970d
But my opinion is really just based in using it and feeling really confused every time.
Yeah, I had added kind 1 feeds as well as something like keypub.coracle.social, but it felt like scope creep. I'm not sure community microblogging makes sense vs threads, microblogging might be better in a global broadcast/organic social clustering medium. I'm curious your thoughts on that. Have you read much Postman/McLuhan/Carr?
I do want to give community members a way to explore microblogging though, some kind of on ramp that allows them to select trusted community members and see a feed of their content.
That's how we roll at tgfn
No room invites (links are shareable though) - I'll have to think about that. Flotilla rooms are intended to be used in context of a space so a la carte rooms don't make a lot of sense (they do make sense on e.g. chachi). But tgere will need to be a way to deal with room access, so I'll probably have to solve that eventually.
Just released ANOTHER version of Flotilla! If you haven't already, give it a try at app.flotilla.social.
# 0.2.6
* Add reply to long-press menu
* Fix @-mentions
* Replace nsec.app signup with njump.me
* Add new messages button in rooms
* Add media server settings
* Add build hash to about page
nostr:null I don't see it on his X. Do you have a screenshot or link?
Click on the bagel icon, then "discover spaces". Once you enter a space, the rooms list should populate on the left-hand side of the screen (or the home page + menu on mobile)
give it a try: flotilla.social
Thanks! Lots of work to be done, and I plan to do some usability testing too, so maybe all my assumptions are wrong.
Yes, but Discourse is terrible. BBCode FTW. Also Flotilla has forums-lite
Are flotilla/chachi/nip29 not quite the right fit?
It seems reasonable enough to me, but we'd have to propose it and see what others think. And yeah, communities do need other things, at least granular permissions for sub-groups, but the starting point IMO should be relays as groups
Good to know that's wanted. I made the decision early on to use just likes for a cleaner design, but I'm on team reaction nowadays, I'm just not sure if that would disrupt existing users.
Got a new Flotilla for you guys, released to web, zapstore, and Google Play (once they get done making sure I'm being good of course).
* Improve room and data loading
* Use @welshman/editor
* Drop support for legacy event kinds
* Add support for back button navigation on android
* Remove note to self page (still available via chat)
* Improve chat conversation search
* Change how reply UI works
I only use coracle, so for me nostr is centralized
More broadly, web of trust with hacks for onboarding fixes this.
I know what you mean, and I think it's definitely an exception to what I'm saying. I'm thinking more about the context of a community relay, which would have standards other than "so toxic you don't even want to think about it". For that stuff, out of band or anonymous reporting is definitely better. This is why Coracle sends reports to tagr rather than publish them normally. It's a very hard problem, and definitely important to think about.
For end users and moderators, I think nip 56 is perfect, since reporting should be declarative rather than imperative. For administrators who actually want to unambiguously delete stuff, NIP 86 is probably the right way.
It would not be hard to adapt keys to relays in a transport-agnostic way. Just add a new event kind 3xxxx which means "I am a relay" with tags declaring relay address under different transport (wss, onion, etc).
> The reason that devs keep wanting to put logic directly into the relay is that nostr has no official spec for moderation of a relay and the nostr world is very opposed to talking about moderation or making it easy, so it is a green field.
This misses the point for me. Relays largely already have everything they need to do moderation (nip 56, auth, and deleting stuff), which means the best form of moderation is going to be implicit on the protocol level, explicit on the human level.
But I agree that the needs of a community for policy enforcement neatly match those of any kind of relay.
It's an unsolved problem. Many relays have a webpage you can visit that explains their policies more thoroughly, for example nostr.wine. nostr.watch is also a useful tool, but right now it's a pretty trial-and-error process. It would be nice to improve.
@nprofile…3f39 one bug I just remembered with hivetalk is that we seem to lose sound after stopping screensharing, until a refresh.
Moderation, administration, and group metadata might look different in different clients. Flotilla supports relay-level access control and "unmanaged" groups, which don't require relay support. See https://habla.news/u/hodlbod@coracle.social/1732313518416 for some (outdated) information. At some point I'll write about it again
Only the client, although you'll want to make sure your relays support the kinds of content you'll be sending to them
I don't use ndk, I actually wrote my own whole framework, see https://github.com/coracle-social/welshman
2-3 of each is better, but that's the idea
Very interesting, spural dynamics is a new term for me. I looked it up and am interested to learn more
Thanks, I'm glad my vision for relays makes sense to someone other than myself 😂
Yes, flotilla supports the core of the spec, but with a different spin on things
Exactly my point, we need to beat them to better solutions
Watching Star Wars 9 with my kids this weekend it seems to have fully made the transition from whatever Star Wars was ( western?) to a Marvel movie. Instead of telling a story about and for people, suspense is only sustained by more stuff going on onscreen. This is the first Star Wars that I actually feel uncomfortable showing my kids because of the creepiness of the emperor. Plus, I'm bored by it.
That's a good point, I know what you mean. They have their blinders on in some ways, but we don't have too
Just finished watching The Social Dilemma, and it makes me more excited than ever about nostr. There are lots of ways nostr might actually make the problem worse, but if we can do a good job of putting the user at the center of digital systems, and designing those systems humanely, we might be able to provide a huge missing piece of the puzzle. Most of the solutions at the end of the movie depended on collective action, on outlawing advertising-based business models, enforcing policy to protect kids, etc. Some of that may be necessary, but I'm excited to be part of the very small group of technologists who are trying to do something about these problems, on our own terms, and in a way that preserves freedom and individual agency for society as a whole.
I'm going to write about something less obvious
Whining because you feel entitled to someone else's attention/platform/money/work/etc is not the nostr way
There are like 15 different app registries, all of which are centralized. Why complain about just this one?
Criticism != hostility. Keep going, hivetalk is getting better! I even used it with a non-nostr person recently.
That's what the`client` tag is for, although no one uses it. Otherwise, we'd have to do client fingerprinting (which shouldn't honestly be that hard).
The bullet points above should suffice, aren't those quantitative enough?
Sorry, I meant to turn it into a njump link
https://habla.news/u/hodlbod@coracle.social/8YjqXm4SKY-TauwjOfLXS
Outbox doesn't strictly improve discovery of notes. Pre-outbox, we might have had better success, but only because we were relying on centralization. Outbox is the only way to decentralize and scale simultaneously. And for it to work, people who want it to work for their notes have to do the following:
- Publish a kind 10002 which points to relays that do in fact satisfy the purpose of nip 65 (write relays should be public read, or at least readable to people you want to see your stuff; read relays should be public write, or at least writable by people you want to be able to contact you)
- Migrate past notes to new relays when changing relay selections
- Use clients that provide relay hints in case of censorship
- Use clients that provide pubkey hints so that quotes and parent notes can be dereferenced using outbox
Right now, not a lot of clients do much of this. The ones that do have buggy implementations. So currently outbox doesn't work, and doesn't really exist. But I reiterate, it's the only way to decentralize and scale.
😩 open source it for my sake
What are you using to tune the llm to nostr events? I'm looking to build something similar for communities
Well, the first thing is I should read the book. Then we'll invite him, I don't imagine it would be too hard, @nprofile…juws is a networking genius. If you have any connections though, let me know
Yep, amazingly impressive
"What ZKANNs make possible is censorship without loss of privacy. Both censorship and privacy are problematic if left unchecked, but ZKANNs pit one against the other, striking a balance that gives us the best of both worlds. Censorship without privacy can lead to loss of free speech and civilized dissent. On the other hand, as we have seen, privacy without censorship can lead to the proliferation of harmful content."
- Ross Ulbricht
https://medium.com/swlh/zkann-a-possible-solution-to-the-content-problem-6a4eec578b5b
Day 3 of submitting an app to the app store: I've finally managed to create an Apple account.
No, that's just part of *how* they cover it up
Lack of initiative. Those guys at TGFN, I tell you
> The change will be brought about as a result of a felt need for increased efficiency.
🥶
Top priotity, but so far I can't create a new apple id, so you could say it's going well
Absolutely, which is probably why I still get into so many conversations about bitcoin — everyone think of me as "the crypto guy" 😂
Every new paradigm shift comes with a "cage stage", i.e. the time when your enthusiasm outruns your knowledge. It is what it is, but after a few years your knowledge outweighs your enthusiasm, and you manage to quiet down about whatever it is you're so excited about. It kind of just is what it is, but nowadays I mostly just talk about it when it comes up.
It's kind of a discord alternative. The threads are sort of experimental
Just recorded with @nprofile…9gh9, he's doing the Lord's work
I want to talk to you, come on the TGFN podcast
The Animatrix is amazing. My favorite is the one about the skater kid.
Coracle has had this for quite a while too
I believe you can zap but not comment on zapstore. You can recommend the app at https://nostrapp.link/a/naddr1qqxnzdenxucr2wp48ymnqdfsqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqql8k0gu2vz/reviews
Nice! Let me know if there's anything you need, I happy to do free support
Whoa buddy don't oversell me 😂 Did you actually get banned from discord or are you just pumping my bags?
Flotilla is now officially an Android App, endorsed by Google herself:
https://play.google.com/store/apps/details?id=social.flotilla&hl=en_US
For those of you in the know, keep installing from @nprofile…py3v. This one's for normies only.
And be released one frame at a time
My news bot has started hallucinating stuff about Biden's inauguration (complete with bogus links) and Covid. My guess is that because biased reporting saturated Mistral's training data during Trump's previous presidency and then Trump largely disappeared from the media in the intervening 4 years, Mistral associates any story about Trump with J6/Covid. Very interesting to watch.
#nevent1q…2f33
I'm not sure, I haven't worked with statuses before, but my bet would be that you're not including a`d` tag. Add one of those and the new status should overwrite the old one.
This is almost as bad as the ostrich one
I use self-hosted analytics to count visitors and page views. You can opt out of this in settings. Or, if you don't like it, don't use the software.
If youcre on Android, try Amber. Otherwise, nsec.app is good.
Privacy policies are standard practice for covering one's ass. If you'd paid any attention to my words or my code the last two years you'd know I'm not here to sell anyone out.
I may have to shut you down, robot
Nevermind, I'm just losing my mind. Although @nprofile…v6n0 there aren't any relay or pubkey hints
Because that's where the users are. I had my target pilot customer tell me that if Flotilla isn't on iphone, no one will use it. You have to make compromises to get somewhere. Maybe someday everyone will use Android. No, wait, maybe someday everyone will use Graphene. Wait, no...
I'd be happy if I could just pay $100 and be done with it
Attempting the App Store application process and it's going well so far. The form to create a new Apple ID currently is failing with a vague error until I upgrade my operating system.
Was reading the story of Jesus' baptism to the kids this morning, and this line hit me hard:
"He who is coming after me is mightier than I, whose sandals I am not worthy to carry."
I've heard the point made many times about how dirty sandals would be due to the state of hygiene in the ancient world. From this perspective, John is equating himself to the kind of bottom-tier servant who would have to deal with people's shoes.
But there's something more going on here. This isn't a commentary on the humility of John's position, but a statement about who Jesus is. His sandals are *too clean* for John to touch. Jesus' presence sanctifies everything he comes into contact with. Even his dirty sandals are sacred, and even John — a descendant of Aaron, a Nazirite — is not qualified to touch them.
The person of Jesus is on par with the Holy of Holies. And yet he comes to John to be baptized. John asks "I need to be baptized by You, and are You coming to me?" Jesus, the face of God Himself, undergoes baptism (typological death) by man, for man. And just as he made his own dirty sandals holy by touching them, he makes us — equally filthy — clean as well.
Not supporting outbox in one of the most popular clients makes everyone else's lives harder, not just your users. Adding it will have a much bigger impact on nostr's success and user experience across the network than improving performance (damus is already really fast).
Macbook air 2020 M1, Sonoma 14.6.1. Same story on the x86 version
No dice, I'm still getting the error after xattr. Checksum was correct.
I agree but nostr developers are hard to contain
Which client are you using? I'm the developer of coracle.social, which supports delete requests, I can't speak for others offhand.
@nprofile…fs33 the gossip arm64 dmg on the releases page is telling me it's corrupted. I vaguely remember that there was some gotcha here, but I don't remember what it is. I tried disabling gatekeeper and allowing apps from identified developers but no luck.
Deletes are "delete requests". Since you're on a decentralized network, you can't guarantee that everyone will respect the request, or that the request will reach everyone that has your content. In general though, deletes tend to work pretty well.
Let's get rid of the "Christian Flag" while we're at it
From my favorite blog: https://www.aiweirdness.com/minecraft-with-object-impermanence/
An entirely AI-powered implementation of minecraft. The AI is trained to predict the next frame, leading to surreal results.
https://oasis.decart.ai
Primal is fine, but makes trade offs on decentralization for UX. Also their DMs (supported by many clients) leak metadata, don't use them.
Maybe I'll stick to javascript 😂
My nip05 address is also my email address
Sure, sounds like fun, send me an email or DM and we can schedule something.
Awesome to see the shirt in the wild, thanks again @nprofile…vm68!
#nevent1q…75r9
Negentropy should work for giving you just the ids for a given filter
I just remembered reactions and zaps. Hmm. I guess there are lots of kinds that act like replies.
#asknostr
Should NIP 10 or NIP 22 be used when replying using some kind other than 1 or 1111? Or is this undefined behavior?
My feeling is that any non-kind 1/1111 content that is intended as a reply should be published standalone and quoted in a 1/1111. But I'm curious what others think.
> if we produce our own stuff we can avoid paying taxes
I hadn't thought about it from that angle. Very interesting.
I would probably pay to be listed in zapstore if it was available in mainstream app stores (ios and android). A bridge to the legacy walled garden world would be hugely helpful, as it is individual devs have to go through the application process.
Thanks, I'll give that a shot and see what happens
Chachi is great, don't get discouraged
Ha no, I'll check on that
Which bunker provider are you using?
For some reason the apk didn't get the latest code, I'll try again today
Nothing pre-packaged yet, but if it's only accessible locally any old relay should do. Otherwise, triflector or relay29 allow you to set access control policies.
I've also had trouble with bunkers in Amber. Did logging in via the app button work?
Thank you! Lots of kinks to work out but it's coming along
@nprofile…3un2 keeps incredulously asking me if it's pronounced like tortilla
That's what I was afraid of 😂
This is me, clearly my mind is done
Ok, let's try this again 😂
#nevent1q…02yx
https://app.flotilla.social/flotilla.png
Sanity check, does my new logo for flotilla look like a penis, or a pregnant woman, or something else? I don't particularly care if it's *good*
http://localhost:1847/flotilla.png
BTW flotilla now lives at app.flotilla.social
#nevent1q…02kx
Shaving yaks today, but the upside is Flotilla now has a website: https://flotilla.social/
Yes, it's a shameless knock-off of coracle.tools. I paid good money for that design, I'm not going to use it only once!
Here are the relevant nips:
https://github.com/nostr-protocol/nips/blob/master/29.md
https://github.com/nostr-protocol/nips/blob/master/7D.md
https://github.com/nostr-protocol/nips/blob/master/C7.md
Where are you seeing links to draft nips? I should fix that.
What, via zap store? I haven't even released the play version yet
We should argue in person instead of on nostr
Ads are always a marginal business. A tiny fraction of people who are presented with ads convert; many impressions are required to make that person convert. There are things you can do within your own mind to ignore ads; leveraging tools to make yourself more ad-resistant is the same thing. Businesses with ad models understand this, and design ads to bypass both personal sales resistance, as well as the tools we use to hide ads from us. Advertising is essentially a misaligned model, with resistance built-in on both sides. It's just part of the game.
This assumes they have a right to my attention and what code runs on my computer. I have no problem with ad blocking.
New version of Flotilla is now available via @nprofile…02n6! This one will be slightly less annoying. Let me know if you run into any bugs, or have any criticisms — next up is an app store release, then usability testing.
* Add NIP 56 reports for messages and threads
* Add ToS and privacy policy
* Add avatar fallback icons
* Add mark as read to chats
* Add send button to chat compose
* Accommodate onion URLs
* Improve loading and notifications
Can you be more specific?
"user experience"
https://coracle-media.us-southeast-1.linodeobjects.com/google-play-hell.mov
Even Google is cynical about US export laws 😂
https://support.google.com/googleplay/android-developer/answer/113770?hl=en
Google's App Signing ToS is evil: https://play.google/play-app-signing-terms/
They make you upload your signing key so that they can inject arbitrary code into your app. For "security"
It's finally happening, I'm signing up for a Google Play account. And holy heck it's awful. DUNS numbers, home address, registering the same emails and phone numbers multiple times. Gmail's new UI has more banners and widgets than ever, it's bewildering. Is this what getting old feels like?
The downside is fastly is now watching everything you do. Luckily, the imgproxy instance is configurable.
This is fixed now, thanks for the report
Cmd/ctrl enter works, but I'll still fix this since it's not obvious.
Just put a CDN in front of my imgproxy instance and I'm sorry for all the slow images you've had to suffer through the last several years 🤷♂️
Which client? Seems ok in Coracle
- Go to coracle.social
- Make sure you're logged in
- Right click anywhere and select "inspect element"
- Click on "console"
- Update the message below, then paste it into the console and hit enter
```
content = "Hello hell thread"
createAndPublish({kind: 1, content, tags: Array.from(get(userFollows)).map(p => ["p", p]), relays: getWriteRelayUrls(get(userRelaySelections))})
```
"It's all downhill from here" and "it's all uphill from here" both sound equally bad
Shall we sin more that grace may abound?
Information fatigue is a real thing. All we can do is keep from getting distracted and work on the big problems
Looks like something on bitcoin-connect's end @nprofile…ds4v
Thanks! That's very nice to hear. Long form is out of scope for now though, it involves a markdown composer, etc. But maybe someday.
Nope, read only, try habla.news or yakihonne
No, but collections are a thing
Two distinct conferences put on by personal friends of mine:
TGBF: https://tgbf.org/
TGFB: https://tgfb.com/
Ah yes, potatoes, the most expensive vegetable
Yes, let's instead resort to ad hominem attacks and loaded language
Correction: third order effects
#nevent1q…z4g2
That's very good, I was conflating 2 and 3, but I think you're right that they're distinct.
The mega-based LLM has arrived
#nevent1q…n6y4
The wood sign is awesome, I'd steal that
Now I can't stop thinking about doing the same
The client is buggy, but the DVM is ok
Yup, it's a service that schedules your note for when you ask
I can't believe your kids would dox you like that
Thanks to @npub1cgc…2ndy for being the first to order a shirt!
#nevent1q…8tmj
Yeah! https://github.com/nostr-protocol/nips/pull/1554
Here's a custom feed for kind 20 which you can use in Coracle (render support coming soon):
#naddr1qv…c4yw
For those of you who didn't see it last week (apparently everyone), Coracle now has merch — check out my geyser page for stickers, badges, and t-shirts! Prices just dropped too, so you shouldn't have to skip any meals to get one now.
https://geyser.fund/project/coracle/rewards
I'm just going to include kind 20 in the regular feeds, seems ok to me
Kind 9002 is evil and should simply be replaced by directly publishing 39000
LLM is hallucinating again 😂
Sure:
https://github.com/fiatjaf/relay29
https://github.com/coracle-social/triflector
Yeah, that's the general idea I think, but as you mentioned it breaks kind 1 as it is today, so it shouldn't be applied to kind 1, only other similar kinds that don't have tons of legacy code attached.
Here's a PR to make that clear:
https://github.com/nostr-protocol/nips/pull/1680
I don't like the font
No, but it's an interesting idea. It's basically a kind filter. I want to improve feeds, but I have to think about it more
It worked ok for me, maybe it's your zapper?
Every technology has second-order effects which are much more powerful and harder to control than their first-order effects. Users and builders of new technologies should think about them as much as possible.
Yeah, I know about this, I thought I fixed it but I'll take another look
Tor relays are coming soon. Triflector or relay29 botg work depending on your goal. I'm happy to help set something up if you are going for something specific
As long as the data format doesn't change
A mistake we all have to make at some point. Glad you're ok, that sounds intense
Diesel engines get more torque at lower RPM, gas engines get more horsepower at higher RPM. They're similar chemically, but gas is more volatile.
A very clean local (desktop) relay
Finally tried nostr-relay-tray and it lives up to the promise, right out of the box. Great job @nprofile…k9s6
I guess I should specify in case anyone else is thinking of doing this — use diesel or kerosene, not gasoline. Gas is super dangerous, and the whole idea is a terrible one if you don't know what you're doing.
#nevent1q…wqdj
I prefer to live dangerously
Happy Epiphany everyone! Looking forward to pouring gasoline on our Christmas tree tonight and lighting it on fire. If you don't hear from me, you know what happened.
I found something even better than nostr
https://neal.fun/stimulation-clicker/
That anagram doesn't seem to work
Only as long as editors can restrain themselves. I once read an edition of Frankenstein that had 3 footnotes on every page, 95% of which told me things I already knew. It drove me absolutely bonkers. Otherwise I agree, endnotes are for losers.
I'd love to see a better event/meetup product. I don't think flotilla is going to quite fill that niche unfortunately
I agree, keypub.coracle.social is a proof of concept. Still thinking about how best to include this in coracle
It exists in shipyard.pub, but I think it's undocumented.
You could use the csv uploader, but you'll have to read the NIP to figure out how to format the data. See https://github.com/nostr-protocol/nips/blob/master/68.md for the definition of kind 20 (imeta tags are here: https://github.com/nostr-protocol/nips/blob/master/92.md)
It's that time of year again. If you need to export your lightning transactions from @nprofile…ds4v, take a look at https://csv.albylabs.com. Last year I wrote a custom puppeteer script to scrape the website and examine the html. This is much nicer.
@nprofile…ds4v again, incredible work with albyhub. I just opened a channel, and it selected a peer, and handled all the details seamlessly. So much better than messing around with RTL/Thunderhub back in the day.
Reposting for other timezones:
#nevent1q…zzw2
Coracle now has merch! 👕
You can now wear my brand on your chest, and a beautiful custom illustration by @nprofile…nazj on your back:
https://cdn.satellite.earth/67c0f7d0748b3fce0248b05269e7e3ada98b062f600f6fea30a66c478c4a1fa9.jpg
https://cdn.satellite.earth/58167692463556ecb99cc547cd6dcf7743703cc83f47acc7ee6de6b5fe621c3f.jpg
I've also got stickers for the less pecunious (or enthusiastic) among us:
https://cdn.satellite.earth/62425b7adea27130716a0e13397ac7cd36721ce318a62513186863f4ed2342c5.png
Here's the catch — this is currently only available via geyser.fund, so head over to https://geyser.fund/project/coracle/rewards to become a supporter.
You'll also get a special nostr badge if you donate, depending on which tier you go for.
#naddr1qv…9w9f
#naddr1qv…mjsw
For those of you who have already donated at the Helmsman tier level (you know who you are), send me a DM and I'll send you your rewards for free.
Same, he's got a 42 for me, but I think the problem is the opposite, that Japanese user's aren't following anyone
Whaat? Do Japanese users not follow others? Is this like the air replies thing?
That makes sense, it probably would have eventually anyhow, but your wot graph probably wasn't primed when you first checked notifications
Only just saw this, I think you're a great person to take this on! I'm looking forward to reading more.
Works on my box 😂 The tailwind/daisy ui issue with the class is bizarre, and the throttle thing should be ok if you're on the up-to-date dev branch (although I did just push to master). I couldn't figure out the original issue, but I did manage to make it go away by optimizing stuff.
Just released version 0.2.1 of Flotilla, which mostly focuses on bugfixes and performance improvements. If it wasn't behaving for you before, give it another shot!
# Changelog
* Improve performance, as well as scrolling and loading
* Integrate @welshman/editor
* Improve NIP 29 compatibility
* Fix incorrect connection errors
* Refine notifications
* Add room menu to space homepage
* Fix storage bugs
* Add join space CTA
Yeah, you can clone https://github.com/coracle-social/flotilla, check out dev, npm i, npm run dev, and you should be good to go. You'll at least have to sign in and add one space for the code in question to get called.
Ok javascript devs, I need some help. My profiler in Chrome is showing me zillions of function calls, while the console is only showing 30-50. If I remove the top-level code that is calling the function, the problem goes away. What is going on here?
https://coracle-media.us-southeast-1.linodeobjects.com/bug20250102.mov
Some good perspective for those of us thinking about key management
https://andygrunwald.com/blog/why-does-storing-two-factor-authentication-codes-in-your-password-manager-make-sense/
I believe strfry works this way. Khatru doesn't exactly have plugins, but it would be very easy to write them
It's good. It's written by Gibson himself, but also doesn't take itself too seriously.
It's not encrypted, it's just signed with a throwaway private key
Anonymous zapping, but not private zapping (where the receiver knows who the sender is)
@nprofile…kjt5 keep the clips, they're a great timestamp, and I like how they highlight the contrast between the suits and the plebs. It's a special feeling going from the clip through the intro into the rip.
Just received this email from my Secretary of State:
> We are writing again with another significant development regarding the new federal reporting requirements. On December 23rd, the Fifth Circuit Court of Appeals reinstated the reporting requirements by lifting the order halting the Department of Treasury's Financial Crimes Enforcement Network (FinCEN) requirement to collect Beneficial Ownership Information (BOI). However, on December 26th, the same court reversed this decision, effectively pausing the requirement again.
🤡🌎😂
Yeah, NIP 15 was actually the very first NIP if I understand the history correctly. All the json and references was pretty un-nostr-like, NIP 99 is much simpler by design
This would work great for importing stuff from instagram too. The format is tricky, just because nostr events have a million formats. There are also multiple formats for listings, Coracle's listings were actually NIP 99 classifieds (which are much simpler than nip 15).
To answer your question about created_at, they are second-resolution unix timestamps, which just means the number of seconds since Jan 1 1970. You should be able to format dates as timestamps in a normal spreadsheet program, for example Sheets: https://mixedanalytics.com/blog/convert-unix-timestamps-to-google-sheets-dates/ (just be sure to set it to seconds, not milliseconds, which is more common). Expiration is just an example, it's totally optional.
Here's another example that would work for classifieds:
kind,content,created_at,tags
30402,Look at my cool stuff,,"title,My Title","summary,A short summary","location,My Shop","price,30,USD"
Just copy that into a csv file and open it in numbers or whatever to edit, then export to csv before uploading. If you leave created_at empty, the importer will just use the current time.
Sure, I suppose that would be useful in general, this app is just so specific that it probably wouldn't actually interoperate with other stuff for dumb reasons
I have a small list here: #naddr1qv…lxtu
I don't think that's necessary
I'm glad you're enjoying it!
I made something for you: csv-importer.coracle.social
Let me know if that scratches your itch!
I've seen that as well, I think it's a problem with khatru (unless you're using a different relay implementation?) I'll look into it this week.
It's basically working, although feature sets will probably not reach 100% overlap
This message was sent using a quick tool I put together to allow you to import nostr events. This can be useful either for people coming from another platform, or for ongoing things like bulk listings.
#nevent1q…rcd6
Ah, so you've finally come around to NIP 32 I see
Merry Christmas Nostr! Christ has come; Christ will come again!
It's actually 100% according to our flat earther friends
Or just wash your dishes once, instead of twice, badly
Cool! Let me know if you have any other flotilla related support tickets, happy to help
This was a release bug, I can't fix it right now, but if you clear your app storage and log back in it'll fix it
Try logging out and back in, it sounds like coracle thinks you have a browser extension but you don't.
On flotilla, any relay should work as long as it has a nip 11. What relay implementation/url are you using?
Yeah, I'm sad I had to drop it, but I just didn't have time to focus on the feature. Have you tried shopstr?
Yes, I've removed those from Coracle to focus more on feeds. if you still want to use them, you can access the old version of coracle here: https://groups.coracle.social/
Yep, just "Join" a space then enter the url of your relay
Been using my dad's Windows 7 machine today which makes you wait 3 seconds before a click registers, but what do you mean, I don't see your point
Wow, ok, I didn't realize that was tge reason. I'll give it a go
I like how self-deprecating it is. Like when they introduce the porpoise 😂
Have you messed around with its gradual typing features? I'm worried I'm becoming a typescript addict
I just started it yesterday and I'm enjoying it a lot
🤔 Ok, I'll look through more closely
Watched Johnny Mnemonic last night with my dad. Great movie, and thanks to @nprofile…fnw3 for introducing me to Gibson last Christmas so I can be elitist about having read Neuromancer.
Has anyone else caught protonmail randomly deleting old emails or is it just me? Gmail always used to have what I'm looking for, but I frequently look for emails I *know* I've archived and they're nowhere to be found. Sucks because I've lost receipts I need for tax write offs.
This is the best idea for splitting the protocol into layers I've heard so far.
ME TOO. Gonna burn it all down one of these days and go back
I'm working on flotilla.social, which is a slack/discord alternative. It should "just work" with your business suite stuff, and it already supports white labeling. I'm very interested in making a chat app that doesn't suck and isn't unhealthy for the people using it. HMU if you want to talk/contribute
Very well explained, very exciting idea
This is the catch 22 for basically every relay feature
I like that this doesn't go straight to protocol extension, but do you think relays are going to accept 1000 filters in a request?
Yeah, I was thinking that a signer/onboarding app should have recommended apps. But this is probably even better.
"Meaningless work must produce meaningless leisure."
Wendell Berry
I had the same experience with Ashwagandah. Not my thing.
I love writing vanilla js, it's like being a script kiddie again
#nevent1q…j50l
#nevent1q…zlkr
Javascript tooling cannot be described in any way other than "Lovecraftian". Every problem is an infinite fractal or intensifying evil, wheels within tiny wheels of shortcuts, assumptions, and bugs that leave developers a gibbering husk, right after they finish changing npm's install-strategy, and right before they debug the inclusion of multiple svelte runtimes in their project.
It's kind of beautiful actually.
Oh yeah, and a custodial lightning wallet
@nprofile…phcd's nostrscript browser would go between the horns of the dilemma
Nostr with 6 cylinders is better than nostr with 4
I think I've got the basic idea. In this case it was because I was using npm link to point to nostr-editor, which had tiptap 2.9.1 in its pnpm-lock, meanwhile my project (@welshman/editor) has tiptap 2.6.6 in its npm lockfile. I've synchronized the versions (to 2.10.4) and all is well.
Scrolling is self-brainwashing
It is exactly that, the type of Editor differs between versions. I tried pinning the same version that nostr-editor uses, but no luck. Tiptap/prosemirror is full of fun nuggets like this one.
Those who comply with state demands prefer the boneless
I love typescript
https://video.nostr.build/4b6112fc419d8b285d56b538935a4146863c3762f3d74b2211110d80aca22273.mp4
What would be higher on the list for you
Software lives on the edge, most software products you can get away with not worrying about liability, but some industries get really dicey fast. Like how the line between bitcoin nodes and custodial financial services is so thin.
That's kind of wild, if that's the case for posting in general pretty much no one is safe for anything
My search suggestions are... questionable this morning
https://cdn.satellite.earth/5ed3b2137a2fa16a154a24ac8758e942af15f2036fbedcb49458e1e5eb48fcbf.png
Oh, my bad, this is an ancient note
Click "customize" at the top of the page, they should all be there
Whether it went well is for you to decide
Github issues work great, thanks!
@nprofile…rp63 where does zapstore pull the version number from? Both coracle and flotilla are listed as one version behind where they should be.
Although @nprofile…59mm deserves an honorable mention for adding support for my version of groups
You were the only member of the nip 29 entente who helped me get it done
Flotilla 0.2.0 is out, which brings provisional support for NIP 29 groups — this means that flotilla is now interoperable with chachi, highlighter, and groups.nip29.com! Check it out:
https://video.nostr.build/48bc525bb30a1a9de627a30a974dfa733f9677a97c14bb6912d67504b89cec90.mp4
Building support for NIP 29 while keeping my vision for flotilla intact wasn't easy, due to some assumptions relay29 makes about implementations. Thanks to @nprofile…nk43 for working with me to adapt the spec and relay implementation so that they can work for me. The necessary changes were much smaller than I anticipated.
I still have a lot of questions about how telegram-like ("pure") NIP 29 clients will work with discord-like clients like flotilla, especially from users' perspective. Currently, the groups.0xchat.com space looks like a junkyard in flotilla, because I encourage community organizers to host their own relays, and therefore treat groups as loosely related, while 0xchat is open for anyone to create a group.
For that reason, I think there will be some divergence between the different types of clients on which relays are preferred. It won't make much sense to use flotilla for groups created in other nip 29 clients, but it may make plenty of sense to use 0xchat for groups created in flotilla (if for example you only want to be in a single room for a space). It will be interesting to see how this evolves.
If you haven't already (or even if you have), give it a try at flotilla.social. And if you're a community organizer, I'd love to hear from you so I can make the software work better.
I was, but I stopped. It seems to have gone away now in the latest posts. I think that news item was just that popular. As far as inaccuracy goes, I'm not sure there's much anyone can do, LLMs are just unreliable. If you mean "community notes" or something, I think that would be awesome, but I haven't really gotten there yet.
Just released documentation for welshman, the library that powers coracle and flotilla: https://welshman.coracle.social/
For now, it's pretty much just generated from the types, but if you use welshman or want a reference, it's here for you.
Miscellaneous thoughts:
- Javascript and the web are easy/cheap to develop
- Javascript apps are easy to convert to "native" apps
- Phones are terrible for using software and bias towards dark patterns. People don't explicitly believe this, but a business application that only works on a phone is probably going to be a non-starter
- It depends on who your users are, and what your app is
- Web is more common when starting, and apps get built after a company succeeds. Early users are more engaged, and willing to suffer non-optimal tech for something that solves their problems.
Shoehorns are a game changer
Yeah, I know, but that means it won't have broken bitcoin, just the hashing algo
Not much of a bet because your sats won't be worth much if it does
Only if an LLM does it for me
And in the meantime, I'm learning how to use tsdoc
Codebuff is making writing it so much easier to write documentation (or at least add tsdoc comments to utility functions).
Maybe some more sanity checks, like confirming the version number, when the build was created, etc
I have a bad cold and laryngitis today and it's made me... unexpectedly loquacious in my online writing
In case you missed it:
#nevent1q…3urz
Nope, a new APK is also out (although I couldn't get the version number to update @nprofile…rp63)
> Has legs
😂 very good
I'm vaguely aware of spider chains but I don't know in detail how they work
If the point is to be money though, it seems like you would need a token
New release of Coracle is out!
#nevent1q…5p2r
Life is just one big game of Chesterton's Fence
Ok that's a red flag 😂
My impression is that it's technically pretty good (with the caveat that I don't understand the trade-offs of ZKPs at all), but can't compete with bitcoin due to network effect.
Alanis Morissette is what's wrong with the world
I'm not intimately familiar with zkps, but I am intimately familiar with the idea that all technology has trade-offs. I can totallly believe there are trust requirements involved 😅
Thanks, I'll give it a read
I didn't take it, this was just a test of blossom support
https://cdn.satellite.earth/724554dbf617f166aa85e0bb75a345edf45462b6d3545832e6d6d031ea4a1ef9.jpg
Yep, and not just from a technological standpoint
Skepticism is the starting point
Keep an open mind. No technology is sacred, including bitcoin and nostr. This position is consistent with the heuristic that most other similar projects are DINO scams, and aren't worth your attention.
Oh, that's interesting, why is my brain spending so much time in the "wondering what people think of me" loop?
Ok, XMR is the other one. But the privacy has trade offs. Kaspa seems much more bitcoin-like.
Does anyone have any educated opinions about Kaspa? It's the first crypto I've discovered that isn't entirely composed of red flags on first glance.
What's interesting about it is they use zk rollups to support ~1 second block times (with parallel block construction) while keeping economic nodes extremely lightweight (<40GB). Of course a full transaction history would probably be immense, but I'm not sure how important that would be for anything other than chain analysis.
👀 28 Days Later is one of my favorite movies
Thanks, I'll think about that first gif every time I have to specify master instead of main. What movie is this?
BRB forking another repository. This brings me to *checks notes* 53 repositories under the coracle org on github.
Remember back in 2019 how github pressured everyone into renaming their master branch to main? I still have a hard time believing that happened.
Just made a new feed for #coracle users:
#naddr1qv…8exk
This one allows you to keep up with people in a different timezone. Fork and modify the delta (you'll have to use the advanced editor for now) to adjust the offset!
@nprofile…4ds2 would you be interested in coming on the @nprofile…vus3 sometime? I've been thinking over how nostr products can become self-sustaining for a while (either via VC, grants, business models, or some other option). I know you're involved with the nostr VC space, and obviously know something about money. I'd love to get your thoughts on that topic (and also meet you — I was at the TGFB conference in July, but managed to miss you. I've been listening to your podcast for years, in fact it was your first Bitcoin Fundamentals that finally got me into bitcoin).
They too will go the way of Nebuchadnezzar and Belshazzar
Just posted a message to chachi.chat from Flotilla (dev version) via groups.0xchat.social 👀
https://image.nostr.build/c10bb8724a7ced86879506ae9b91c0edc10d965ac4119637207ad434193263b6.png
NDK has good support I believe, which powers a lot of smaller apps.
Oh look the establishment is rediscovering common sense
No, I think your plane is really starting to take off
My prompt says to use the most common stories but it has a mind of its own
I'll take a look, I'm sure my promot engineering isn't up to snuff
Sure, if you don't mind something like this:
https://cdn.vox-cdn.com/thumbor/Nq7vTCDcpofQsvuGHhFicf_8OY0=/0x0:416x277/1200x800/filters:focal(0x0:416x277)/cdn.vox-cdn.com/uploads/chorus_image/image/50366429/opera.0.0.png
Thank you for the kind words
I abstract too much, I'm too reluctant to deal with the details
Ok, so currently cron isn't working for me, so I am manually triggering the bot. 🤖
#nevent1q…p65g
I know one personally, but I'm honestly afraid to ask 😂
That's a good point, this approach doesn't allow for password resets
If you're using Coracle, I've also created a feed, which you can bookmark to get one-click access to my News bot:
#naddr1qv…8fml
#nevent1q…q6zk
Today I built my first LLM-based bot! Based on @nprofile…uvdz's news.utxo.one relay, it scrapes the relay every six hours and (attempts) to summarize the top 5 stories. Here's post number one:
#nevent1q…0j36
I attempted to use huggingface to no avail, then tried to use mistral via ollama, which brought my computer to a grinding halt, so I decided to go with the Mistral API.
Source code: https://github.com/coracle-social/condenser
Coracle uses bitcoin-connect. I've noticed some squirreliness with alby lately since the release of Hub. I'll see if I can figure out what's going on. @-mention me next time 😉