People seem to be excited about my new project, Flotilla. It's still very much a WIP (probably a month out from MVP), but since it's been discovered I figured I'd go ahead and introduce it.
https://image.nostr.build/b9842d89fdc786ad3e86d692c4b52adce47e1bdd9daaf7d39cbf4806ecb75bc2.png
My goal for Coracle has for a long time been to support local in-person communities by replicating Facebook's events, groups, and marketplace. I've come to realize a few things about this project:
- Facebook is not the gold standard. In fact, people hate Facebook.
- There are many kinds of groups, for many different use cases.
- Very small chat groups work for most use cases.
- For almost all other groups, good moderation is key.
- Decentralization for groups works differently from decentralization for microblogging. Microblogging use cases benefit from simultaneous use of multiple relays. Community group use cases (in contrast to reddit-style groups) benefit from a single relay per group.
This is just the barest summary of what I've learned. But it's all in line with my long-held intuition that relays are, and should be, special. To that end, I'm creating a new client built around the dumbest form of communities that can be created: relays as communities.
Lots of code and specs need to be written to make this work, and as with Coracle, it'll be possible to host your own flotilla instance that only talks to a single relay, as well as use flotilla on desktop and mobile as a PWA and APK.
See the dev preview at https://flotilla.coracle.social. If you're interested in contributing, I've created several issues on the repository that should be good for first-time contributors: https://github.com/coracle-social/flotilla/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
If it worked 😂 I still have a hard time finding all NIP 17 messages. This one is more purist though, and follows 10050's exclusively without trying to backfill, so maybe it'll be better.
Sounds like a job for nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgkwaehxw309ajkgetw9ehx7um5wghxcctwvshsz8rhwden5te0dphkgmrzdajzucm0wfskxmr99e6x7mmvwvhsz9nhwden5te0dehhxarjv4kxjar9wvhx7un89uq3wamnwvaz7tmxwfjkuuewdehhxarjxyhxxmmd9uqzpqv28x6lzeprt7rz2jcjefvxalxvr727nz69evwfr3cachv5smw67qfu8l
What step, what browser/OS?
nostr:nevent1qvzqqqqqqypzp978pfzrv6n9xhq5tvenl9e74pklmskh4xw6vxxyp3j8qkke3cezqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgmwaehxw309aex2mrp0yh8wetnw3jhymnzw33jucm0d5hsz8rhwden5te0dphkgmrzdajzucm0wfskxmr99e6x7mmvwvhsz2mhwden5te0vf5hguewd3hxycewwd4j7mn0wd68ycmvd9jkuap0v9cxjtmkxyhhyetvv9usz9nhwden5te0v96hg6pwdehhxarjxyhxxmmd9uqzqzq5evmfv4xqtfzq0xguy4863gtucuw42mgj4derrc5qzy7th0j7ewmt2k
Why not work with nostr:nprofile1qyfhwumn8ghj7ur4wfcxcetsv9njuetn9uqsuamnwvaz7tmwdaejumr0dshsz9nhwden5te0v4jx2m3wdehhxarj9ekxzmny9uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uq3samnwvaz7tmwdaehgu3wvekhgtnhd9azucnf0ghsqgqh88vn0hyvp3ehp238tpvn3sgeufwyrakygxjaxnrd8pgruvfkaulgaw42 on MLS via nip 104?
nostr:nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qghwaehxw309an8yetwwvhxummnw3erztnrdakj7qgcwaehxw309anxjmr5v4ezumn0wd68ytnhd9hx2tcppemhxue69uhkummn9ekx7mp0qyt8wumn8ghj7emjv4jkuum0w4kzuumsv93k2tcqypl62m6ad932k83u6sjwwkxrqq4cve0hkrvdem5la83g34m4rtqegk5xps3 I'm woth Niel on this one, will shortly be releasing a client that does relay based groups without nip 29.
Awesome, excited to hear it. By the way, I am no longer working on reconciling nip 29 with relay-based groups, instead I'm creating a new NIP that will hopefully serve the purpose: https://github.com/coracle-social/nips/blob/relay-chat/xx.md. The NIP is very much a WIP, lots of the hard problems with detecting relay membership still need to be solved.
If you're interested in pooling resources, my client is here: https://github.com/coracle-social/flotilla
🫡 https://github.com/coracle-social/flotilla
nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzfmhxue69uhkummnw3eryvfwvdhk6tcppemhxue69uhkummn9ekx7mp0qydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcpzdmhxue69uhhwmm59e6hg7r09ehkuef0qqs8eseg5zxak2hal8umuaa7laxgxjyll9uhyxp86c522shn9gj8crs5ggk3z I'm planning to release a relay-specific version of flotilla, maybe it could serve as a front-end for relay.tools relays.
People criticizing nostr apps for their quality are making multiple category errors:
- Individuals (or very small teams) can't produce the same level of quality as large teams, but teams can't exercise as much creativity as individuals
- Optimal UX comes from a need for growth, stemming from a need for profit. Grantees and hobbyists do not have this motive. But for-profit businesses won't be principled about putting the protocol first, while grantees and hobbyists may be.
- Good UX partly comes from experience, and existing best practices. Very little of this is established yet for nostr, both from a design and engineering perspective. We're making it up as we go along.
If you want something new, you have to take the bad with the good. When I started this, my expectation was that it would be a ten year project with a 0% chance of success. Two years in, I'd say we're doing extremely well.
I don't care about growth, and won't for a while. I'm not in it for user numbers or zaps, I want to use software to give my kids a better life. Drop the high time preference, and dig in, because this is going to be a long ride.
With all that said, I do feel a new wave coming in the next year or so, as best practices crystallize, and as existing projects reach a point of maturity where their developers recognize their own limits and need for help. I look forward to seeing teams coalesce to push forward what the creatives started.
This might take the form of more for-profit businesses, but I hope that devs (including myself) will be able to swallow their ego and pitch in on projects that don't belong to them without having to get "hired". The difficulty of this on nostr is of course that the scope of the protocol leaves so many tantalizing possibilities to work on.
For myself, I remain focused on my original mission of serving real-life communities. However, the longer I work on the problem, the larger it becomes. It turns out that there has in fact been decades of work in the space, and there continue to exist many unsolved problems, even without introducing decentralization. It would be hubristic to think that my first attempt at the problem would be either correct or successful. Iteration, exploration, and education are all necessary.
It's very likely that it's impossible for a single developer to cover even a single use case of nostr satisfactorily. We'll all eventually need help. This is just the nature of the project we've set for ourselves.
Teams require communication, which introduces the need for process, which results in rigidity. Only exceptional engineering teams can balance creativity and stability.
The incentives between altrustic FOSS freedom tech and capitalistic for-profit business are not the same, which leads to different outcomes. That's not to say that nostr won't ever have good UX, but the path to it is much less direct.
New Coracle release is out, codename "oops, sorry about that". This release mostly contains bugfixes, particularly missing/wrong e-tags on nested replies. Thanks to nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzfmhxue69uhkummnw3e82efwvdhk6tcprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsz8rhwden5te0wdshgetvd35hgefwdpa8yep3xsujucm0d5hszrnhwden5te009skyafwd4jj7qpqye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjs5g8cx3 and nostr:nprofile1qyt8wumn8ghj7un9d3shjtnddaehgu3wwp6kytcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qy88wumn8ghj7mn0wvhxcmmv9uq32amnwvaz7tmwdaehgu3wdau8gu3wv3jhvtcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcqyzaunsmr6f8mx7zuw9huhf9sdwpkreutv65mn8e223zk9xv4fm6nyu5zct0 for alerting me to a few of the issues.
# 0.4.12
- [x] Fix zap developer button
- [x] Hide wot muted replies
- [x] Conserve space on mobile
- [x] Show mark as read button on mobile
- [x] Fix reposts to communities
- [x] Fix note tag inheritance
- [x] Fix over-eager list encryption
Sure, just added support for NIP 05 urls, e.g. https://coracle.social/hodlbod@coracle.social. I don't have support for bare nip 05's, so `_@` would have to be used if you have one of those.
My bad, refactor gone wrong. nostr:nprofile1qyf8wumn8ghj7mn0wd68yat99e3k7mf0qyghwumn8ghj7mn0wd68ytnhd9hx2tcprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsz8rhwden5te0wdshgetvd35hgefwdpa8yep3xsujucm0d5hsz8rhwden5te0dphkgmrzdajzucm0wfskxmr99e6x7mmvwvhsqgpxdq27pjfppharynrvhg6h8v2taeya5ssf49zkl9yyu5gxe4qg55ey0luq thanks for pointing it out, I'll have a fix out shortly.
It's beautiful when devs cooperate and things come together so well. I know very little about nip 55, but for reference on private zaps look at amethyst's code.
It does seem like a problem with moderation, but moderation is often such a heavy lift, as the yesterweb website points out. No one wants to work a full-time job for now pay policing their peers. Maybe decentralized moderation can improve this situation, or maybe a google plus type app really is the holy grail, where if you don't want to share content with someone you simply don't share it with them. nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgkwaehxw309aex2mrp0yhx6mmnw3ezuur4vghszxthwden5te0wfjkccte9eekummjwsh8xmmrd9skctcpzamhxue69uhhyetvv9ujumn0wvh8xmmrd9skctcpremhxue69uhhxmmrd9skctnswfhhgetnwshxuet59aex2mrp0yqzqak8r2hr5jglrk0wc37t59lz98x6gyf6pwaku6hpwakhvslznjh6e6dxen mentioned recently that maybe this could be done using nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcpzdmhxue69uhhqatjwpkx2urpvuhx2ue0qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcqyqtnnkfhmjxqcums4gn4skfccyv7yhzp7mzyrfwnf3kns5p7xymw7rjykum 's NIP 104 MLS integration.
I believe this was in context of a discord community. My assumption is that loud and opinionated members would hijack conversations. This kind of behavior is pretty common in medium-sized chat groups from my understanding.
"We watched active members become lurkers over time, and when interviewed, many would cite the space-dominating behaviors of our most active members as a reason behind disengaging with the community entirely."
From https://yesterweb.org/#community-space-overgrowth
nostr:nprofile1qyv8wumn8ghj7enfd36x2u3wdehhxarj9emkjmn99uqjqamnwvaz7tmpwpkxzcm9d9h8g6r9wd6kutnwdaehgu339e3k7mf0qyf8wumn8ghj7umpw3ekzem99eu8j730q9zhwumn8ghj7unnxg6kz6mew3ax6me5w44rydt2wfcn2dtjdfchxdr3vdhxx7r2d43hyanyde3kjcn4dacxvmrrd4nrx7fhdae8zepwdahxjmmw9uq36amnwvaz7tmxv4jkguewdehhxarj9e3xzmny9ahx2amnw3eqqgxzxrkaxn99eqcchaze9tq9dn0rw5va89wqjpxr06suv59c4498zggclhes nostr:nprofile1qyfhwumn8ghj7ur4wfcxcetsv9njuetn9uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7qgwwaehxw309ahx7uewd3hkctcprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsqg9w3m64wcmskh9er5nzeuxnr4wwnaw2ymp66t2k6hzc7cprvvly2vct4qxk
An interesting perspective from the (very left-leaning) yesterweb project:
"The middle-class mentality is derived from competitive capitalist needs. It is the default mentality learned from social media, mass media, and mass education. It is deeply a consumer mindset. It is highly individualistic - sometimes egotistic, cynical, and even misanthropic. More selfish than selfless, personal ends justify the means. Work is undervalued (unless it's one's own) and often delegated to others, and if it is ever done, there has to be a guaranteed return on personal investment. It solves difficult problems with money. Survival is solitary, exclusive, and cutthroat. It holds the masses in contempt.
"In contrast, the lower-class mentality is derived from the needs of survival under the most difficult conditions of working life. It is learned either through participation or through investigation of lower-class life. It is deeply a producer mindset. It is cooperative and collaborative. It understands through direct experience that work is the source of all value and all creative development. More selfless than selfish, sacrifices for the collective well-being are made within reason: there is more to gain than to lose when working in the service of others. It solves difficult problems through effort. Survival is necessarily social. It sees the masses as their own.
"It takes serious time and effort to cultivate a lower-class mentality, especially among those who have no direct experience with it. It is necessary for any truly democratic community initiative: we saw this to be the case when we called for community members to build the community they wished to see without relying on the work of staff. There was a collective silence. For those individuals or groups who tried to take the initiative there was a complete unawareness on how to collaborate, with many members starting their own projects in isolation, or without the foresight of added maintenance that implied the staff was going to eventually hold the responsibility of maintaining it. Projects were decided based on short-term personal interests rather than achieving the long-term goals of the community, worked on only at one's own convenience without shouldering any collective responsibility."
https://yesterweb.org/
Naming things is one of the notorious "hard problems with computer science". Using numbers allows us to have a referent without interpretation, avoiding a lot of bikeshedding and confusion.
I think I'm at the "more questions than answers" stage of podcasting.
- How should you handle two very different types of episode in one feed?
- Is it ok to take a break, or are you a slave to the publishing cadence?
- Have I achieved the goal of the podcast?
- How can I make sure evergreen content doesn't get buried?
A new episode of nostr:nprofile1qyw8wumn8ghj76r0v3kxymmy9e3k7unpvdkx2tn5dahkcue0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgmwaehxw309aex2mrp0yh8wetnw3jhymnzw33jucm0d5hszrnhwden5te0dehhxtnvdakz7qg6waehxw309aex2mrp0yhxwet5v9kxy7fwvdhk6tmkxyqzphl3mpurnffw88l6vmukxylervy8xn22envuanr3678u9648r936scsgqz is out, with nostr's favorite farmer nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszxmhwden5te0w35x2en0wfjhxapwdehhxarjxyhxxmmd9uq3wamnwvaz7tmjv4kxz7fwdehhxarj9e3xzmny9uq3zamnwvaz7tmwdaehgu3wd3skuep0qqs2js6wu9j76qdjs6lvlsnhrmchqhf4xlg9rvu89zyf3nqq6hygt0sj42rw4 !
Unfortunately, my audio is awful because my computer decided to use my computer's mic rather than my Yeti, but the episode is still well worth the listen.
Enjoy!
https://fountain.fm/episode/VCK7BTSHsvy7eYEHvGWH
Watched Band of Thieves this weekend (which was pretty good), and was struck by a just slightly more concentrated dose of profanity than usual. Maybe it was the juxtaposition of the dorky main character and the amount of fucks coming out of his mouth, or maybe it was quantifiably more than usual, but in either case it got me thinking.
Why is our culture increasingly profane? Why must we punctuate all our communication with meaningless allusions to aggressive sex acts or scatology?
My wife an I have been watching "classic" movies more often in the last year or two, including On The Waterfront with Marlon Brando, the Bicycle Thief, and Casablanca. In every case, the pace of the dialog is quite slow, and the gravity much greater — despite an almost complete absence of emphatic profanity.
This can be seen in modern movies as well. Slow movies in general (think Dune or Interstellar) feel more meaningful. Marvel movies feel like cotton candy in contrast. In modern movies though, the gravity comes from the subject matter rather than the inherent drama of human life — vast stretches of space, time, or war. More mundane subjects having to do with normal people almost always seem to be approached with a certain level of irony or flippancy.
Marshall McLuhan says that "At electric speed, all forms are pushed to the limits of their potential." We live in a frantically fast age, that has outpaced the gravity of the human. The natural recourse is to attempt to keep up, but in doing so we lose the dignity slowness confers and are forced to resort to frantic insistence on our right to be heard. We scream, swear, panic, and twerk.
But of course, no one hears. The natural response to noise is to tune it out. The more we stimulate the senses, the number the senses become.
The most memorable people I have met are people who have not succumbed to this cultural panic. They are not people who project their emotions, but who carefully choose their words, and if in doubt prefer not to speak. They are people who have filled themselves not with their own thoughts, but with the thoughts of others, through study and memory. They are people whose silence speaks volumes.
I'm not like that. I'm uncomfortable with silence, and think best while talking. But it is something worth aspiring to. To be the kind of person whose dignity and gravity slowly expand. Who have a deep well of wisdom to draw from, which they dispense sparingly yet abundantly on the people they come into contact with. Whose eyes say more than their mouths.
There is one man in particular, whom I love. He always carried a pipe in his pocket or his mouth, vinted wine from his own grapes, did a little woodworking, and always said very little. Every Sunday, eyes closed, he would recite Psalm 103 to his small congregation. When he read the Bible, he would entirely leave off his own commentary (even though he was a pastor), simply reading the passage and closing the book afterward. At his funeral, and dozens of people shared stories of how this man had changed, or even saved their lives.
All of this came from a deep humility that came from spending many of his younger years without any idea what his purpose in life was, and from many personal failures and disappointments subsequent even to his calling. A "long obedience in the same direction" brought this man to the end of a life full of ups and downs, in which he was able to say that as he looked back, all he saw were the peaks, rather than the valleys.
Lately I've been challenged by Christ's words in Matthew, not to "worry about tomorrow, for tomorrow will worry about its own things. Sufficient for the day is its own trouble." No amount of thrashing productivity, frantic overwork, or boiling frustration can improve things, because our times are not in our own hand. All we can do is wait on God — and he will renew our strength.
Profanity is often a panicked bid to be heard by piling on emphasis. But panic is a form of fear, and perfect love casts out fear. "The very hairs of your head are all numbered. Do not fear therefore; you are of more value than many sparrows."
I should also mention, nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yhxummnw3ezucnpdejz7qg4waehxw309ahx7um5wghx77r5wghxgetk9uqsuamnwvaz7tmwdaejumr0dshsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshsqgxda62rewcec5dts3axd4whwsmn420k8558y34mtxcgyla9ucm5qq0r45dd released NIP 55 functionality as a re-usable library which anyone using capacitor to APK-ify their PWA can use.
https://github.com/chebizarro/nostr-signer-capacitor-plugin
nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzfmhxue69uhkummnw3e82efwvdhk6tcprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsz8rhwden5te0wdshgetvd35hgefwdpa8yep3xsujucm0d5hsz8rhwden5te0dphkgmrzdajzucm0wfskxmr99e6x7mmvwvhsqgpxdq27pjfppharynrvhg6h8v2taeya5ssf49zkl9yyu5gxe4qg5502n3g8
nostr:nevent1qyw8wumn8ghj76r0v3kxymmy9e3k7unpvdkx2tn5dahkcue0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgmwaehxw309aex2mrp0yh8wetnw3jhymnzw33jucm0d5hszrnhwden5te0dehhxtnvdakz7qguwaehxw309a3ksunfwd68q6tvdshxummnw3erztnrdakj7qpq6lk27w072u34w67ggxa9wkj3rmyeyztwls7vxqrfx9sgcs3pvffqgc4kmx
Notes by hodlbod | export