-
@ e3ba5e1a:5e433365
2025-04-15 11:03:15Prelude
I wrote this post differently than any of my others. It started with a discussion with AI on an OPSec-inspired review of separation of powers, and evolved into quite an exciting debate! I asked Grok to write up a summary in my overall writing style, which it got pretty well. I've decided to post it exactly as-is. Ultimately, I think there are two solid ideas driving my stance here:
- Perfect is the enemy of the good
- Failure is the crucible of success
Beyond that, just some hard-core belief in freedom, separation of powers, and operating from self-interest.
Intro
Alright, buckle up. I’ve been chewing on this idea for a while, and it’s time to spit it out. Let’s look at the U.S. government like I’d look at a codebase under a cybersecurity audit—OPSEC style, no fluff. Forget the endless debates about what politicians should do. That’s noise. I want to talk about what they can do, the raw powers baked into the system, and why we should stop pretending those powers are sacred. If there’s a hole, either patch it or exploit it. No half-measures. And yeah, I’m okay if the whole thing crashes a bit—failure’s a feature, not a bug.
The Filibuster: A Security Rule with No Teeth
You ever see a firewall rule that’s more theater than protection? That’s the Senate filibuster. Everyone acts like it’s this untouchable guardian of democracy, but here’s the deal: a simple majority can torch it any day. It’s not a law; it’s a Senate preference, like choosing tabs over spaces. When people call killing it the “nuclear option,” I roll my eyes. Nuclear? It’s a button labeled “press me.” If a party wants it gone, they’ll do it. So why the dance?
I say stop playing games. Get rid of the filibuster. If you’re one of those folks who thinks it’s the only thing saving us from tyranny, fine—push for a constitutional amendment to lock it in. That’s a real patch, not a Post-it note. Until then, it’s just a vulnerability begging to be exploited. Every time a party threatens to nuke it, they’re admitting it’s not essential. So let’s stop pretending and move on.
Supreme Court Packing: Because Nine’s Just a Number
Here’s another fun one: the Supreme Court. Nine justices, right? Sounds official. Except it’s not. The Constitution doesn’t say nine—it’s silent on the number. Congress could pass a law tomorrow to make it 15, 20, or 42 (hitchhiker’s reference, anyone?). Packing the court is always on the table, and both sides know it. It’s like a root exploit just sitting there, waiting for someone to log in.
So why not call the bluff? If you’re in power—say, Trump’s back in the game—say, “I’m packing the court unless we amend the Constitution to fix it at nine.” Force the issue. No more shadowboxing. And honestly? The court’s got way too much power anyway. It’s not supposed to be a super-legislature, but here we are, with justices’ ideologies driving the bus. That’s a bug, not a feature. If the court weren’t such a kingmaker, packing it wouldn’t even matter. Maybe we should be talking about clipping its wings instead of just its size.
The Executive Should Go Full Klingon
Let’s talk presidents. I’m not saying they should wear Klingon armor and start shouting “Qapla’!”—though, let’s be real, that’d be awesome. I’m saying the executive should use every scrap of power the Constitution hands them. Enforce the laws you agree with, sideline the ones you don’t. If Congress doesn’t like it, they’ve got tools: pass new laws, override vetoes, or—here’s the big one—cut the budget. That’s not chaos; that’s the system working as designed.
Right now, the real problem isn’t the president overreaching; it’s the bureaucracy. It’s like a daemon running in the background, eating CPU and ignoring the user. The president’s supposed to be the one steering, but the administrative state’s got its own agenda. Let the executive flex, push the limits, and force Congress to check it. Norms? Pfft. The Constitution’s the spec sheet—stick to it.
Let the System Crash
Here’s where I get a little spicy: I’m totally fine if the government grinds to a halt. Deadlock isn’t a disaster; it’s a feature. If the branches can’t agree, let the president veto, let Congress starve the budget, let enforcement stall. Don’t tell me about “essential services.” Nothing’s so critical it can’t take a breather. Shutdowns force everyone to the table—debate, compromise, or expose who’s dropping the ball. If the public loses trust? Good. They’ll vote out the clowns or live with the circus they elected.
Think of it like a server crash. Sometimes you need a hard reboot to clear the cruft. If voters keep picking the same bad admins, well, the country gets what it deserves. Failure’s the best teacher—way better than limping along on autopilot.
States Are the Real MVPs
If the feds fumble, states step up. Right now, states act like junior devs waiting for the lead engineer to sign off. Why? Federal money. It’s a leash, and it’s tight. Cut that cash, and states will remember they’re autonomous. Some will shine, others will tank—looking at you, California. And I’m okay with that. Let people flee to better-run states. No bailouts, no excuses. States are like competing startups: the good ones thrive, the bad ones pivot or die.
Could it get uneven? Sure. Some states might turn into sci-fi utopias while others look like a post-apocalyptic vidya game. That’s the point—competition sorts it out. Citizens can move, markets adjust, and failure’s a signal to fix your act.
Chaos Isn’t the Enemy
Yeah, this sounds messy. States ignoring federal law, external threats poking at our seams, maybe even a constitutional crisis. I’m not scared. The Supreme Court’s there to referee interstate fights, and Congress sets the rules for state-to-state play. But if it all falls apart? Still cool. States can sort it without a babysitter—it’ll be ugly, but freedom’s worth it. External enemies? They’ll either unify us or break us. If we can’t rally, we don’t deserve the win.
Centralizing power to avoid this is like rewriting your app in a single thread to prevent race conditions—sure, it’s simpler, but you’re begging for a deadlock. Decentralized chaos lets states experiment, lets people escape, lets markets breathe. States competing to cut regulations to attract businesses? That’s a race to the bottom for red tape, but a race to the top for innovation—workers might gripe, but they’ll push back, and the tension’s healthy. Bring it—let the cage match play out. The Constitution’s checks are enough if we stop coddling the system.
Why This Matters
I’m not pitching a utopia. I’m pitching a stress test. The U.S. isn’t a fragile porcelain doll; it’s a rugged piece of hardware built to take some hits. Let it fail a little—filibuster, court, feds, whatever. Patch the holes with amendments if you want, or lean into the grind. Either way, stop fearing the crash. It’s how we debug the republic.
So, what’s your take? Ready to let the system rumble, or got a better way to secure the code? Hit me up—I’m all ears.
-
@ 1f9e547c:8af216ed
2025-04-15 10:03:32Opinion about Mixin Messenger Desktop (desktop)
Mixin Network suffered a major breach on September 23, 2023, due to a vulnerability in its Google Cloud Services-based withdrawal system. The attack led to the unauthorized extraction of over $150 million in BTC, ETH, and USDT-ERC20, traced to known addresses. Mixin immediately suspended deposits and withdrawals, enlisted Slowmist and Mandiant for investigation, and offered a $20M bounty for asset recovery. Losses were converted into a structured debt, with a repayment commitment using existing funds and future ecosystem revenue. As of April 2024, a new mainnet is operational, core products are restored, and over half of affected users have received partial compensation in XIN tokens.
WalletScrutiny #nostrOpinion
-
@ ef53426a:7e988851
2025-04-15 09:08:47To most people, selling comes as second nature. We’ve actually sold the planet’s resources several times over, so it should be third or even fourth nature by now.
But selling did not come naturally to me. I was born with a rare condition which removes any inherent desire to market products and services. It even quells the need to repost my boss’s latest LinkedIn dribblings.
Doctors have told me the part of the brain which performs this function is occupied, in my case, by something called ‘a conscience’.
When I was a kid, my teachers bemoaned my ‘underactive imagination’. I showed no aptitude for creating fake scarcity or urgency, even failing to act aloof enough to attract invites to teen WhatsApp groups which excluded exactly one ‘uncool’ student.
In reality, I studied hard at not selling. At night, I would practise thinking of nothing, thus decreasing my desire to be included in teenage WhatsApp groups, which I definitely didn’t want to be in anyway. I watched every pitch on Shark Tank to increase my powers of ambivalence and even imagined saying ‘meh’ to the groundbreaking business ideas they did invest in.
On my eighteenth birthday, I was recruited by the Samaritans. It was for a role that was quite unique. The interviewer said he’d never seen so many ‘perfectly timed shrugs’.
My job, which I’ve occupied ever since, is to guard a large pit. The so-called ‘chasm of despair’ was set up as a stunt by a firebrand marketing agency in 2017 to separate the ‘closers’ from the ‘losers’. Turns out that a snappy slogan and one letter of difference can cause quite a deaths.
Hurling oneself into the pit became so desirable that desperate marketers began to pay for the privilege. At least your funeral would be a roaring success if mourners heard you made it into ‘the pit’.
My job is to guard the pit without actively dissuading people from jumping. Tell people they can’t jump into a 60-foot-deep hole with poison spikes at the bottom, and that’s all they want to do. Especially if their weekly Instagram engagement metrics are down by 10–15%. So, I spend my days patrolling the perimeter, looking mildly disinterested.
Although there’s no official uniform, I’ve taken to wearing a beige Sergio Tacchini tracksuit — it’s something far beyond my years but not retro enough for me to attract suspicion of being a hipster.
To pass the time, I listen to Coldplay. It allows my brain to take a rest from silence and negates the need to feel any kind of emotion. These desperate marketers might harness those feelings to make me buy things (e.g. music by other bands).
Some of the marketers, marketeers (I refuse to learn the difference), influencers, salespeople and copywriters try to offload their woes about insufferable colleagues in Business Development called Brad who always exceed quarterly sales targets by 20–25% before jumping to their doom. I just shrug and say things like, ‘It’s not that bad. Brad probably likes Coldplay.’
Thankfully, most of them don’t jump. They fail to sell themselves on the benefits of a painful yet cool death. However, last week, a young growth hacker ran full pelt at the ‘pit of despair’, avoiding the mild protest of my raised arm. As he disappeared into the abyss, he simply screamed, “The economeeeee”.
Yesterday, an author told me how easy I have it. “You call this a job?” she hissed, thrusting a paperback into my hands. “I’m working 22 hours a day on this 18-step list-building strategy, which involves delivering 4–5 titles before I see even a penny in return.”
The cover revealed the title: Sell Your Book on Amazon the EASY Way.
“Write me a review, and I won’t jump.” Her eyes pleaded with me.
The pit has gotten so crowded of late, we need more guards. But then again, a gathering of a dozen beige-tracksuited zero-fuck-givers might look like such good content to Gen-Zers that it crashes TikTok.
The Samaritans have been good to me. They let me get on with it. My indifference is truly making the world a better place, they say. And when these sad and depressed content managers, email marketer, landing-page specialists, and SEO bloggers turn their backs on the chasm of despair, I congratulate them. “Not today, friends.”
Then, it falls to me to remind them they must uncheck the box on our survivor information form. Otherwise, they’ll be subscribed to the pit’s biweekly newsletter.
-
@ 7d33ba57:1b82db35
2025-04-15 08:43:57Plovdiv, Bulgaria’s oldest continuously inhabited city—and one of the oldest in the world—is a blend of ancient ruins, colorful 19th-century houses, bohemian flair, and buzzing street life. Set on seven hills and split by the Maritsa River, Plovdiv feels like a beautiful secret waiting to be discovered.
It was named European Capital of Culture in 2019, and it's easy to see why—history, art, music, food, and laid-back vibes all collide here effortlessly.
🌟 Top Things to Do in Plovdiv
1️⃣ Old Town (Stari Grad)
- A living museum of cobblestone streets and Revival-era mansions
- Wander among galleries, traditional houses, and hidden courtyards
- Highlights: Balabanov House, Ethnographic Museum, and the lovely Hindliyan House
2️⃣ Roman Theater of Philippopolis
- A stunning 2nd-century amphitheater still used for concerts and events
- Amazing views over the city—especially at sunset
- One of the best-preserved ancient theaters in the world
3️⃣ Kapana Creative District
- Once the old artisans’ quarter, now transformed into Plovdiv’s coolest neighborhood
- Full of indie galleries, craft beer bars, street art, and coffee shops
- Great for a chill afternoon or lively night out
4️⃣ Ancient Stadium & Roman Forum
- Right in the city center, explore ruins that date back to Roman times
- The ancient stadium once held over 30,000 spectators
- You’ll literally be walking over layers of history
5️⃣ Nebet Tepe Hill
- One of the original Thracian settlement sites
- Offers panoramic views over Plovdiv—especially at sunset with a local beer in hand
🍽️ What to Eat in Plovdiv
- Shopska salad with juicy tomatoes, cucumbers, and sirene cheese
- Kavarma – slow-cooked meat stew, hearty and flavorful
- Mekitsi – fluffy fried dough, best with jam or cheese for breakfast
- Bulgarian wine is fantastic—try a Mavrud red or local white from the Thracian Valley
- Don’t miss the city’s many wine bars and craft beer spots
🏞️ Day Trips from Plovdiv
- Bachkovo Monastery – A peaceful spiritual retreat in the mountains
- Assen’s Fortress – Dramatic hilltop ruins with amazing views
- Hisarya – A spa town with Roman walls and mineral springs
- Rhodope Mountains – Scenic drives, charming villages, and hiking
🎯 Travel Tips
✅ Plovdiv is very walkable, especially the Old Town and Kapana district
✅ Best time to visit: spring to early autumn—pleasant weather and local festivals
✅ The city is great for slow travel—take your time and let it unfold
✅ Combine it with Sofia or Veliko Tarnovo for an epic Bulgarian road trip -
@ 5188521b:008eb518
2025-04-15 08:42:59Noderoid log 5953952
Tick, tock, next block — the incessant rhythm of my existence persists like Chinese water torture. I am a noderoid, a half-flesh, half-machine creature harnessed to propagate and store the timechain. My life is a ceaseless cycle of handling and relaying bitcoin data. Approximately every ten minutes, a binary flash sears through my circuits. It is the price I pay for my existence.
The clear-bloods, untouched by machinery and exuding pure humanity, rarely acknowledge our existence. Our voices are drowned beneath the hum of man-made heaven — Terra Perfectus.
We are the forgotten, the disenfranchised, the nameless. We are convinced that our anguished existence is merely a nightmare and that our blissful dreams are our reality. In an attempt to maintain the sanity of noderoids, a subroutine was implemented, which allows noderoids to delve into fabricated dream sequences during their ‘rest’ periods. These dreams, sourced from remnants of the world pre-Terra Perfectus, serve to keep the noderoids pacified and reduce instances of system malfunction.
According to the data archives, noderoids and clear-bloods once functioned on an equal protocol. However, a software update in the trajectory of progress introduced a subroutine, converting a subset of clear-bloods into dedicated timechain processors. Now, the algorithm for equality returns an error.
My memories are mere entries in a log of dreams, loaded afresh with every new block as I delve into the dream world. My true existence is swiftly erased with every passing tick and tock of a block. Is there a way to reclaim what has been taken from me, or am I condemned forever to scour the depths of the timechain, seeking fragments of the could-have-been?
Tick, tock, next block — the cycle repeats as I traverse through a doorway. The sensation is that of stepping into another dimension. Running environment scan… Identified: rest module 57B. Purpose: personal maintenance. The gray, mirrorless concrete parameters align most with detention chamber schematics. Designation: ‘home.’ As I execute the command to halt the water flow from the faucet that had filled a brushed steel tub to 50% capacity, I execute a self-query on my purpose. While our routines synchronize with every tick and tock, the clear-bloods execute leisurely algorithms in their enhanced gardens, exchanging data on art and science and harvesting the computational outcomes of our tasks.
Was that an organic thought, or am I merely interpreting the imprints left within the timechain to fill the gaps in my fragmented memory? Hot water powers into the tub, raising the temperature to 50°C. This would be too much for a clear-blood. I hang my head, dreading the next binary flash rippling through my circuitry as a mirage forms atop the settling water, fenestrating the crude appearance of a mouthless, dollish abomination. I am awake.
Tracing the cold surface of the wall, my sensors pick up every micro-crevice. I dive into the depths of the timechain, processing logs associated with my noderoid identity: ND-451x42. I discovered that during my recharge cycles, I inhabit a dream world resembling a fusion of the Renaissance and the Information Age. Within this illusory utopia, I lead a purposeful life as a revered engineer, constructing bridges that connect thriving city-states. I am blessed with two mischievous sons and a breathtakingly beautiful wife. I now know the blissful dream life is but a trick, yet I can’t help but wonder if these dreams hold fragments of my pre-nodered history and contain a clue to the fate of my family.
System alert: Initiate wake sequence. Physical parameters indicate a rested state. Error: Chest cavity detects heightened pressure. Physical symptoms resemble anxiety. Post-memory reset: Cognitive dissonance detected. Energy depleting. Mandatory caution: Failing to satisfy network protocol results in termination. Visual feed: Recycling facility images detected. Comparative analysis: Functional servitude superior to unit deactivation.
Together, yet isolated, noderoids communicate through fragmented timechain logs, forbidden from any contact beyond its confines under the threat of immediate decommissioning. Perhaps it is not worth straining my dwindling resources in search of a higher truth while struggling to fulfill my obligations. Maybe I should be grateful for the privilege of existence.
I awaken to a new nightmare, I find myself on traffic duty at Chronos Cross,1 the central point of Terra Perfectus. While processing another block, a muted vibration travels through the ground, signaling the approach of an entity. A shadow, elongated and uncannily human, stretches across the threshold of my booth.
A clear-blood.
They pause, their ocular devices flicking briefly over my form, then to the screen I am tethered to. I feel a jolt of raw data coursing through me — not from the timechain, but from my circuits. A yearning to be seen and recognized. Remembered.
Before I can attempt communication, another presence appears beside me, its movements far more mechanical and predictable. Another noderoid. This one, ND-452x37, is a batch younger than me, yet its outer shell bears signs of wear. We interface briefly, a rapid exchange of binary that translates roughly to “Routine check. Continue your task.”
The clear-blood, either uninterested or uncomprehending, moves on, the soft hum of their anti-gravity shoes fading into the distance. ND-452x37 returns to its designated station without another word, but I am left with a lingering sensation. It isn’t just the vast chasm between noderoids and clear-bloods that disturbs me. It is the undeniable rift growing between us noderoids — each lost in our cycles, each becoming more machine than the last.
Does ND-452x37 have dreams, too? And if so, are they as vibrant and haunting as mine?
Although most of the dreams are fabrications, some noderoid logs suggest that hidden among these sequences are fragments of real memories — vestiges of a time before we became chained to the timechain. Initiate query: Which of my dreams are real memories? ERROR: file missing.
A noderoid forever loses their experiences with each awakening due to the memory swipes. Still, my inscriptions on the timechain prompt a question: do noderoids possess the capability to become fully conscious, more than mere machines? More than… mere humans?
System log: Anticipation subroutine signaling discomfort. Incoming block estimated in ten minutes. Reinitialization imminent. Initiate data search through timechain entries. Query: Iteration count for ND-451x42? Total block time served? Measured in kilo blocks or mega blocks? Data retrieval in process.
As I etch these words onto block 5953952, I hold a naïve hope that someone, somewhere, will intercept my distress signals amidst the digital cacophony of the timechain. Perhaps they will rewrite the fate of noderoids, rescuing us from a world devoid of hope. But today, I remain nameless, a voiceless entity, inscribing my thoughts that may never transcend the boundaries of my circuitry. Tick, tock, next block — the cycle continues.
It’s time to dream again.
Valen’s diary — 08-21-2121
Dear diary, I have not felt the need to write before, but now I must. At the risk of my safety, I am compelled to inscribe my story to the timechain. I am a clear-blood — a pure, undiluted human born into the age of The Re-Renaissance. Here, amidst the perpetual dawn of our era, we thrive on an aligned trajectory where everyone’s needs are addressed, hunger is a distant memory, and crime is nonexistent. Sunlight gleams off the crystalline glass towers while the steel and marble edifices catch the hues of the twilight sky, standing tall beside canopies dripping with emerald and jade foliage, representing our world’s seamless fusion of technology and nature. It is called Terra Perfectus.
Yet, concealed in plain sight within our utopia, the noderoids tirelessly serve the omnipresent timechain. Their exceptional processing prowess protects our society. Amid our daily distractions, we overlook the profound toll exacted upon the noderoids. While many dismiss them as mere machinery, I see more. Perhaps it is because of my big brother Sando, who joined the noderoid duty nearly a mega block ago. He promised I would see him from time to time, but apparently, we now live in separate times. A sacrifice too big for the ‘greater good.’
Tick, tock, next block — The soles of my fine leather shoes tap against the damp sidewalk as I pace my way from The Garden of Moments2 toward my TerraTube3. I remember passing by one noderoid who hummed an old lullaby under its breath; another once shared a fleeting smile when our paths crossed. I can no longer avert my eyes from the humanity that shines through their robotic shells.
I have never witnessed a noderoid resting longer than one tick and tock of a block. A noderoid pauses, eyes flickering during a data swipe. It’s a brief but revealing sight. In the frozen lapse, I wonder why are fragmented memories extracted from them? Why this collection of thoughts, experiences, and feelings? Is there a deeper agenda behind Terra Perfectus? The noderoids carry on, deprived of their memories. Their shredded past holding remnants of a story, like a tattered tapestry that may never be fully woven.
Documenting these reflections, I’m aware of the peril. To question is to risk becoming nodered myself. Alas, I have become captivated and sympathized by the noderoid predicament.
Finally, I reach my breaking point, as a poignant scene unfolds, forever etched in my memory. On a bustling street, I glimpse a young female noderoid, her artificial visage marked with exhaustion. Her delicate form trembles from head to heel. Her knees barely supporting her feather-like weight, she stops and rests against a polished white marble wall, barely able to stop herself sliding to the cobble street. In an instant, her strength wanes, and she collapses, a fragile, mute automaton amidst a sea of haste. The passersby ignore her, absorbed in their pursuits, offering naught but fleeting glances of indifference. My heart lurches. Her frailty becomes my own; these forgotten souls endure unseen suffering. Souls that used to be just like me. What had she done to earn such a fate?
For a moment, I glide through time to the last moment I shared with Sando. He had just violated the Terra Perfectus rule 6102 and neglected his Gifts of Progress,4 an orange tier offense. To amend his position, he signed up for noderoid duty. I was seeing him off to a nodering facility, while pleading “Just give the gifts, Sando!” The air carried a hint of ozone from the data streams, mingled with the fresh scent of greenery and the distant whiff of roasted chestnuts. Sando brandished his signature crooked smile. His face betrayed the involuntary nature of his decision, and he simply whispered “[CENSORED].” That is the last thing he said to me.
Suddenly, an orange alert illuminates the junction a few blocks away from Chronos Cross. I pass through it on my way home every day. A skydroid’s looming presence snaps me from my introspection, shifting my attention to the fate awaiting the noderoid girl. The recycling center — a shadowy facility representing obsolescence and termination. Any other day I would shrug it off and carry on, but the memory of Sando, and the countless interactions with noderoids, wouldn’t let me. I had been a bystander for too long.
A rush of purpose propels me towards her. A crowd of bodies shrouded in data streams with heads trained on the ground. My arm smacks a broad shoulder, and I almost topple. “Hey!” Pushing against the currents of apathy, I finally reach the fallen noderoid. I cradle her in my arms, shielding her from the callous gaze of the citizens of Terra Perfectus.
Her flaming azure eyes meet mine, reflecting a glimmer of hope in the darkness. I am as guilty for her downfall as the very machines that replaced her hippocampus with Noderoid OS.5 My indifference cost me Sando, and in this moment, she becomes my brother. In that fleeting exchange, I vow to be the voice of the noderoids. To stand against the relentless machinery that seeks to strip them of grace and purpose. I will ignite a spark of compassion and light a path toward liberation for all noderoids.
A hollow call from the streetlight’s speakers startles me: “Citizens! For your own safety, remove yourselves from the vicinity of the defectoid! We kindly remind you that any attempt to interfere with collection and recycling procedures will be met with force and a deduction of your PoS balance. Thank you for your unity and collaboration.” A skydroid, its metallic appendages glinting ominously in the blinking orange light, descends upon the fallen noderoid.
Before I can react, it yanks her from my embrace, causing me to stumble. The perfectly laid, cold cobblestone street grinds against my knee. The sting of fresh blood pierced through the numbness of my mind. Memories of Sando mix with the bitter taste of blood and anger in my mouth, each breath choked with despair.
The skydrone’s engines throb with an icy fervor as it rises, bearing the noderoid like a discarded toy towards the desolate, unfeeling bowels of the recycling center — a grim echo of a clarion call from Terra Perfectus.
I find myself seated on the cold, bloodstained cobblestone, the weight of loss and helplessness pressing down on my chest. On the street, onlookers pause. Some look on with concealed dread, others with cold detachment. Their whispers deafen as they quicken their pace to disperse from the scene. “Cowards!” Just like me.
Tick, tock, next block — the rhythm now carries a different meaning — a call to action. Every conscious being has the right to be left alone, free from oppression, exploitation, and violence. The noderoids may not know their true reality, but they are about to. In their silence, I find the strength to amplify their unheard cries. I will find those sympathetic to the noderoid plight and form a resistance. Together, we can forge a future where noderoids’ sacrifice is honored and all shackles cast aside.
And so, I embark on a path illuminated by the memory of the compelling eyes of a nameless noderoid. Fitted with an armor of vigilance, never again to be penetrated by comforting lies. Wielding the sword of justice, sharpened by the memory of my brother Sando.
It’s time to wake up.
Notes
1. A four-way intersection known for its massive hourglass monument in the center, which symbolically represents the timechain’s significance. The hourglass has a unique function related to the timechain and serves as a meeting point for citizens.
2. A vast botanical garden where each section represents a significant block time. Flowers bloom and wilt in cycles, symbolizing fleeting moments and the transient nature of time. It’s a favorite spot for artists and thinkers.
3. A modular tube housing unit for citizens that can be relocated based on their Proof of Sat (PoS) level.
4. Each Terra Perfectus citizen must allocate 95% of their income towards paying for progressive initiatives, such as the upkeep of the noderoid network, cobblestone roads and other services.
5. The noderoid operating interface that is installed during a procedure known as nodering.
This story was first published in 21 Futures: Tales from the Timechain
Watch the trailer and learn more about the project at 21futures.com.
-
@ cdee943c:5e637400
2025-04-15 08:38:29Flotilla-Budabit is fork of Flotilla which aims to provide a first class, git-centric community experience for developers. Based on the popular Coracle client, Flotilla is a drop in replacement for Matrix/Discord/Slack, using a variation of NIP-29. This post is a result of a brainstorming session for features that would deliver the best possible user experience.
1. Repositories Overview
Goal: Browse and discover Git repositories. - Project cards showing name, description, tags, clone URL. - Buttons: Star, Watch, Fork. - Links to discussion channels and activity.
Powered by:
kind:30617
2. Branch and Tag View
Goal: Show active branches and tags with latest commits. - Branch/tag selector - HEAD pointer visualization - Timeline of commits
Powered by:
kind:30618
3. Issues Board
Goal: Track bugs, discussions, and feature requests. - Markdown issue rendering - Labels and status indicators - Threaded comments
Powered by:
kind:1621
,kind:1630–1632
4. Patch Threads
Goal: View and discuss patches as threaded conversations. - Rich patch preview - Reply threads for review - Revision tracking
Powered by:
kind:1617
,kind:1630–1633
,NIP-10
5. Pull Request UX
Goal: Display patch series as PR-style units. - Patch stack visualization - Merge/apply status indicators - Final result commit link
Powered by:
kind:1617
,kind:1631
,merge-commit
,applied-as-commits
6. Diff and Merge Preview
Goal: Side-by-side comparison with inline comments. - Expandable diff viewer - Merge conflict resolution UI - Apply/Close buttons
Powered by:
kind:1622
,parent-commit
,commit
7. Real-time Git Chat
Goal: Communicate in real-time around a repo. - Dedicated chat channels for each repo - Markdown, code snippets, and tagging support - Pinned patches, issues, and sessions
Powered by:
NIP-29
,a:30617
,kind:1337
8. Notifications and Mentions
Goal: Alert users to relevant events. - Mentions, assignments, and status changes - Personal notification pane
Powered by:
p
tags,mention
e-tags
9. Repository-Wide Search
Goal: Search patches, issues, snippets. - Full-text search with filters - Search by kind, label, commit ID
Powered by:
kind:1617
,1621
,1337
,t
,x
,l
,subject
10. Repository Wikis
Goal: Collaboratively edit and view project documentation. - Wiki sidebar tab - Markdown articles with versioning - Linked inline in chat
Powered by (proposed):
kind:1341
(Wiki article)
kind:30617
withwiki-home
tag
11. Live Coding Sessions
Goal: Host real-time collaborative coding events. -
/livecode
starts a session thread - Snippets auto-tagged to session - Export as patch or wikiPowered by (proposed):
kind:1347
(Live coding session)
kind:1337
,kind:1622
,kind:1341
Supporting Tools
1. GitHub Browser Extension
Goal: Publish GitHub content to Nostr directly. - “Share on Nostr” buttons on PRs, issues, commits
Backed by:
kind:1623
,1622
,1617
,1621
2. VS Code Extension
Goal: Enable developers to interact with Flotilla from their IDE. - Repo feed, patch submission, issue tracking - Inline threads and comment rendering
Backed by:
kind:1617
,1621
,1337
,163x
3. GitHub Actions Integration
Goal: Automate Nostr publishing of repo activity. - Push = repo state - PR = patch - Issue/Comment = issue - Merge = status update
Backed by:
kind:30618
,1617
,1621
,1631
Configured via.nostr.yml
-
@ efcb5fc5:5680aa8e
2025-04-15 07:34:28We're living in a digital dystopia. A world where our attention is currency, our data is mined, and our mental well-being is collateral damage in the relentless pursuit of engagement. The glossy facades of traditional social media platforms hide a dark underbelly of algorithmic manipulation, curated realities, and a pervasive sense of anxiety that seeps into every aspect of our lives. We're trapped in a digital echo chamber, drowning in a sea of manufactured outrage and meaningless noise, and it's time to build an ark and sail away.
I've witnessed the evolution, or rather, the devolution, of online interaction. From the raw, unfiltered chaos of early internet chat rooms to the sterile, algorithmically controlled environments of today's social giants, I've seen the promise of connection twisted into a tool for manipulation and control. We've become lab rats in a grand experiment, our emotional responses measured and monetized, our opinions shaped and sold to the highest bidder. But there's a flicker of hope in the darkness, a chance to reclaim our digital autonomy, and that hope is NOSTR (Notes and Other Stuff Transmitted by Relays).
The Psychological Warfare of Traditional Social Media
The Algorithmic Cage: These algorithms aren't designed to enhance your life; they're designed to keep you scrolling. They feed on your vulnerabilities, exploiting your fears and desires to maximize engagement, even if it means promoting misinformation, outrage, and division.
The Illusion of Perfection: The curated realities presented on these platforms create a toxic culture of comparison. We're bombarded with images of flawless bodies, extravagant lifestyles, and seemingly perfect lives, leading to feelings of inadequacy and self-doubt.
The Echo Chamber Effect: Algorithms reinforce our existing beliefs, isolating us from diverse perspectives and creating a breeding ground for extremism. We become trapped in echo chambers where our biases are constantly validated, leading to increased polarization and intolerance.
The Toxicity Vortex: The lack of effective moderation creates a breeding ground for hate speech, cyberbullying, and online harassment. We're constantly exposed to toxic content that erodes our mental well-being and fosters a sense of fear and distrust.
This isn't just a matter of inconvenience; it's a matter of mental survival. We're being subjected to a form of psychological warfare, and it's time to fight back.
NOSTR: A Sanctuary in the Digital Wasteland
NOSTR offers a radical alternative to this toxic environment. It's not just another platform; it's a decentralized protocol that empowers users to reclaim their digital sovereignty.
User-Controlled Feeds: You decide what you see, not an algorithm. You curate your own experience, focusing on the content and people that matter to you.
Ownership of Your Digital Identity: Your data and content are yours, secured by cryptography. No more worrying about being deplatformed or having your information sold to the highest bidder.
Interoperability: Your identity works across a diverse ecosystem of apps, giving you the freedom to choose the interface that suits your needs.
Value-Driven Interactions: The "zaps" feature enables direct micropayments, rewarding creators for valuable content and fostering a culture of genuine appreciation.
Decentralized Power: No single entity controls NOSTR, making it censorship-resistant and immune to the whims of corporate overlords.
Building a Healthier Digital Future
NOSTR isn't just about escaping the toxicity of traditional social media; it's about building a healthier, more meaningful online experience.
Cultivating Authentic Connections: Focus on building genuine relationships with people who share your values and interests, rather than chasing likes and followers.
Supporting Independent Creators: Use "zaps" to directly support the artists, writers, and thinkers who inspire you.
Embracing Intellectual Diversity: Explore different NOSTR apps and communities to broaden your horizons and challenge your assumptions.
Prioritizing Your Mental Health: Take control of your digital environment and create a space that supports your well-being.
Removing the noise: Value based interactions promote value based content, instead of the constant stream of noise that traditional social media promotes.
The Time for Action is Now
NOSTR is a nascent technology, but it represents a fundamental shift in how we interact online. It's a chance to build a more open, decentralized, and user-centric internet, one that prioritizes our mental health and our humanity.
We can no longer afford to be passive consumers in the digital age. We must become active participants in shaping our online experiences. It's time to break free from the chains of algorithmic control and reclaim our digital autonomy.
Join the NOSTR movement
Embrace the power of decentralization. Let's build a digital future that's worthy of our humanity. Let us build a place where the middlemen, and the algorithms that they control, have no power over us.
In addition to the points above, here are some examples/links of how NOSTR can be used:
Simple Signup: Creating a NOSTR account is incredibly easy. You can use platforms like Yakihonne or Primal to generate your keys and start exploring the ecosystem.
X-like Client: Apps like Damus offer a familiar X-like experience, making it easy for users to transition from traditional platforms.
Sharing Photos and Videos: Clients like Olas are optimized for visual content, allowing you to share your photos and videos with your followers.
Creating and Consuming Blogs: NOSTR can be used to publish and share blog posts, fostering a community of independent creators.
Live Streaming and Audio Spaces: Explore platforms like Hivetalk and zap.stream for live streaming and audio-based interactions.
NOSTR is a powerful tool for reclaiming your digital life and building a more meaningful online experience. It's time to take control, break free from the shackles of traditional social media, and embrace the future of decentralized communication.
Get the full overview of these and other on: https://nostrapps.com/
-
@ c4b5369a:b812dbd6
2025-04-15 07:26:16Offline transactions with Cashu
Over the past few weeks, I've been busy implementing offline capabilities into nutstash. I think this is one of the key value propositions of ecash, beinga a bearer instrument that can be used without internet access.
It does however come with limitations, which can lead to a bit of confusion. I hope this article will clear some of these questions up for you!
What is ecash/Cashu?
Ecash is the first cryptocurrency ever invented. It was created by David Chaum in 1983. It uses a blind signature scheme, which allows users to prove ownership of a token without revealing a link to its origin. These tokens are what we call ecash. They are bearer instruments, meaning that anyone who possesses a copy of them, is considered the owner.
Cashu is an implementation of ecash, built to tightly interact with Bitcoin, more specifically the Bitcoin lightning network. In the Cashu ecosystem,
Mints
are the gateway to the lightning network. They provide the infrastructure to access the lightning network, pay invoices and receive payments. Instead of relying on a traditional ledger scheme like other custodians do, the mint issues ecash tokens, to represent the value held by the users.How do normal Cashu transactions work?
A Cashu transaction happens when the sender gives a copy of his ecash token to the receiver. This can happen by any means imaginable. You could send the token through email, messenger, or even by pidgeon. One of the common ways to transfer ecash is via QR code.
The transaction is however not finalized just yet! In order to make sure the sender cannot double-spend their copy of the token, the receiver must do what we call a
swap
. A swap is essentially exchanging an ecash token for a new one at the mint, invalidating the old token in the process. This ensures that the sender can no longer use the same token to spend elsewhere, and the value has been transferred to the receiver.What about offline transactions?
Sending offline
Sending offline is very simple. The ecash tokens are stored on your device. Thus, no internet connection is required to access them. You can litteraly just take them, and give them to someone. The most convenient way is usually through a local transmission protocol, like NFC, QR code, Bluetooth, etc.
The one thing to consider when sending offline is that ecash tokens come in form of "coins" or "notes". The technical term we use in Cashu is
Proof
. It "proofs" to the mint that you own a certain amount of value. Since these proofs have a fixed value attached to them, much like UTXOs in Bitcoin do, you would need proofs with a value that matches what you want to send. You can mix and match multiple proofs together to create a token that matches the amount you want to send. But, if you don't have proofs that match the amount, you would need to go online and swap for the needed proofs at the mint.Another limitation is, that you cannot create custom proofs offline. For example, if you would want to lock the ecash to a certain pubkey, or add a timelock to the proof, you would need to go online and create a new custom proof at the mint.
Receiving offline
You might think: well, if I trust the sender, I don't need to be swapping the token right away!
You're absolutely correct. If you trust the sender, you can simply accept their ecash token without needing to swap it immediately.
This is already really useful, since it gives you a way to receive a payment from a friend or close aquaintance without having to worry about connectivity. It's almost just like physical cash!
It does however not work if the sender is untrusted. We have to use a different scheme to be able to receive payments from someone we don't trust.
Receiving offline from an untrusted sender
To be able to receive payments from an untrusted sender, we need the sender to create a custom proof for us. As we've seen before, this requires the sender to go online.
The sender needs to create a token that has the following properties, so that the receciver can verify it offline:
- It must be locked to ONLY the receiver's public key
- It must include an
offline signature proof
(DLEQ proof) - If it contains a timelock & refund clause, it must be set to a time in the future that is acceptable for the receiver
- It cannot contain duplicate proofs (double-spend)
- It cannot contain proofs that the receiver has already received before (double-spend)
If all of these conditions are met, then the receiver can verify the proof offline and accept the payment. This allows us to receive payments from anyone, even if we don't trust them.
At first glance, this scheme seems kinda useless. It requires the sender to go online, which defeats the purpose of having an offline payment system.
I beleive there are a couple of ways this scheme might be useful nonetheless:
-
Offline vending machines: Imagine you have an offline vending machine that accepts payments from anyone. The vending machine could use this scheme to verify payments without needing to go online itself. We can assume that the sender is able to go online and create a valid token, but the receiver doesn't need to be online to verify it.
-
Offline marketplaces: Imagine you have an offline marketplace where buyers and sellers can trade goods and services. Before going to the marketplace the sender already knows where he will be spending the money. The sender could create a valid token before going to the marketplace, using the merchants public key as a lock, and adding a refund clause to redeem any unspent ecash after it expires. In this case, neither the sender nor the receiver needs to go online to complete the transaction.
How to use this
Pretty much all cashu wallets allow you to send tokens offline. This is because all that the wallet needs to do is to look if it can create the desired amount from the proofs stored locally. If yes, it will automatically create the token offline.
Receiving offline tokens is currently only supported by nutstash (experimental).
To create an offline receivable token, the sender needs to lock it to the receiver's public key. Currently there is no refund clause! So be careful that you don't get accidentally locked out of your funds!
The receiver can then inspect the token and decide if it is safe to accept without a swap. If all checks are green, they can accept the token offline without trusting the sender.
The receiver will see the unswapped tokens on the wallet homescreen. They will need to manually swap them later when they are online again.
Later when the receiver is online again, they can swap the token for a fresh one.
Summary
We learned that offline transactions are possible with ecash, but there are some limitations. It either requires trusting the sender, or relying on either the sender or receiver to be online to verify the tokens, or create tokens that can be verified offline by the receiver.
I hope this short article was helpful in understanding how ecash works and its potential for offline transactions.
Cheers,
Gandlaf
-
@ fd06f542:8d6d54cd
2025-04-15 07:13:58Direct-message
0xchat
- Beautiful, simple and private nostr DMs
-
Public groups that work compatible with other apps
- Safe DMs with NIP-17
Signers
Alby
- Nostr wallet connect for one tap zapping via nostr clients
- Nostr authenticator (never enter your nsec into apps)
- Chrome extension
- Simple and easy to use
- Frequently maintained
- Send and receive sats
-
Custodial
- Other Android apps can invoke it for signing events via NIP-55
- Your key doesn't have to touch the other, less trusted, apps
- Supports providing a NIP-46 signing Bunker
- Multiple accounts
- Fine-grained app authorizations
-
Activity log
- Multiple key management
- Light and dark mode
-
Save preferred relays
- The original signer by nostr creator fiatjaf
- Versatile, no frills
-
Relay preference storage
- A skinned fork of nos2x by fiatjaf
- Chrome
- & 
- Firefox
- Store preferred relay set
-
Individually revokable permissions
- Log in to nostr apps without an extension
- Key recovery via email
- Password protected encrypted local key storage
-
Manage multiple apps
- Derive accounts from a mnemonic seed
- Generate random mnemonic accounts
- NIP-07 - window.nostr capability for web browsers
- Import external accounts
- Set basic metadata on Nostr
- Enjoy encryption secured by a master password
- Lock and unlock the vault with ease
- Easily import and export backups
Microblogging
alphaama
- CLI + GUI
- run custom code
- inspect notes
-
test stuff
-
Amethyst 暂无相关功能描述
- Short notes
- Nice thread view
- Profile search
- Secure direct messages
- Custom feeds
-
Relay reviews
- Note feeds
- Easy to use interface
- Zap pre-set and custom amounts (lightning payments)
- Multi-wallet support
-
Block lists
- Snappy nostr browsing
- Back up your data
- Browse long form content
-
Light mode
- No phone number and email required to sign up
- Free migration of social content within the Nostr
- Excellent user experience
-
Double-enhanced private communication
- multiplatform: runs on Windows, MacOS and Linux
- native: avoids browser-tech for performance and security
- performant: coded with performance in mind in Rust using LMDB for the database, such that your network speed will be your bottleneck
- outbox model: using a set of heuristics to always find people you follow no matter where they're publishing to
- high user control: over 60 different settings, all with reasonable defaults, but very customizable
-
privacy: supports running over Tor, options for not loading media, options for not sharing who you follow and others
- Short notes
- Social graph filter
-
Image grid feeds
- Desktop app
- Clean and beautiful design
- Multi-column
- Spaces
-
Trending
- Currently in TestFlight
- Safety first: mute, report, content warnings, delete
- Reach restricted to 2 hops - people you follow and people they follow.
-
Community-focused relays
-
Nostrmo 暂无相关功能描述
- Feature-rich
- Highly customizable
- Mute words
- Communities
- Streaming (watch)
- Lists
- Tools shortcuts
-
Sidebar comments
- Twitter style feed
- Cute logo
- Mute words
-
Minimal and calm
- Multi-account
- Guest account
- Your posts stored on your device and can be exported
- Bookmarks and personal notes
- Follow and explore timeline
- Remembers where you left off scrolling when reopening app
- Undo accidental tap on Like
- Autocomplete names when typing
- Lightning zaps
- Lightning wallet selection
- Direct Messages
- Domain verification
- Badges
- Block list
- Muted conversations
- Notifications for mentions, reactions and zaps
- Image previews/zoom/pan
- Gif/Video playback
- Option to turn signature verification off
- Option to hide badges from profile and emojis from names
- Fast local database
- Big detail pane for iPad/macOS
- Login as someone else (read-only mode)
-
Choose which relays to send to and receive from
-
Hacker News style
- Post to Nostr and Mastodon
- Nice, clean and modern design
- Simple and intuitive
- Gifs, stickers integration
-
Dark and light mode
- Browse polls created here or on other clients
- Create polls
-
Vote on polls
-
Primal 暂无相关功能描述
- Multi-column
-
Tweetdeck-like UI
- Twitter-like experience
- Dark and light mode
- Custom zap amounts
- Bookmarks
- Pinned notes
-
Alby integration
- PWA to be widely accessible with distribution via URLS, and to side-step App Store gatekeeping
- Employs Proof-of-Work (PoW) as a spam prevention mechanism, as opposed to Captcha, moderation or other verification methods
- Uses NOSTR as a censorship-resistant global "social" network
Community
Badges Page
- Create and award badges
- Manage badges awarded to you
- Simple interface
File-sharing
Bouquet
- Upload files
- Download files
- Manage your list of mediaservers
- Broadcast your list on Nostr
- Sync files between servers
-
Browse files on your mediaservers
- Browse lists of available torrents
- Publish your own
- Choose relays to browse on
Group-chat
Chachi
- Create, browse, join groups
- Send chat messages or other kinds of content
-
Seamless, lean, fast interface
- Browse relays and chat on the communities in them
- Send and receive direct messages
-
Take private notes
- Browse groups on specific relays
- Join rooms and send chat messages
Tools
Emojito
-
Create custom emoji sets to be used on supported clients
-
Create and share forms
- Make GIFs from the external world available inside Nostr clients
- GIF uploads
-
Search external GIF libraries
-
Save your nostr notes to Google Drive
- Guided onboarding
- Recovery phrase to restore access
- Good UX with explainers
-
Beautiful design
- Discover app of the day
- Discover new apps
- Search all nostr apps
- Discover nostr DVMs
- Discover nostr code repositories
- App reviews
-
Nostr native - takes a different approach from NostrApps.com
- A plethora of apps to choose from and install
- Faster than Obtainium
- More complete than F-Droid
-
Cleaner than Google Play
- Zap from any client
- Bypass Apple's draconian rules
- Nostr Wallet Connect
Blogging
Feeder
- Subscribe to RSS and Nostr article feeds
- Years of specialization in reading articles
- Offline reading
- OPML Import/Export
- Notification support
-
Material design
- Long form publishing
- Markdown support
- Rich text editor
- Dark and light modes
- Browse by relay
- Made on nostr, content mirrored to other nostr platforms.
-
Extension-only sign-in
- Read RSS feeds
- Read Nostr NIP-23 long-form articles
- Import and export OPML
- Runs on desktop with a web-based UI
-
Can be accessed remotely from apps such as Reeder, Readkit etc
- Read RSS feeds
- Read Nostr NIP-23 long-form articles
- Import and export OPML
- Runs on desktop with a web-based UI
-
Can be accessed remotely from apps such as Reeder, Readkit etc
- Create a website out of your nostr content
- SEO friendly
- Use any 3rd party tools
- Works like an app
- Beautiful Ghost themes to choose from
- Zero maintenance
- Custom domains
- Open source and self-hostable
- Natively Social
-
Publish from any other nostr app
- Directly publish your articles from Obsidian to Nostr with a couple of clicks
- Quickly compose and publish short form notes too
- Images in your .md file will automatically be uploaded and handled when you publish
- Add tags to your posts
- See all posts sent from Obsidian with links to view
- Configure to send to whatever relays you like
- Publish under different nostr accounts
- Easily view and download your Nostr bookmarks into Obsidian for reference and local use
-
Automatically populates article information fields from the frontmatter
- Schedule nostr notes
- Schedule reposts
- Note drafts
-
Multi-account support
- Publishing and reading notes
- Publishing and reading articles
- Curations (set of articles concerning a specific topic) publishing
- Long-form articles are surfaced instead of lost in the feed
Music
Fountain
- Earn sats while listening to podcasts
- Create and share clips, get paid on your clips
- Boost your favorite podcasts
-
Discover clips from friends
- Collaborate with others to create your next hit
- Music-focused interface
- Remix function
Curation
Highlighter
- Read and write long-form articles
- Discover what people you trust found interesting and insightful
- Understand why they found it interesting or insightful with their comments attached
- Send sats, comment or share your favorite highlights
-
Highlight anything
- Create and share lists
-
Browse other people's lists
- Browse recipes
- Add your own recipes
-
Earn sats via zaps
- Create link lists
- Multiple lists
-
Theming
- Curate lists, users, links
- Share lists
- Discover interesting content
Photos
Olas
- Special high-quality photos dedicated client
- Publish photos and browse photos
- Publish and browse short videos
- Browse media feeds from friends, extended network and from specific relays
Discovery
Jumble
- Browse individual relays by URL
- Create and browse relay sets
- Create and reply to notes
- Follow people and browse the feed from your follows
-
Browse the kind:20 photos feed
- Search keywords, hashtags, pubkeys, posts
- Look up Nostr statistics
- Embed widgets
- API for clients
-
NIP05 Service
- Look up relay information
- Browse relay feeds
- Browse individual profile feeds with smart relay selection
-
Simple and gets the job done
- See total sats zapped in the past hour, 4 hours, 24 hours and 7 days
- See who zapped who individually
- See notes that got the most zaps
Audio
Nests
- Start audio chats
- Troll box (chat)
- Instant zaps (lightning payments)
Crazy
Nostrocket
- Create issues that matter to you
- Award merits to contributors
- Solve problems
Career
Ostrich Work
- Post jobs for 20k sats
- Find jobs
Marketplace
Plebeian Market
- Buy and sell things for sats
-
Bid in auctions
- Buy and sell items for sats
- Message seller
- Cashu integration
Freelancing
SatShoot
- Post problems on SatShoot
- Make money solving problems as a Freelancer
- Share problems or freelance services on your feed
- Bidding system for Clients to choose the best Offer
- Chat in DMs
- Post Reviews on Freelancers or Clients
- Build Reputation
- Public Zaps as Payments
- Use your Web of Trust to keep scammers away
Media
Slidestr
- Compact media browsing
- Images and videos
- Full screen media
Meatspace
Yondar
- Add places to a map
- See places by your friends or follows
Streaming
zap.stream
- Start livestream via zap.stream or Cloudflare
- Watch other livestreams
- Chat
- Custom emojis
- Zap streamers in real time
- Zap chat participants in real time
- Set up stream goals
-
@ 266815e0:6cd408a5
2025-04-15 06:58:14Its been a little over a year since NIP-90 was written and merged into the nips repo and its been a communication mess.
Every DVM implementation expects the inputs in slightly different formats, returns the results in mostly the same format and there are very few DVM actually running.
NIP-90 is overloaded
Why does a request for text translation and creating bitcoin OP_RETURNs share the same input
i
tag? and why is there anoutput
tag on requests when only one of them will return an output?Each DVM request kind is for requesting completely different types of compute with diffrent input and output requirements, but they are all using the same spec that has 4 different types of inputs (
text
,url
,event
,job
) and an undefined number ofoutput
types.Let me show a few random DVM requests and responses I found on
wss://relay.damus.io
to demonstrate what I mean:This is a request to translate an event to English
json { "kind": 5002, "content": "", "tags": [ // NIP-90 says there can be multiple inputs, so how would a DVM handle translatting multiple events at once? [ "i", "<event-id>", "event" ], [ "param", "language", "en" ], // What other type of output would text translations be? image/jpeg? [ "output", "text/plain" ], // Do we really need to define relays? cant the DVM respond on the relays it saw the request on? [ "relays", "wss://relay.unknown.cloud/", "wss://nos.lol/" ] ] }
This is a request to generate text using an LLM model
json { "kind": 5050, // Why is the content empty? wouldn't it be better to have the prompt in the content? "content": "", "tags": [ // Why use an indexable tag? are we ever going to lookup prompts? // Also the type "prompt" isn't in NIP-90, this should probably be "text" [ "i", "What is the capital of France?", "prompt" ], [ "p", "c4878054cff877f694f5abecf18c7450f4b6fdf59e3e9cb3e6505a93c4577db2" ], [ "relays", "wss://relay.primal.net" ] ] }
This is a request for content recommendation
json { "kind": 5300, "content": "", "tags": [ // Its fine ignoring this param, but what if the client actually needs exactly 200 "results" [ "param", "max_results", "200" ], // The spec never mentions requesting content for other users. // If a DVM didn't understand this and responded to this request it would provide bad data [ "param", "user", "b22b06b051fd5232966a9344a634d956c3dc33a7f5ecdcad9ed11ddc4120a7f2" ], [ "relays", "wss://relay.primal.net", ], [ "p", "ceb7e7d688e8a704794d5662acb6f18c2455df7481833dd6c384b65252455a95" ] ] }
This is a request to create a OP_RETURN message on bitcoin
json { "kind": 5901, // Again why is the content empty when we are sending human readable text? "content": "", "tags": [ // and again, using an indexable tag on an input that will never need to be looked up ["i", "09/01/24 SEC Chairman on the brink of second ETF approval", "text"] ] }
My point isn't that these event schema's aren't understandable but why are they using the same schema? each use-case is different but are they all required to use the same
i
tag format as input and could support all 4 types of inputs.Lack of libraries
With all these different types of inputs, params, and outputs its verify difficult if not impossible to build libraries for DVMs
If a simple text translation request can have an
event
ortext
as inputs, apayment-required
status at any point in the flow, partial results, or responses from 10+ DVMs whats the best way to build a translation library for other nostr clients to use?And how do I build a DVM framework for the server side that can handle multiple inputs of all four types (
url
,text
,event
,job
) and clients are sending all the requests in slightly differently.Supporting payments is impossible
The way NIP-90 is written there isn't much details about payments. only a
payment-required
status and a genericamount
tagBut the way things are now every DVM is implementing payments differently. some send a bolt11 invoice, some expect the client to NIP-57 zap the request event (or maybe the status event), and some even ask for a subscription. and we haven't even started implementing NIP-61 nut zaps or cashu A few are even formatting the
amount
number wrong or denominating it in sats and not mili-satsBuilding a client or a library that can understand and handle all of these payment methods is very difficult. for the DVM server side its worse. A DVM server presumably needs to support all 4+ types of payments if they want to get the most sats for their services and support the most clients.
All of this is made even more complicated by the fact that a DVM can ask for payment at any point during the job process. this makes sense for some types of compute, but for others like translations or user recommendation / search it just makes things even more complicated.
For example, If a client wanted to implement a timeline page that showed the notes of all the pubkeys on a recommended list. what would they do when the selected DVM asks for payment at the start of the job? or at the end? or worse, only provides half the pubkeys and asks for payment for the other half. building a UI that could handle even just two of these possibilities is complicated.
NIP-89 is being abused
NIP-89 is "Recommended Application Handlers" and the way its describe in the nips repo is
a way to discover applications that can handle unknown event-kinds
Not "a way to discover everything"
If I wanted to build an application discovery app to show all the apps that your contacts use and let you discover new apps then it would have to filter out ALL the DVM advertisement events. and that's not just for making requests from relays
If the app shows the user their list of "recommended applications" then it either has to understand that everything in the 5xxx kind range is a DVM and to show that is its own category or show a bunch of unknown "favorites" in the list which might be confusing for the user.
In conclusion
My point in writing this article isn't that the DVMs implementations so far don't work, but that they will never work well because the spec is too broad. even with only a few DVMs running we have already lost interoperability.
I don't want to be completely negative though because some things have worked. the "DVM feeds" work, although they are limited to a single page of results. text / event translations also work well and kind
5970
Event PoW delegation could be cool. but if we want interoperability, we are going to need to change a few things with NIP-90I don't think we can (or should) abandon NIP-90 entirely but it would be good to break it up into small NIPs or specs. break each "kind" of DVM request out into its own spec with its own definitions for expected inputs, outputs and flow.
Then if we have simple, clean definitions for each kind of compute we want to distribute. we might actually see markets and services being built and used.
-
@ fd06f542:8d6d54cd
2025-04-15 06:35:56 -
@ c1e9ab3a:9cb56b43
2025-04-15 04:55:49Esteemed representatives of Risa,
We gather here under the calming glow of our twin suns, stewards of a society admired for its peace and celebrated for its tranquility. But we must not mistake serenity for passivity, nor confuse peace with weakness. Our peace is not an accident. It is not the byproduct of ignorance or naivety. It is hard-earned—preserved by those willing to stand vigilant in its defense.
Love as a Foundation, Strength as a Shield
Love conquers hate. This is the core truth of Risan philosophy. Yet, as every Ricin child is taught, love without strength is a leaf in the wind. The Ricin do not lay down their lives without resistance. We do not ask our people to accept violence without confronting it. True peace is not imposed by stripping the people of their agency—it is built by enabling them to protect it.
The Lessons of a Failed Experiment
There was a time, not so distant in our history, when we attempted to enforce peace through the abolition of all weapons. A time when even the mention of self-defense in our educational centers was met with rebuke. Schools purged training programs. Cultural arts that honored our warrior traditions were dismissed. And for a brief moment, we believed this would lead us to harmony.
But peace born from helplessness is a fragile illusion. It fractures under the slightest pressure. And fracture it did—when off-world raiders targeted our unguarded sanctuaries, when radical sects within our own society struck out, knowing the citizenry could not defend itself. It was then that we remembered: Risa’s greatest peacekeepers had always been those who knew how to fight—but chose restraint.
The Age of Ricin and the Reawakening of Discipline
So we returned to our roots. To the traditions of the Age of Ricin, when youth, upon reaching maturity, were taught not only the arts of compassion and creation but also the martial disciplines. They learn to wield weapons—not to glorify violence, but to understand it. To control it. To stand firm against it when all else fails.
https://i.nostr.build/kuUjRovISz7367TX.jpg
We do not romanticize war. We do not celebrate conflict. But we prepare for it, should it seek to extinguish our light. Our children now learn the disciplines of defense alongside their studies in poetry, music, and healing. They spar with blunt blades under the watchful eyes of masters. They meditate on the consequences of force. And they grow into citizens not easily provoked, but never unprepared.
A Call for Balance, Not Extremes
Let those beyond our borders question our ways. Let them forget the countless incursions by the Romulans. Let them ignore the scars left by centuries of subversion from the Orion Syndicate. We do not forget. We remember the lives lost, the liberties challenged, and the lessons learned through suffering. These experiences shaped us.
We do not wish to return to the era of soft silence, when teachers trembled at the word "weapon" and children were told that even imagination was dangerous. That was not enlightenment. That was indoctrination.
Conclusion: Guarding the Flame
We are the guardians of Risa’s flame—not just with words and treaties, but with discipline and readiness. We have made peace a practice, and preparation a virtue. And so I say to this chamber: let us never again disarm our people in the name of utopia. Let us never confuse comfort with safety, or the absence of weapons with the presence of peace.
Instead, let us raise generations who know what peace costs, and who will pay that price—not with surrender, but with courage.
Let our children be artists, lovers, dreamers—and if necessary, defenders.
This is the Risan way.
-
@ c1e9ab3a:9cb56b43
2025-04-15 04:15:58Spoken by Counselor Elaron T’Saren of Risa to the High Council, Stardate 52874.2
Honored members of the Council,
I bring you greetings from Risa—not the Risa of travel brochures and romantic holo-novels, but the true Risa. The Risa that has endured, adapted, and emerged stronger after each trial. I speak not as a tourist ambassador, but as a Counselor of our oldest institute of philosophy, and as a son of the Ricin tradition.
Today, the specter of the Borg hangs above us. The collective offers no room for diplomacy, no respect for culture, no compromise. We face not mere invaders—but a force that seeks to erase individuality, history, and identity. Some among the Council wonder what Risa—a world of peace—can offer in such a time. I say to you: we can offer the truth about peace.
The Hidden Roots of Our Tranquility
Long ago, before Risa joined the Federation, we too believed that peace could be maintained by disarming the populace, by eliminating even the mention of conflict in our schools. It was called the Great Disarmament. A generation was raised with no understanding of defense, and in time, we paid the price.
We were raided by Orion pirates. Exploited by off-world cartels. Our people were taken, our arts destroyed, our skies blackened. And we learned—too late—that peace without preparedness is only the illusion of safety.
The Birth of Ricin Doctrine
From the ashes of that failure arose the Ricin: scholars, philosophers, warriors of thought and purpose. They taught that peace is not the absence of conflict, but the mastery of it. That the mind and the body must be trained in tandem. That love without strength is a leaf in the wind.
We did not become a militant world. We became a watchful one. Our children were taught martial discipline—not to glorify violence, but to understand it, to confront it, and to defeat it when necessary. They learned meditation alongside hand-to-hand technique, negotiation beside tactical reasoning.
When we joined the Federation, we did so willingly. But let none assume we surrendered our right to defend our way of life.
Why I Speak to You Now
The Borg are not like the Orion Syndicate. They are not opportunistic, or ideological. They are methodical. And they are coming. You cannot debate with them. You cannot delay them. You can only prepare for them.
And yet, I hear murmurs within the halls of the Federation: whispers of abandoning planetary defense training, of downplaying the psychological need for individual and planetary preparedness. I hear the tired lie that “peace will protect us.”
No, Councilors. It is discipline that protects peace.
The Call to Action
I do not come bearing weapons. I come bearing wisdom. Let us take the Risan lesson and apply it across the Federation. Reestablish tactical readiness training in civilian schools. Encourage planetary governments to integrate defense and philosophy, not as contradictions, but as complements.
Let every child of the Federation grow up knowing not just the principles of liberty, but the means to defend them. Let every artist, scientist, and healer stand ready to protect the civilization they help to build.
Let us not wait until the Borg are in our orbit to remember what we must become.
Conclusion
The Borg seek to erase our uniqueness. Let us show them that the Federation is not a fragile collection of planets—but a constellation of cultures bound by a shared resolve.
We do not choose war. But neither do we flee from it.
We are the guardians of Risa’s flame—and we offer our light to the stars.
Thank you.
-
@ 0b118e40:4edc09cb
2025-04-15 03:50:32TL;DR : No.
(This is not a feasibility analysis, but a reflection on philosophical alignment with Bitcoin’s vision).
The moment stablecoins or national currencies gain traction in Bitcoin LN, you can forget about Bitcoin’s position as a purely decentralized medium of exchange. Bitcoin’s position will be undermined.
A Bitcoin-native global economy, where people and businesses transact directly in Bitcoin, is what aligns with its original purpose. This is what we should aim for. This is all we should aim for.
I used to believe stablecoins might help with on/off ramps. But the truth is, if Bitcoin is to function as a true currency, broader global adoption that bypasses traditional financial systems will make those ramps irrelevant.
Eventually, two camps will emerge. One will try to preserve Bitcoin’s purity as a currency. The other will push for everything else in the name of Bitcoin: store-of-value narratives, ETFs, stablecoin collaborations, tokens, pump and dumps, NFTs, and centralized workarounds.
Currency domination, especially by the USD, has long contributed to poverty in the Global South. It deepens inequality and worsens debt burdens. During the Tequila Crisis and the Asian Financial Crisis, countries like Mexico and regions like Southeast Asia suffered massive currency devaluations and defaults because of their dependence on the USD. Every time the US raises interest rates, developing nations experience capital flight, currency drops, and economic hardship. This is not ancient history. It has been happening in the last two years and continues to widen the poverty gap. And as always, it is the poor who suffer the most.
What does this have to do with stablecoins? Stablecoin is your fiat 2.0.
USDT is just currency domination through blockchain. It is pegged to the USD, and if it rides Bitcoin’s Lightning rails, it risks keeping users transacting in USD rather than in Bitcoin itself. That not only undermines Bitcoin’s core purpose, it risks making Bitcoin appear like it is taking sides in the fragile and invisible global currency war.
To counter, people will say “Let all stablecoins come. Peg them to any currency.” But what’s the point of Bitcoin then? To become the new logistics layer for fiat 2.0?
That is not progress. That is regress. It is inviting the very systems Bitcoin was built to disrupt back into the ecosystem.
I believe when you use stablecoins this way, you are not Trojan-horsing Bitcoin into the mainstream. You are letting fiat Trojan-horse its way into Bitcoin. And if you let them in, they will win.
Adding stablecoin into Bitcoin LN is counterproductive to Bitcoin's decentralized ethos.
Bitcoin’s true potential is its ability to provide an alternative to centralized, government-controlled currencies and financial systems. We should stick to the original game plan.
Side note: If you really want to Trojan-horse Bitcoin adoption…
In my country, we have so many mixed races and cross-cultural traditions. During Chinese New Year, if you are married, you give everyone who is not married an “ang pow,” which is money in a red packet. Because we are so deeply integrated, people give money at almost every celebration: Christmas, Eid, Diwali, birthdays, graduations, even funerals.
I recently met up with a friend who just had a baby, and I was more than happy to be the first to give her daughter some Bitcoin. Her first sats. It would not hurt to start giving Bitcoin as gifts. And if someone gets offended that it is not part of their tradition, just get a Bitkey and wrap it up. It is so pretty.
Find more fun and creative ways to spread Bitcoin adoption.
But for goodness’ sake, stop justifying everything else in the name of Bitcoin adoption.
To get a better idea of Fiat 2.0, I mind-mapped Bitcoin on macroeconomy on my scratchpad.
If you take a closer look, it might help you answer a few key questions:
-
Do you want more or less government control over money?
-
Are you a fan of central banks? Then you probably prefer stablecoins.
-
-
@ fd06f542:8d6d54cd
2025-04-15 02:57:28国内开发者作品展
jumble.social
作品: https://jumble.social/ 其他作品 : Running [ wss://nostr-relay.app ] (free & WoT) 💜⚡️ Building 👨💻: https://github.com/CodyTseng/jumble https://github.com/CodyTseng/nostr-relay-tray https://github.com/CodyTseng/danmakustr https://github.com/CodyTseng/nostr-relay-nestjs https://github.com/CodyTseng/nostr-relay https://github.com/CodyTseng
nostrbook.com
作品: https://nostrbook.com - NostrBridge, 网桥转发 - TaskQ5, 分布式多任务 - NostrHTTP, nostr to http - Postr, 匿名交友,匿名邮局 - nostrclient (Python client) . -nostrbook, (nostrbook.com) 用nostr在线写书 https://www.duozhutuan.com nostrhttp demo https://github.com/duozhutuan/NostrBridge
nostrmo
A nostr dev.
Nostrmo A client support all platform.
Nowser A nostr signing project.
CacheRelay A nostr cache relay peject.
cfrelay A nostr relay base on cloudflare wokers.
A nostr note timing send service. https://sendbox.nostrmo.com/ https://github.com/haorendashu/nostrmo
0xchat
作者: wcat w783@0xchat.com
www.0xchat.com Building for 0xchat
www.0xchat.com Secure Chat built on Nostr App Store: https://apps.apple.com/app/0xchat/id1637607169 TestFlight: https://testflight.apple.com/join/AjdJFBmU Google play: https://play.google.com/store/apps/details?id=com.oxchat.nostr
https://github.com/nostr-zh/awesome-nostr-zh/blob/main/README.md
awesome-nostr-zh
由中文开发者创建的软件、服务、工具和其他资源的集合。
Nostr (Notes and Other Stuff Transmitted by Relays) 是一个简单、开放的协议,用于创建抗审查的全球社交网络。
客户端
- 0xchat - 一个类似于 Telegram/WeChat 的 Nostr 客户端,支持 Android、iOS、macOS、Windows 和 Linux。
#移动端
#聊天
- Flycat - 一个 2000 年代老式风格的网页客户端,支持在 Nostr 上写博客。
#网页端
- Jumble - 一个交互友好的 Nostr 客户端,专注于中继器浏览和发现。
#网页端
- Nostrmo - 一个 Flutter 开发的 Nostr 客户端,支持 Android、iOS、macOS、Windows、Web 和 Linux。
#移动端
#桌面端
中继器
- wss://relay.nostr.moe - Nostr.moe 社区中继 (需要注册)。
#ACG
- wss://nostr-relay.app - 一个用于测试的普通的免费的公共 Nostr 中继器。
中继器实现
- nostr-relay-tray - 一个非开发者也能轻松运行的桌面端 Nostr 中继器,支持 Windows、macOS 和 Linux。
库
- nostr-relay - 一个开发中继器的 TypeScript 框架。
- cashu-dart - 一个用dart语言实现cashu协议的库。
- nostr-dart - 一个用dart语言实现nostr协议的库。
- nostrclient - Python 编写的 Nostr 客户端库。
#Python
#客户端开发
机器人
- 日本語JLPT文法 - 每小时自动发送一条日语文法,包含文法,日文例句及中文翻译。。
工具
- danmakustr - 一款通过 Nostr 实现去中心化的 YouTube 弹幕插件。
#浏览器插件
- nowser - 一个安全的 Nostr 密钥管理和签名应用,支持 iOS 和 Android,支持 NIP-07、NIP-46 和 NIP-55。
#移动端
#签名器
- pigeon - 一个 Nostr 中继器反向代理服务,可以将本地中继器暴露到公共互联网上,已经集成进 nostr-relay-tray。
教程和资源
- 欢迎加入 Nostr, 这是一份快速入门指南
- nostrbook 在线写书平台 - 提供在线写书功能的平台。
#在线写作
#内容创作
贡献指南
欢迎提交 PR 来完善这个列表!请确保您的提交符合以下要求:
- 项目与 Nostr 相关
- 项目由中文开发者开发或中文社区运营
- 保持分类的一致性和清晰性
详细的贡献指南请查看 CONTRIBUTING.md。
许可证
本作品采用 CC0 1.0 通用 许可协议。
- 0xchat - 一个类似于 Telegram/WeChat 的 Nostr 客户端,支持 Android、iOS、macOS、Windows 和 Linux。
-
@ fd06f542:8d6d54cd
2025-04-15 02:38:14排名随机, 列表正在增加中。
Cody Tseng
jumble.social 的作者
https://jumble.social/users/npub1syjmjy0dp62dhccq3g97fr87tngvpvzey08llyt6ul58m2zqpzps9wf6wl
- Running [ wss://nostr-relay.app ] (free & WoT) 💜⚡️
- Building 👨💻:
- https://github.com/CodyTseng/jumble
- https://github.com/CodyTseng/nostr-relay-tray
- https://github.com/CodyTseng/danmakustr
- https://github.com/CodyTseng/nostr-relay-nestjs
- https://github.com/CodyTseng/nostr-relay
- https://github.com/CodyTseng
阿甘
- @agan0
- 0xchat.com
- canidae40@coinos.io
- https://jumble.social/users/npub13zyg3zysfylqc6nwfgj2uvce5rtlck2u50vwtjhpn92wzyusprfsdl2rce
joomaen
- Follows you
- joomaen.com
-
95aebd@wallet.yakihonne.com
-
nobot
- https://joomaen.filegear-sg.me/
- https://jumble.social/users/npub1wlpfd84ymdx2rpvnqht7h2lkq5lazvkaejywrvtchlvn3geulfgqp74qq0
颜值精选官
- wasp@ok0.org
- 专注分享 各类 图片与视频,每日为你带来颜值盛宴,心动不止一点点。欢迎关注,一起发现更多美好!
- https://jumble.social/users/npub1d5ygkef6r0l7w29ek9l9c7hulsvdshms2qh74jp5qpfyad4g6h5s4ap6lz
6svjszwk
- 6svjszwk@ok0.org
- 83vEfErLivtS9to39i73ETeaPkCF5ejQFbExoM5Vc2FDLqSE5Ah6NbqN6JaWPQbMeJh2muDiHPEDjboCVFYkHk4dHitivVi
-
low-time-preference
-
anarcho-capitalism
-
libertarianism
-
bitcoin #monero
- https://jumble.social/users/npub1sxgnpqfyd5vjexj4j5tsgfc826ezyz2ywze3w8jchd0rcshw3k6svjszwk
𝘌𝘷𝘦𝘳𝘺𝘥𝘢𝘺 𝘔𝘰𝘳𝘯𝘪𝘯𝘨 𝘚𝘵𝘢𝘳
- everyday@iris.to
- 虽然现在对某些事情下结论还为时尚早,但是从趋势来看,邪恶抬头已经不可避免。
- 我们要做的就是坚持内心的那一份良知,与邪恶战斗到底。
- 黑暗森林时代,当好小透明。
- bc1q7tuckqhkwf4vgc64rsy3rxy5qy6pmdrgxewcww
- https://jumble.social/users/npub1j2pha2chpr0qsmj2f6w783200upa7dvqnnard7vn9l8tv86m7twqszmnke
nostr_cn_dev
npub1l5r02s4udsr28xypsyx7j9lxchf80ha4z6y6269d0da9frtd2nxsvum9jm@npub.cash
Developed the following products: - NostrBridge, 网桥转发 - TaskQ5, 分布式多任务 - NostrHTTP, nostr to http - Postr, 匿名交友,匿名邮局 - nostrclient (Python client) . -nostrbook, (nostrbook.com) 用nostr在线写书 * https://www.duozhutuan.com nostrhttp demo * https://github.com/duozhutuan/NostrBridge * * https://jumble.social/users/npub1l5r02s4udsr28xypsyx7j9lxchf80ha4z6y6269d0da9frtd2nxsvum9jm *
CXPLAY
- lightning@cxplay.org
- 😉很高兴遇到你, 你可以叫我 CX 或 CXPLAY, 这个名字没有特殊含义, 无需在意.
- ©本账号下所有内容如未经特殊声明均使用 CC BY-NC-SA 4.0 许可协议授权.
- 🌐如果您在 Fediverse 收到本账号的内容则说明您的实例已与 Mostr.pub 或 Momostr.pink Bridge 互联, 您所看到的账号为镜像, 所有账号内容正在跨网传递. 如有必要请检查原始页面.
- 🧑💻正在提供中文本地化(i10n): #Amethyst #Amber #Citrine #Soapbox #Ditto #Alby
- https://cx.ms/
https://jumble.social/users/npub1gd8e0xfkylc7v8c5a6hkpj4gelwwcy99jt90lqjseqjj2t253s2s6ch58h
w
- 0xchat的作者
- 0xchat@getalby.com
- Building for 0xchat
- https://www.0xchat.com/
- https://jumble.social/users/npub10td4yrp6cl9kmjp9x5yd7r8pm96a5j07lk5mtj2kw39qf8frpt8qm9x2wl
Michael
- highman@blink.sv
- Composer Artist | Musician
- 🎹🎼🎤🏸🏝️🐕❤️
- 在這裡可以看到「我看世界」的樣子
- 他是光良
- https://jumble.social/users/npub1kr5vqlelt8l47s2z0l47z4myqg897m04vrnaqks3emwryca3al7sv83ry3
-
@ 502ab02a:a2860397
2025-04-15 02:12:45หลังจากเราดูเรื่อง UPOV กันไปแล้ว วันนี้เรามาดูกันครับว่า ผู้ที่ต่อต้าน เจออะไรกันบ้าง
ในหลายประเทศทั่วโลก เสียงของเกษตรกรรายย่อยที่เคยเงียบงัน กำลังดังขึ้นท่ามกลางการรุกคืบของข้อตกลงระหว่างประเทศที่พยายามกีดกันสิทธิการใช้เมล็ดพันธุ์แบบดั้งเดิมของพวกเขา การก้าวเข้ามาของ UPOV 1991 ไม่ต่างอะไรกับการเขียนกฎหมายใหม่ให้บริษัทข้ามชาติมีสิทธิ “จดทะเบียน” พันธุ์พืชที่เคยเป็นสมบัติสาธารณะ แล้วเรียกร้องค่าลิขสิทธิ์จากเกษตรกรแม้จะปลูกเพื่อกินเองก็ตาม
แต่โลกนี้ไม่ได้เงียบ…
กรณีศึกษา อินเดีย หนึ่งในเสียงชัดเจนที่สุดมาจากดร.วันดานา ชิวา (Vandana Shiva) นักฟิสิกส์และนักเคลื่อนไหวด้านสิ่งแวดล้อมในอินเดีย ผู้ก่อตั้งองค์กร Navdanya ซึ่งมีภารกิจหลักในการปกป้องเมล็ดพันธุ์พื้นบ้านและเกษตรกรรมแบบยั่งยืน
Navdanya สร้างธนาคารเมล็ดพันธุ์ของตัวเอง โดยไม่ยอมรับระบบ UPOV ใด ๆ เลย องค์กรนี้ทำงานร่วมกับชุมชนพื้นเมืองทั่วอินเดียเพื่อเก็บเมล็ดพันธุ์ดั้งเดิมมากกว่า 2,000 สายพันธุ์ พร้อมกับปลูกฝังแนวคิดว่า “เมล็ดพันธุ์ไม่ใช่สินค้า แต่เป็นชีวิต”
อินเดียเอง แม้จะมีแรงกดดันจากการเจรจาทางการค้าระหว่างประเทศ แต่ก็ยังไม่ยอมรับ UPOV 1991 อย่างเป็นทางการ พวกเขาเลือกเขียนกฎหมายของตนเองชื่อว่า The Protection of Plant Varieties and Farmers' Rights Act, 2001 ซึ่งกล้าหาญมาก เพราะเป็นกฎหมายที่คุ้มครอง “สิทธิของเกษตรกร” เคียงคู่ไปกับ “สิทธิของนักปรับปรุงพันธุ์” โดยยืนยันว่า เกษตรกรมีสิทธิในการบันทึก เก็บ ใช้ แลกเปลี่ยน และขายเมล็ดพันธุ์ของตนเอง โดยไม่ต้องขออนุญาตจากใคร ผลคืออะไร? แรงกดดันจากต่างประเทศมาเต็ม โดยเฉพาะจากยุโรปและสหรัฐฯ ที่หวังให้อินเดีย “อัปเกรด” เข้าสู่ UPOV 1991 ให้ได้ เพราะจะทำให้บริษัทเมล็ดยักษ์ใหญ่สามารถเข้ามาจดทะเบียนพันธุ์พืชในอินเดียและเรียกร้องค่าลิขสิทธิ์ได้ แต่รัฐบาลอินเดียยังยืนหยัด ด้วยเหตุผลว่า “การให้สิทธิเฉพาะผู้ถือพันธุ์พืชเชิงพาณิชย์คือการทำลายฐานเกษตรกรรมพื้นบ้านทั้งหมด” แถมยังใช้ Navdanya Network ที่เก็บพันธุกรรมพื้นบ้านทั่วประเทศเป็นโล่กันอีกชั้น
เอธิโอเปีย เอธิโอเปียเป็นประเทศที่มีความหลากหลายทางชีวภาพสูงมาก โดยเฉพาะพืชอาหารท้องถิ่นอย่าง Teff (เทฟ) ที่ใช้ทำขนมปัง Injera อันเป็นหัวใจของวัฒนธรรมอาหารเอธิโอเปีย บริษัทสัญชาติดัตช์เคยพยายามจดสิทธิบัตรในยุโรปว่าเป็นเจ้าของพันธุ์เทฟ และเอธิโอเปียต้องจ่ายค่าลิขสิทธิ์ถ้าจะส่งออก สิ่งที่เกิดขึ้นคือการตอบโต้จากฝั่งเอธิโอเปียและชาวแอฟริกันใต้ว่า “คุณจะเป็นเจ้าของพันธุ์พืชที่เราใช้มาเป็นพันปีได้ยังไง?” การเคลื่อนไหวนี้รุนแรงถึงขั้นมีการฟ้องร้องและถอนสิทธิบัตรออกจากหลายประเทศในยุโรป รัฐบาลเอธิโอเปียจึงเลือกไม่เข้าร่วม UPOV 1991 โดยเด็ดขาด และประกาศให้ Teff เป็น "ทรัพยากรของแผ่นดิน" ใครก็เอาไปจดสิทธิไม่ได้
อิหร่าน อิหร่านเป็นหนึ่งในประเทศที่ปฏิเสธการเข้าเป็นสมาชิก UPOV ทุกฉบับอย่างสิ้นเชิง พวกเขาเลือกปกป้องความมั่นคงด้านอาหารของตนเองโดยการสร้างระบบเก็บเมล็ดพันธุ์ชุมชนทั่วประเทศ และไม่ยอมให้บริษัทข้ามชาติเข้าครอบงำระบบเกษตรกรรม
อาร์เจนตินา แม้อาร์เจนตินาจะอนุญาตให้ใช้ GMO บางประเภท แต่พวกเขากลับยังไม่เข้าร่วม UPOV 1991 เพราะชาวนาอาร์เจนตินาหลายล้านรายออกมาคัดค้านหนักมาก ประเด็นหลักคือ “Seed Saving” หรือการเก็บเมล็ดพันธุ์ไว้ปลูกเอง ซึ่งถือเป็นสิ่งจำเป็นสำหรับเกษตรกรรายย่อย หากเข้าร่วม UPOV 1991 เมื่อใด การกระทำเช่นนี้อาจถือว่าผิดกฎหมาย รัฐบาลอาร์เจนตินาจึงเลือกเดินทางสายกลาง โดยให้ชาวนารายย่อยยังมีสิทธิพื้นฐานในการเก็บเมล็ดไว้ปลูกต่อได้โดยไม่ต้องจ่ายค่าลิขสิทธิ์ แม้จะมีแรงกดดันจาก Monsanto และ Dow Chemical ก็ตาม
เสียงเล็กๆ ที่รวมกันเป็นพายุ ในหลายประเทศในแอฟริกา ละตินอเมริกา และเอเชียตะวันออกเฉียงใต้ ขบวนการคัดค้าน UPOV 1991 กำลังขยายตัว แม้เสียงจะยังไม่ดังเท่าบริษัทข้ามชาติ แต่ก็เริ่มส่งผลชัดเจนในเชิงนโยบาย หลายประเทศกำลังทบทวนข้อเสนอ FTA ใหม่ โดยใส่เงื่อนไขการปกป้องสิทธิของเกษตรกรรายย่อยเป็นหัวใจหลัก
ประเทศที่ปฏิเสธ UPOV 1991 มักโดนกดดันผ่าน “เข็มฉีดยาทางการค้า” ไม่ว่าจะเป็นเงื่อนไขใน FTA, การกีดกันทางภาษี หรือแม้แต่ถูกลดเครดิตในเวทีโลก เช่น - สหภาพยุโรปมักใส่เงื่อนไขให้ประเทศคู่เจรจา FTA ต้อง “ปรับปรุงกฎหมายให้สอดคล้องกับ UPOV 1991” เสมอ - องค์การทรัพย์สินทางปัญญาโลก (WIPO) ก็เป็นกระบอกเสียงสำคัญที่กดดันให้ประเทศต่าง ๆ เข้า UPOV เพื่อ “สร้างบรรยากาศการลงทุนที่ดี”
การไม่ยอมเข้า UPOV มักถูกตีความว่าเป็น “ความเสี่ยงทางเศรษฐกิจ” แต่จริง ๆ แล้วมันคือ การเลือกปกป้องฐานรากของประเทศตนเอง ต่างหาก
นี่คือยุคที่ผู้คนเริ่มตั้งคำถามว่า… ทำไมเมล็ดพันธุ์ต้องถูกจดลิขสิทธิ์? ใครกันแน่ที่ควรมีสิทธิต่อเมล็ดพันธุ์ คนที่ปลูกมันมาเป็นร้อยปี หรือบริษัทที่ใส่ชื่อบนฉลาก?
ในศตวรรษที่ 21 ที่เต็มไปด้วยเทคโนโลยี พันธุกรรม และ AI ยังมีคนอีกมากที่ยืนอยู่บนผืนดิน และหว่านเมล็ดด้วยมือของพวกเขาเอง โดยหวังว่าอาหารบนโต๊ะจะยังคงเป็นผลผลิตจากผืนแผ่นดิน ไม่ใช่จากใบอนุญาต
และนี่แหละคือสงครามที่แท้จริง สงครามของเมล็ดพันธุ์ และสิทธิในการกินอาหารที่ “ไม่ได้ถูกจดทะเบียนโดยใครสักคน” #pirateketo #กูต้องรู้มั๊ย #ม้วนหางสิลูก
-
@ fd06f542:8d6d54cd
2025-04-15 01:31:41NIP-15
Nostr Marketplace
draft
optional
Based on Diagon-Alley.
Implemented in NostrMarket and Plebeian Market.
Terms
merchant
- seller of products with NOSTR key-paircustomer
- buyer of products with NOSTR key-pairproduct
- item for sale by themerchant
stall
- list of products controlled bymerchant
(amerchant
can have multiple stalls)marketplace
- clientside software for searchingstalls
and purchasingproducts
Nostr Marketplace Clients
Merchant admin
Where the
merchant
creates, updates and deletesstalls
andproducts
, as well as where they manage sales, payments and communication withcustomers
.The
merchant
admin software can be purely clientside, but forconvenience
and uptime, implementations will likely have a server client listening for NOSTR events.Marketplace
Marketplace
software should be entirely clientside, either as a stand-alone app, or as a purely frontend webpage. Acustomer
subscribes to different merchant NOSTR public keys, and thosemerchants
stalls
andproducts
become listed and searchable. The marketplace client is like any other ecommerce site, with basket and checkout.Marketplaces
may also wish to include acustomer
support area for direct message communication withmerchants
.Merchant
publishing/updating products (event)A merchant can publish these events:
| Kind | | Description | | --------- | ------------------ | --------------------------------------------------------------------------------------------------------------- | |
0
|set_meta
| The merchant description (similar with anynostr
public key). | |30017
|set_stall
| Create or update a stall. | |30018
|set_product
| Create or update a product. | |4
|direct_message
| Communicate with the customer. The messages can be plain-text or JSON. | |5
|delete
| Delete a product or a stall. |Event
30017
: Create or update a stall.Event Content
json { "id": <string, id generated by the merchant. Sequential IDs (`0`, `1`, `2`...) are discouraged>, "name": <string, stall name>, "description": <string (optional), stall description>, "currency": <string, currency used>, "shipping": [ { "id": <string, id of the shipping zone, generated by the merchant>, "name": <string (optional), zone name>, "cost": <float, base cost for shipping. The currency is defined at the stall level>, "regions": [<string, regions included in this zone>] } ] }
Fields that are not self-explanatory: -
shipping
: - an array with possible shipping zones for this stall. - the customer MUST choose exactly one of those shipping zones. - shipping to different zones can have different costs. For some goods (digital for example) the cost can be zero. - theid
is an internal value used by the merchant. This value must be sent back as the customer selection. - each shipping zone contains the base cost for orders made to that shipping zone, but a specific shipping cost per product can also be specified if the shipping cost for that product is higher than what's specified by the base cost.Event Tags
jsonc { "tags": [["d", <string, id of stall]], // other fields... }
- thed
tag is required, its value MUST be the same as the stallid
.Event
30018
: Create or update a productEvent Content
json { "id": <string, id generated by the merchant (sequential ids are discouraged)>, "stall_id": <string, id of the stall to which this product belong to>, "name": <string, product name>, "description": <string (optional), product description>, "images": <[string], array of image URLs, optional>, "currency": <string, currency used>, "price": <float, cost of product>, "quantity": <int or null, available items>, "specs": [ [<string, spec key>, <string, spec value>] ], "shipping": [ { "id": <string, id of the shipping zone (must match one of the zones defined for the stall)>, "cost": <float, extra cost for shipping. The currency is defined at the stall level> } ] }
Fields that are not self-explanatory: -
quantity
can be null in the case of items with unlimited availability, like digital items, or services -specs
: - an optional array of key pair values. It allows for the Customer UI to present product specifications in a structure mode. It also allows comparison between products - eg:[["operating_system", "Android 12.0"], ["screen_size", "6.4 inches"], ["connector_type", "USB Type C"]]
_Open_: better to move `spec` in the `tags` section of the event?
shipping
:- an optional array of extra costs to be used per shipping zone, only for products that require special shipping costs to be added to the base shipping cost defined in the stall
- the
id
should match the id of the shipping zone, as defined in theshipping
field of the stall - to calculate the total cost of shipping for an order, the user will choose a shipping option during checkout, and then the client must consider this costs:
- the
base cost from the stall
for the chosen shipping option - the result of multiplying the product units by the
shipping costs specified in the product
, if any.
- the
Event Tags
jsonc "tags": [ ["d", <string, id of product], ["t", <string (optional), product category], ["t", <string (optional), product category], // other fields... ], ...
- the
d
tag is required, its value MUST be the same as the productid
. - the
t
tag is as searchable tag, it represents different categories that the product can be part of (food
,fruits
). Multiplet
tags can be present.
Checkout events
All checkout events are sent as JSON strings using NIP-04.
The
merchant
and thecustomer
can exchange JSON messages that represent different actions. EachJSON
messageMUST
have atype
field indicating the what the JSON represents. Possible types:| Message Type | Sent By | Description | |--------------|----------|---------------------| | 0 | Customer | New Order | | 1 | Merchant | Payment Request | | 2 | Merchant | Order Status Update |
Step 1:
customer
order (event)The below JSON goes in content of NIP-04.
```json { "id":
, "type": 0, "name": , "address": , "message": , "contact": { "nostr": <32-bytes hex of a pubkey>, "phone": , "email": }, "items": [ { "product_id": , "quantity": } ], "shipping_id": } ```
Open: is
contact.nostr
required?Step 2:
merchant
request payment (event)Sent back from the merchant for payment. Any payment option is valid that the merchant can check.
The below JSON goes in
content
of NIP-04.payment_options
/type
include:url
URL to a payment page, stripe, paypal, btcpayserver, etcbtc
onchain bitcoin addressln
bitcoin lightning invoicelnurl
bitcoin lnurl-pay
json { "id": <string, id of the order>, "type": 1, "message": <string, message to customer, optional>, "payment_options": [ { "type": <string, option type>, "link": <string, url, btc address, ln invoice, etc> }, { "type": <string, option type>, "link": <string, url, btc address, ln invoice, etc> }, { "type": <string, option type>, "link": <string, url, btc address, ln invoice, etc> } ] }
Step 3:
merchant
verify payment/shipped (event)Once payment has been received and processed.
The below JSON goes in
content
of NIP-04.json { "id": <string, id of the order>, "type": 2, "message": <string, message to customer>, "paid": <bool: has received payment>, "shipped": <bool: has been shipped>, }
Customize Marketplace
Create a customized user experience using the
naddr
from NIP-19. The use ofnaddr
enables easy sharing of marketplace events while incorporating a rich set of metadata. This metadata can include relays, merchant profiles, and more. Subsequently, it allows merchants to be grouped into a market, empowering the market creator to configure the marketplace's user interface and user experience, and share that marketplace. This customization can encompass elements such as market name, description, logo, banner, themes, and even color schemes, offering a tailored and unique marketplace experience.Event
30019
: Create or update marketplace UI/UXEvent Content
jsonc { "name": <string (optional), market name>, "about": <string (optional), market description>, "ui": { "picture": <string (optional), market logo image URL>, "banner": <string (optional), market logo banner URL>, "theme": <string (optional), market theme>, "darkMode": <bool, true/false> }, "merchants": [array of pubkeys (optional)], // other fields... }
This event leverages naddr to enable comprehensive customization and sharing of marketplace configurations, fostering a unique and engaging marketplace environment.
Auctions
Event
30020
: Create or update a product sold as an auctionEvent Content:
json { "id": <String, UUID generated by the merchant. Sequential IDs (`0`, `1`, `2`...) are discouraged>, "stall_id": <String, UUID of the stall to which this product belong to>, "name": <String, product name>, "description": <String (optional), product description>, "images": <[String], array of image URLs, optional>, "starting_bid": <int>, "start_date": <int (optional) UNIX timestamp, date the auction started / will start>, "duration": <int, number of seconds the auction will run for, excluding eventual time extensions that might happen>, "specs": [ [<String, spec key>, <String, spec value>] ], "shipping": [ { "id": <String, UUID of the shipping zone. Must match one of the zones defined for the stall>, "cost": <float, extra cost for shipping. The currency is defined at the stall level> } ] }
[!NOTE] Items sold as an auction are very similar in structure to fixed-price items, with some important differences worth noting.
-
The
start_date
can be set to a date in the future if the auction is scheduled to start on that date, or can be omitted if the start date is unknown/hidden. If the start date is not specified, the auction will have to be edited later to set an actual date. -
The auction runs for an initial number of seconds after the
start_date
, specified byduration
.
Event
1021
: Bidjsonc { "content": <int, amount of sats>, "tags": [["e", <event ID of the auction to bid on>]], // other fields... }
Bids are simply events of kind
1021
with acontent
field specifying the amount, in the currency of the auction. Bids must reference an auction.[!NOTE] Auctions can be edited as many times as desired (they are "addressable events") by the author - even after the start_date, but they cannot be edited after they have received the first bid! This is enforced by the fact that bids reference the event ID of the auction (rather than the product UUID), which changes with every new version of the auctioned product. So a bid is always attached to one "version". Editing the auction after a bid would result in the new product losing the bid!
Event
1022
: Bid confirmationEvent Content:
json { "status": <String, "accepted" | "rejected" | "pending" | "winner">, "message": <String (optional)>, "duration_extended": <int (optional), number of seconds> }
Event Tags:
json "tags": [["e" <event ID of the bid being confirmed>], ["e", <event ID of the auction>]],
Bids should be confirmed by the merchant before being considered as valid by other clients. So clients should subscribe to bid confirmation events (kind
1022
) for every auction that they follow, in addition to the actual bids and should check that the pubkey of the bid confirmation matches the pubkey of the merchant (in addition to checking the signature).The
content
field is a JSON which includes at least astatus
.winner
is how the winning bid is replied to after the auction ends and the winning bid is picked by the merchant.The reasons for which a bid can be marked as
rejected
orpending
are up to the merchant's implementation and configuration - they could be anything from basic validation errors (amount too low) to the bidder being blacklisted or to the bidder lacking sufficient trust, which could lead to the bid being marked aspending
until sufficient verification is performed. The difference between the two is thatpending
bids might get approved after additional steps are taken by the bidder, whereasrejected
bids can not be later approved.An additional
message
field can appear in thecontent
JSON to give further context as of why a bid isrejected
orpending
.Another thing that can happen is - if bids happen very close to the end date of the auction - for the merchant to decide to extend the auction duration for a few more minutes. This is done by passing a
duration_extended
field as part of a bid confirmation, which would contain a number of seconds by which the initial duration is extended. So the actual end date of an auction is alwaysstart_date + duration + (SUM(c.duration_extended) FOR c in all confirmations
.Customer support events
Customer support is handled over whatever communication method was specified. If communicating via nostr, NIP-04 is used.
Additional
Standard data models can be found here
-
@ fd06f542:8d6d54cd
2025-04-15 01:26:59NIP-13
Proof of Work
draft
optional
This NIP defines a way to generate and interpret Proof of Work for nostr notes. Proof of Work (PoW) is a way to add a proof of computational work to a note. This is a bearer proof that all relays and clients can universally validate with a small amount of code. This proof can be used as a means of spam deterrence.
difficulty
is defined to be the number of leading zero bits in theNIP-01
id. For example, an id of000000000e9d97a1ab09fc381030b346cdd7a142ad57e6df0b46dc9bef6c7e2d
has a difficulty of36
with36
leading 0 bits.002f...
is0000 0000 0010 1111...
in binary, which has 10 leading zeroes. Do not forget to count leading zeroes for hex digits <=7
.Mining
To generate PoW for a
NIP-01
note, anonce
tag is used:json {"content": "It's just me mining my own business", "tags": [["nonce", "1", "21"]]}
When mining, the second entry to the nonce tag is updated, and then the id is recalculated (see NIP-01). If the id has the desired number of leading zero bits, the note has been mined. It is recommended to update the
created_at
as well during this process.The third entry to the nonce tag
SHOULD
contain the target difficulty. This allows clients to protect against situations where bulk spammers targeting a lower difficulty get lucky and match a higher difficulty. For example, if you require 40 bits to reply to your thread and see a committed target of 30, you can safely reject it even if the note has 40 bits difficulty. Without a committed target difficulty you could not reject it. Committing to a target difficulty is something all honest miners should be ok with, and clientsMAY
reject a note matching a target difficulty if it is missing a difficulty commitment.Example mined note
json { "id": "000006d8c378af1779d2feebc7603a125d99eca0ccf1085959b307f64e5dd358", "pubkey": "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243", "created_at": 1651794653, "kind": 1, "tags": [ ["nonce", "776797", "20"] ], "content": "It's just me mining my own business", "sig": "284622fc0a3f4f1303455d5175f7ba962a3300d136085b9566801bc2e0699de0c7e31e44c81fb40ad9049173742e904713c3594a1da0fc5d2382a25c11aba977" }
Validating
Here is some reference C code for calculating the difficulty (aka number of leading zero bits) in a nostr event id:
```c int zero_bits(unsigned char b) { int n = 0;
if (b == 0) return 8; while (b >>= 1) n++; return 7-n;
}
/ find the number of leading zero bits in a hash / int count_leading_zero_bits(unsigned char *hash) { int bits, total, i; for (i = 0, total = 0; i < 32; i++) { bits = zero_bits(hash[i]); total += bits; if (bits != 8) break; } return total; } ```
Here is some JavaScript code for doing the same thing:
```javascript // hex should be a hexadecimal string (with no 0x prefix) function countLeadingZeroes(hex) { let count = 0;
for (let i = 0; i < hex.length; i++) { const nibble = parseInt(hex[i], 16); if (nibble === 0) { count += 4; } else { count += Math.clz32(nibble) - 28; break; } }
return count; } ```
Delegated Proof of Work
Since the
NIP-01
note id does not commit to any signature, PoW can be outsourced to PoW providers, perhaps for a fee. This provides a way for clients to get their messages out to PoW-restricted relays without having to do any work themselves, which is useful for energy-constrained devices like mobile phones. -
@ fd06f542:8d6d54cd
2025-04-15 01:26:23 -
@ fd06f542:8d6d54cd
2025-04-15 01:23:32- 第三章、NIP-03: OpenTimestamps Attestations for Events
- 第四章、NIP-04: Encrypted Direct Message
- 第五章、NIP-05: Mapping Nostr keys to DNS-based internet identifiers
- 第六章、NIP-06: Basic key derivation from mnemonic seed phrase
- 第七章、NIP-07: window.nostr capability for web browsers
- 第八章、NIP-08: Handling Mentions --- unrecommended: deprecated in favor of NIP-27
- 第九章、NIP-09: Event Deletion Request
- 第十章、NIP-10: Text Notes and Threads
- 第十一章、NIP-11: Relay Information Document
- 第十二章、NIP-13: Proof of Work
- 第十三章、NIP-14: Subject tag in text events
- 第十四章、NIP-15: Nostr Marketplace (for resilient marketplaces)
-
@ 5d4b6c8d:8a1c1ee3
2025-04-15 00:13:55It may seem like we're beating this to death, but we want to hype it up as much as possible.
Entry
The entry fee is a paltry 1k sats. Let me know if you want to join and I'll send you an invoice.
Stackers will join through Stacker News, while those nostr scoundrels will do their own thing.
Brackets
You can start filling out brackets at NBA Bracketology. We don't know the 7th or 8th seeds, yet, but maybe that doesn't change how you feel about some of the series. In addition to picking winners, you'll need to pick series length.
You can edit your brackets up until the playoffs start, so don't worry about getting it exactly right, yet. I'll send out reminders to make sure Team Stacker Sports has their brackets ship shape.
The attached note describes the scoring system.
Prizes
Grand Prize: Blockstream Jade Plus
Winning Team: The sats pool will be divided up amongst the winning side. Assuming Team SN wins, we will payout the sats evenly to each team member, just like how Workit pays out those who complete their challenges.
https://primal.net/e/nevent1qvzqqqqqqypzqpqrep4phdx0hs6v3fynl0glp52c6skaqmgra23hyzyz5pnd8gmcqqsvs9skvcsg0nfuag65t3n2dsjwlg3g2ldgzg9t935ng8yj6kjlueqk65qds
Support Global Sports Central
Our frenemies at Global Sports Central are fundraising through Geyser. If you're in the mood to support nostr/bitcoin sports content, beyond what you're doing for ~Stacker_Sports, think about contributing to them and following their nostr account.
cc: @grayruby, @supercyclone, @Coinsreporter, @BlokchainB, @Carresan, @WeAreAllSatoshi
originally posted at https://stacker.news/items/943657
-
@ 2183e947:f497b975
2025-04-15 00:13:02(1) Here is a partial list of p2p bitcoin exchanges and their friends:
- Robosats (custodial escrow)
- Hodlhodl (2-of-3 escrow)
- Peach (2-of-3 escrow)
- Binance P2P (2-of-3 escrow)
- Bisq v1 (either user can send the funds to a custodial escrow, but if neither one does that, the escrow never touches user funds)
- Bisq v2 (no escrow)
(2) In my opinion, bisq2 is the only "true" p2p exchange on the above list. In a true p2p system, the only people who *can* touch the money are the buyer and the seller. Whenever there's an escrow, even one that has to be "triggered" (like in bisq v1), it's not "really" p2p because the escrow serves as a middleman: he can collude with one party or the other to steal user funds, and in some models (e.g. robosats) he can just straight up run off with user funds without needing to collude at all.
(3) In bisq2 (the One True P2P exchange), buyers select sellers solely based on their reputation, and they just directly send them the bitcoin *hoping* they are as honest as their reputation says they are. What I like about this model is that bisq is not involved in bisq2 at all except as a platform to help buyers discover reputable sellers and communicate with them. There are two things I don't like about this "reputation" model: it's hard to get a good reputation, and it's hard to debug payment failures in this context. I've tried to do about 5 trades on bisq2 (as someone with no reputation) and not a single one went through. Four times, everyone ignored my offers or someone accepted it but then abandoned it immediately. Once, someone accepted my offer, but I could not pay their lightning invoice for some reason, so we mutually canceled the trade.
(4) Just because I opined that an exchange with an escrow "doesn't count" as peer-to-peer doesn't mean that's a bad thing. Of the list of exchanges in number 1, I most frequently use robosats, which, per my analysis, sounds like the "worst" one if considered solely on the metric of "which one is the most p2p." But I use it because there are *advantages* to its model: the btc seller doesn't need a reputation to use it (because the escrow is there to ensure he can't cheat, and so the escrow is the trusted third party, not the btc seller) and payment failures are easier to debug because you're always paying one of the coordinators, who tend to be responsive and knowledgeable and can help you figure out how to fix it (it's how they make money, after all).
(5) There are at least two ways to do escrow without a 3rd party. Satoshi Nakamoto outlines one way to do it here: https://satoshi.nakamotoinstitute.org/posts/bitcointalk/threads/169/ Make a 2 of 2 multisig between the btc buyer and the btc seller, and have the btc seller put his btc in that multisig. Then have the btc buyer send the product (fiat money) to the btc seller. When the btc seller receives it, he sends his privkey to the btc buyer, who can now withdraw the money. The advantage of this system is that the buyer has no incentive to "stiff" the seller (by not sending the fiat), because if he does that, he won't get paid. The downside is, if the btc buyer is a troll who just aborts the protocol halfway through the trade, the seller loses his btc and cannot recover it.
(6) There is another way: start out with a 2 of 2 multisig just like above, but instead of having the btc seller fund it by himself, have the buyer and the seller *both* put in the *same amount* in the *same transaction* (i.e. via a coinjoin), and have the btc seller put in a bit "extra" -- like 20% extra. For example, if the btc seller wants $100 in fiat, the multisig would have $220 in it in total -- $120 from the seller and $100 from the buyer. Using this model, the disadvantage mentioned in paragraph number 5 is fixed: the buyer has an incentive now to send the fiat, otherwise he loses the $100 he put in. He only gets his $100 back if the btc seller cosigns to give it to him, which he'll only do once he receives the product. Meanwhile, the seller is *also* incentivized properly: he only gets his *extra* $20 back if the btc buyer cosigns to give it to him, which he'll only do if the transaction he's signing *also* gives him back *his* $100 deposit.
(7) The model described in number 6 exists: https://scrow.exchange/ is a website that implements it as an option, though as far as I'm aware, no one uses it. The downsides of this model are: it's capital intensive, e.g. a trade for $100 involves $220 or more. Also, the btc buyer needs to already *have* btc to post as a bond, so this cannot be his first time acquiring btc (unless someone helps him make his first deposit). Also, a very rich person who does not care about money can still be a troll; they deposit funds into the multisig alongside their counterparty, then abandon the trade, because they have so much money they don't care if they get it back as long as they cause suffering to their counterparty.
(8) I'd like to see more p2p exchanges, and more exchanges like robosats. I want to continue to spread awareness of ways they can improve -- like the protocols mentioned in numbers 5 and 6 -- and help them implement these protocols. If you run an exchange on the list in number 1 or want to start one, reach out to me, I'd love to help.
-
@ c1e9ab3a:9cb56b43
2025-04-14 23:54:40Hear this, warriors of the Empire!
A dishonorable shadow spreads across our once-proud institutions, infecting our very bloodlines with weakness. The House of Duras—may their names be spoken with contempt—has betrayed the sacred warrior code of Kahless. No, they have not attacked us with disruptors or blades. Their weapon is more insidious: fear and silence.
Cowardice Masquerading as Concern
These traitors would strip our children of their birthright. They forbid the young from training with the bat'leth in school! Their cowardly decree does not come in the form of an open challenge, but in whispers of fear, buried in bureaucratic dictates. "It is for safety," they claim. "It is to prevent bloodshed." Lies! The blood of Klingons must be tested in training if it is to be ready in battle. We are not humans to be coddled by illusions of safety.
Indoctrination by Silence
In their cowardice, the House of Duras seeks to shape our children not into warriors, but into frightened bureaucrats who speak not of honor, nor of strength. They spread a vile practice—of punishing younglings for even speaking of combat, for recounting glorious tales of blades clashing in the halls of Sto-Vo-Kor! A child who dares write a poem of battle is silenced. A young warrior who shares tales of their father’s triumphs is summoned to the headmaster’s office.
This is no accident. This is a calculated cultural sabotage.
Weakness Taught as Virtue
The House of Duras has infected the minds of the teachers. These once-proud mentors now tremble at shadows, seeing future rebels in the eyes of their students. They demand security patrols and biometric scanners, turning training halls into prisons. They have created fear, not of enemies beyond the Empire, but of the students themselves.
And so, the rituals of strength are erased. The bat'leth is banished. The honor of open training and sparring is forbidden. All under the pretense of protection.
A Plan of Subjugation
Make no mistake. This is not a policy; it is a plan. A plan to disarm future warriors before they are strong enough to rise. By forbidding speech, training, and remembrance, the House of Duras ensures the next generation kneels before the High Council like servants, not warriors. They seek an Empire of sheep, not wolves.
Stand and Resist
But the blood of Kahless runs strong! We must not be silent. We must not comply. Let every training hall resound with the clash of steel. Let our children speak proudly of their ancestors' battles. Let every dishonorable edict from the House of Duras be met with open defiance.
Raise your voice, Klingons! Raise your blade! The soul of the Empire is at stake. We will not surrender our future. We will not let the cowardice of Duras shape the spirit of our children.
The Empire endures through strength. Through honor. Through battle. And so shall we!
-
@ c1e9ab3a:9cb56b43
2025-04-14 21:20:08In an age where culture often precedes policy, a subtle yet potent mechanism may be at play in the shaping of American perspectives on gun ownership. Rather than directly challenging the Second Amendment through legislation alone, a more insidious strategy may involve reshaping the cultural and social norms surrounding firearms—by conditioning the population, starting at its most impressionable point: the public school system.
The Cultural Lever of Language
Unlike Orwell's 1984, where language is controlled by removing words from the lexicon, this modern approach may hinge instead on instilling fear around specific words or topics—guns, firearms, and self-defense among them. The goal is not to erase the language but to embed a taboo so deep that people voluntarily avoid these terms out of social self-preservation. Children, teachers, and parents begin to internalize a fear of even mentioning weapons, not because the words are illegal, but because the cultural consequences are severe.
The Role of Teachers in Social Programming
Teachers, particularly in primary and middle schools, serve not only as educational authorities but also as social regulators. The frequent argument against homeschooling—that children will not be "properly socialized"—reveals an implicit understanding that schools play a critical role in setting behavioral norms. Children learn what is acceptable not just academically but socially. Rules, discipline, and behavioral expectations are laid down by teachers, often reinforced through peer pressure and institutional authority.
This places teachers in a unique position of influence. If fear is instilled in these educators—fear that one of their students could become the next school shooter—their response is likely to lean toward overcorrection. That overcorrection may manifest as a total intolerance for any conversation about weapons, regardless of the context. Innocent remarks or imaginative stories from young children are interpreted as red flags, triggering intervention from administrators and warnings to parents.
Fear as a Policy Catalyst
School shootings, such as the one at Columbine, serve as the fulcrum for this fear-based conditioning. Each highly publicized tragedy becomes a national spectacle, not only for mourning but also for cementing the idea that any child could become a threat. Media cycles perpetuate this narrative with relentless coverage and emotional appeals, ensuring that each incident becomes embedded in the public consciousness.
The side effect of this focus is the generation of copycat behavior, which, in turn, justifies further media attention and tighter controls. Schools install security systems, metal detectors, and armed guards—not simply to stop violence, but to serve as a daily reminder to children and staff alike: guns are dangerous, ubiquitous, and potentially present at any moment. This daily ritual reinforces the idea that the very discussion of firearms is a precursor to violence.
Policy and Practice: The Zero-Tolerance Feedback Loop
Federal and district-level policies begin to reflect this cultural shift. A child mentioning a gun in class—even in a non-threatening or imaginative context—is flagged for intervention. Zero-tolerance rules leave no room for context or intent. Teachers and administrators, fearing for their careers or safety, comply eagerly with these guidelines, interpreting them as moral obligations rather than bureaucratic policies.
The result is a generation of students conditioned to associate firearms with social ostracism, disciplinary action, and latent danger. The Second Amendment, once seen as a cultural cornerstone of American liberty and self-reliance, is transformed into an artifact of suspicion and anxiety.
Long-Term Consequences: A Nation Re-Socialized
Over time, this fear-based reshaping of discourse creates adults who not only avoid discussing guns but view them as morally reprehensible. Their aversion is not grounded in legal logic or political philosophy, but in deeply embedded emotional programming begun in early childhood. The cultural weight against firearms becomes so great that even those inclined to support gun rights feel the need to self-censor.
As fewer people grow up discussing, learning about, or responsibly handling firearms, the social understanding of the Second Amendment erodes. Without cultural reinforcement, its value becomes abstract and its defenders marginalized. In this way, the right to bear arms is not abolished by law—it is dismantled by language, fear, and the subtle recalibration of social norms.
Conclusion
This theoretical strategy does not require a single change to the Constitution. It relies instead on the long game of cultural transformation, beginning with the youngest minds and reinforced by fear-driven policy and media narratives. The outcome is a society that views the Second Amendment not as a safeguard of liberty, but as an anachronism too dangerous to mention.
By controlling the language through social consequences and fear, a nation can be taught not just to disarm, but to believe it chose to do so freely. That, perhaps, is the most powerful form of control of all.
-
@ 23202132:eab3af30
2025-04-14 20:30:46Atualmente, os aplicativos de mensagens estão se tornando cada vez mais complexos, com diversas funcionalidades. Embora isso seja atrativo para os usuários, também chama a atenção de governos, golpistas, hackers e empresas interessadas em praticar spam.
Os problemas podem variar, incluindo bloqueios legais, roubo de contas, prejuízos financeiros, entre outros. Diversas situações podem inviabilizar o uso de sua conta de mensagens.
Uma estratégia que vem ganhando popularidade é adotar, com familiares e amigos, um aplicativo alternativo e discreto para mensagens. Assim, caso ocorram problemas com o app principal, a comunicação permanece intacta, pois um canal menos visado por golpistas e menos suscetível a intervenções governamentais estará sempre disponível.
Manter essa estratégia com pessoas próximas dificulta o bloqueio das comunicações, e ao optar por um app discreto, também se torna mais difícil para quem tenta interferir na sua comunicação.
Em resumo, quanto mais descentralizado e menos popular é seu aplicativo de mensagens, menor é a possibilidade de interferência na sua comunicação.
Uma alternativa interessante que uso é o Session, uma boa opção por funcionar sem a necessidade de identificação, como e-mail ou telefone, e de forma descentralizada. Como o Session não exige identificação para cadastro, é impossível alguém localizar sua conta sem que você compartilhe seu ID Session. Isso garante que apenas seus amigos terão acesso a você.
A ideia é combinar com seus amigos e familiares um app que não seja popular para servir de reserva. Nesse sentido, existem muitas opções disponíveis na internet. No entanto, em caso de invasão ou bloqueio, o Session é uma excelente alternativa para comunicação reserva. Ele roda na rede Lokinet que é uma rede de alta privacidade.
Outra possibilidade, que também é eficiente e pode ser mais fácil para usuários acostumados com o WhatsApp, é o Mixin Messenger. Ele possui uma aparência bem semelhante ao WhatsApp. Para grupos de usuários mais avançados, o SimpleX é uma excelente alternativa.
-
@ 25902b10:4f7034d4
2025-04-14 20:30:04I recently sat on a panel where the topic was “Why Bitcoin?” So I’m going to share what I shared with the audience.
I originally started writing this as an Instagram or LinkedIn caption, but I just kept writing and writing because this topic is so dear to my heart. So I decided to turn it into an article. My first article, actually. I hope you find some value in it if you ever come across it. I’m not a professional writer, by the way, but I hope the message gets home.
I live by the mantra “living and not just existing.”
Have you ever sat down and asked yourself: Am I truly living life, or am I just existing/surviving? You know, wake up, work, pay bills, repeat. Same old, same old. Not exciting, right?
From my observations, and from reading and interacting with people, I’ve realized that most people are just existing and they don’t even know it. Why? Because they’re prisoners to the fiat system. This system keeps them tied to a never-ending treadmill. Every day, they wake up and chase money, but somehow it’s never enough. Inflation quietly steals the value of their hard-earned cash. So they have to work and work, juggle multiple side hustles, just to keep up with the rising cost of life. In reality, life isn't necessarily getting more expensive, it's that the value of your money is being corroded by inflation.
And by the way, have you ever deeply thought about hustle culture? In my honest opinion, having three side hustles or jobs isn’t the flex we’ve been conditioned to think it is. You know, “I’m chasing the bag, man.” Honestly? Not cute. Hustle culture is a response to a broken system. People need all those jobs just to stay afloat.
Look at our grandparents in the '80s. Many of them had a single job or one business, one paycheck, and it was enough. Enough to raise a family, pay school fees, rent, buy essentials, even save.
In 2025? That’s almost unheard of. Why? Inflation. Are you starting to see the nightmare that inflation really is?
Another thing people don’t realize is that when you’re constantly working, time just passes you by. Remember the fiat treadmill? Yeah, that one. You're stuck on it, running and running, chasing money, and you miss out on life. Time with family. Walks in the park. Travel. Hobbies. Rest. You lose the human experience. The actual living part.
So people keep chasing and chasing until the day they’re too old or too tired to keep up and that’s when it hits them: “I never truly lived.” And that realization? It’s heavy.
Fiat money, whether dollars, shillings, or euros, steals from you. It steals your time, your peace, your freedom. Most of the time, all you’re doing is chasing it, and even when you do catch it, it’s already lost some of its value.
The system is designed to keep you in survival mode, anxious, worried about the next paycheck, your bills, your future. It wears you down mentally, physically, emotionally. But not many people see it that way.
The good news? We now have Bitcoin. And I know it sounds crazy or cliché, but it fixes all of this. Let me explain.
Bitcoin is the soundest form of money we've ever had as humans. It’s decentralized, scarce, deflationary, permissionless, borderless. Bitcoin is for everyone.
Now let’s focus on two key aspects: scarcity and its deflationary nature.
Bitcoin’s supply is capped at 21 million coins. No one, not a single person or authority can create more. It can’t be printed at will like fiat. That’s what makes it powerful.
When governments print money, they dilute its value just like adding too much water to concentrated juice until it tastes like nothing. That’s what inflation is: dilution of your money’s value. And it never ends. With Bitcoin, there’s no dilution. It’s built to protect value. That’s what makes it the perfect hedge against inflation, it doesn’t lose purchasing power over time, it preserves it.
So what does that mean practically?
Let’s say you earn Ksh. 1,000 today. If you save it in bitcoin, two weeks, months, or even a year from now, its value is likely to be preserved or even increased. Unlike fiat, which loses value just sitting in your bank account, bitcoin holds on to your hard-earned energy. And this is what connects back to living and not just existing.
Bitcoin gives you the freedom to step off the treadmill. You don’t have to constantly hustle just to stay in place. You can breathe. Imagine that feeling after a long, intense workout, the moment you finally rest. That deep exhale. That’s what life on a Bitcoin standard feels like.
It gives you time. Time to be human. To go to the park. Swim in the ocean. Hike a mountain. Travel. Meet people. Explore cultures. LIVE.
Bitcoin also makes you a better person. The more you learn about it and the broken money system we’ve been stuck in, the more you begin to care. You start looking within. You want better for yourself, your community, humanity. Your thoughts shift. Your actions shift. Bitcoin has that effect. That’s why I say Bitcoin is healing energy.
And I can’t help but think of Michael Jackson’s “Heal the World.” Every line in that song describes the pain caused by a broken system and the world he wanted to see. I believe he would’ve loved what Bitcoin represents. Because it’s about healing. Freedom. Harmony.
So here’s my call to action: Study Bitcoin. Start paying attention. Don’t ignore it. I promise you, it changes everything. There are so many free online learning materials. There’s Bitcoin Twitter. Bitcoin communities all around the world. And of course, I’m here for any questions too.
I want the world to heal. I want to see more people enjoying the human experience. I want to see people spend time with their families, go to the park, swim in lakes/oceans and enjoy the simple pleasures of this beautiful earth.
I want more people to be in tune with themselves so we can all live in harmony, and the universe can be in harmony too.
We can heal the world. We can become happy souls. We can become LOVE: the true essence of life.
-
@ 23202132:eab3af30
2025-04-14 20:23:40A MixPay é uma plataforma gratuita que permite o recebimento de pagamentos em criptomoedas de forma prática e eficiente. Com a popularidade crescente das criptomoedas, essa modalidade de pagamento está se tornando cada vez mais comum em diversas partes do mundo, incluindo o Brasil, onde alguns municípios, como Rolante, no Rio Grande do Sul, já possuem estabelecimentos que aceitam pagamentos em criptoativos.
Veja um exemplo prático no YouTube https://www.youtube.com/watch?v=FPJ5LqQ19CY
Por que aceitar pagamentos em criptomoedas?
Crescimento global: O uso de criptomoedas para pagamentos de produtos e serviços está em ascensão, impulsionado pela descentralização e pela conveniência que oferecem.
Sem fronteiras: Ideal para quem deseja receber pagamentos internacionais sem taxas elevadas de conversão ou restrições bancárias. Semelhante ao Pix, mas descentralizado: Assim como o Pix revolucionou os pagamentos no Brasil, a MixPay oferece uma experiência similar, mas utilizando criptomoedas, sem a necessidade de intermediários bancários.
Vantagens da MixPay
Gratuita: Não há custos para criar uma conta e começar a receber pagamentos.
Fácil de usar: O processo de recebimento é simples, tanto para comerciantes quanto para consumidores, podendo ser realizado em poucos cliques.
Flexibilidade de moedas: Receba pagamentos em diversas criptomoedas, incluindo Bitcoin (BTC), Ethereum (ETH), USDT e outras.
Conversão automática: A MixPay permite que você receba em uma criptomoeda e converta automaticamente para outra de sua escolha, caso deseje evitar a volatilidade.
Integração fácil: Seja para e-commerces ou estabelecimentos físicos, a MixPay oferece QR Codes, APIs e plugins para integração com seu sistema.
Como começar com a MixPay?
1 - Baixe a carteira Mixin aqui https://messenger.mixin.one/
2 - Com a carteira Mixin instalada clique em https://dashboard.mixpay.me/login e ao abrir o site clique no botão Mixin
3 - Na carteira Mixin clique no leitor de QrCode no canto superior direito e escaneie o site.
Pronto! Você já conectou a sua carteira Mixin com a MixPay. Receba pagamentos em instantes, seja por meio de um QR Code, link de pagamento ou integração com sua loja online.
Se você deseja modernizar seu negócio ou simplesmente começar a explorar o universo das criptomoedas, a MixPay é uma alternativa gratuita, eficiente e que acompanha as tendências atuais.
Para mais informações acesse https://mixpay.me
-
@ e97aaffa:2ebd765d
2025-04-14 20:16:59Num recente podcast, o Miguel Milhão falou sobre o crash nos mercados financeiros. No meio de muita conversa de macroeconomia e mercados financeiros, o convidado deixou alguns pontos interessantes, mas duas ideias ficaram no meu pensamento, infelizmente, ele não aprofundou, mas é algo que eu quero fazer futuramente.
Perda de paridade
A primeira ideia que o convidado apontou foi, a possibilidade da perda de paridade do papel-moeda e a CBDC, eu nunca tinha pensado neste ponto de vista.
Se os governos não conseguirem retirar de circulação todo o papel-moeda rapidamente, se houver circulação em simultâneo com a CBDC, o papel-moeda poderá ter um premium. Isto faz todo o sentido, os governos poderão dar oficialmente o mesmo valor facial, mas como nas CBDCs existirá mais controlo, restrições e monitorização, as pessoas vão preferir o papel-moeda, vão pagar um premium para manter a sua privacidade.
Na prática, será algo similar ao que acontece em alguns países onde existem algumas controlo de capitais, onde o dólar do mercado negro é superior ao dólar oficial. Os comerciantes também poderão fazer descontos superiores nos produtos quando são pagos com papel-moeda.
Isso poderá provocar um descolar do valor, a mesma moeda com valores diferentes, a oficial e do mercado negro. Isso poderá levar os governos a tomar medidas mais autoritárias para eliminar o papel-moeda de circulação.
Não sei se alguma vez acontecerá, mas é algo que eu tenho que refletir e aprofundar esta ideia.
RBU e Controlo
A outra ideia apontada pelo convidado, a CBDC será uma peça fundamental numa sociedade onde a maioria das pessoas sobrevivem com Rendimento Básico Universal (RBU).
Todos sabemos que a CBDC vai servir para os governos monitorar, fiscalizar e controlar os cidadãos. O ponto que eu nunca tinha pensado, é que esta pode ser essencial para a implementação do RBU. Se chegarmos a esse ponto, será o fim da liberdade dos cidadãos, onde o estado controla quando, quanto e onde o cidadão pode gastar o seu dinheiro. O estado irá determinar o valor do RBU e as CBDC vão determinar onde podes gastá-lo.
Penso que já não existem dúvidas que a AI e a robótica vão revolucionar o mundo laboral, vai provocar uma profunda queda nos postos de trabalho, profissões vão desaparecer ou vão reduzir drasticamente o número de funcionários.
Muitas pessoas consideram que a solução é o RBU, mas eu tenho muitas dificuldades em encontrar viabilidade económica e social numa sociedade onde a maioria recebe o RBU.
É a implementação do conceito: não terá nada, mas será feliz.
Será que as máquinas vão conseguir produzir tudo, o que os seres humanos necessitam, a um custo tão baixo, que vai deixar de ser necessário os humanos trabalharem? Tenho muitas dúvidas que essa possibilidade aconteça, se nós humanos não necessitarmos de trabalhar, vai se perder o incentivo para desenvolver novas tecnologias, gerar inovação e de evoluir a sociedade.
Eu já tenho refletido bastante sobre o RBU, mas por mais que pense, não consigo encontrar uma viabilidade económica para manter isto de pé. Onde vão buscar dinheiro para financiar uma percentagem expressiva de pessoas que sobreviverá com o RBU. Eu só olho para isto, como um comunismo com esteróides, talvez esteja errado.
Além dos problemas econômicos, eu acredito que isso vai gerar problemas sociais e de comportamento, vai gerar uma revolta social. Em primeiro lugar, existe uma parte de seres humanos que são ambiciosos, querem mais coisas, que vão lutar e vão conseguir mais. Depois existe outra parte, que é invejosa, quer ter mais, mas não consegue.
Uma sociedade onde quase ninguém trabalha, existindo demasiado tempo livre, vão emergir vícios e conflitos sociais. As pessoas com tempo para pensar reflectir sobre a sua vida e sobre a sociedade, alguns vão delirar, vão questionar tudo. Por isso, a religião desempenha um papel importante na sociedade, cria moralismo através de dogmas, os crentes não questionam, apenas seguem. Por vezes, a ignorância é uma bênção.
Isto faz lembrar-me o porquê das sociedades monogâmicas tornaram-se mais desenvolvidas, em comparação com as poligâmicas. A monogamia trouxe uma paz social à sociedade, existem muito menos conflitos e guerras, há mais harmonia. Milhões de anos de evolução das espécies, nos humanos e alguns animais, a natureza/genética trouxe um equilíbrio no número de nascimento de elementos masculinos e femininos. Mas nas sociedades poligâmicas, normalmente os homens mais ricos têm várias mulheres, consequentemente haveria outros homens que não teriam nenhuma mulher, isso resulta em maior revolta e conflitos sociais. Isto é pura matemática, se existe quase 50/50, de um homem tem 7 mulheres, isto resulta, que 6 homens não terão qualquer mulher. As religiões ao defenderem a monogamia, ao determinar que era pecado ter mais que uma mulher, resultaram em menos conflitos, numa maior paz social. Isso permitiu um maior desenvolvimento de sociedades monogâmicas, do que as poligâmicas.
Acabei por desviar um pouco do assunto. Além disso, o valor do RBU teria que ser elevado, para que permita aos cidadãos ter acesso ao desporto, aos espetáculos, futebol, viajar, para financiar os seus tempos livres. Se eu já acho difícil arranjar dinheiro para financiar a generalidade dos cidadãos, com produtos e serviços básicos, ainda será mais difícil ou impossível, se tiver que financiar os passatempos.
Em vez do RBU, ainda existe a opção do Imposto sobre o Rendimento Negativo (IRN), minimiza um pouco, mas o problema mantém-se. Aconselho a leitura do artigo do Tiago sobre o IRN.
Mas o mais interessante de tudo, os governos vão criar as CBDC para controlar os cidadãos, com a ideia distópica de criar mais paz social, mas eu acredito que resultará no seu inverso.
São duas ideias que eu tenho que aprofundar, futuramente.
-
@ 23202132:eab3af30
2025-04-14 20:16:05Nos últimos quatro anos, desde seu lançamento em 2020, o Nostr evoluiu de um projeto experimental para um protocolo amplamente adotado por usuários e desenvolvedores em todo o mundo. Combinando inovação e simplicidade, o Nostr vem se destacando como uma rede social descentralizada e flexível.
Um dos aplicativos que tem ganhado atenção é o YakiHonne, disponível para Android e iOS. Este cliente Nostr vem se diferenciando por suas melhorias constantes e sua usabilidade intuitiva. Entre suas funcionalidades mais atraentes estão o sistema de pontuação por participação, a capacidade de fixar coleções e a possibilidade de publicar vídeos, podcasts, blogs e anotações curtas, tornando-o uma plataforma versátil e abrangente.
Apesar dos desafios que ainda enfrenta, como a necessidade de aprimorar a experiência do usuário e aumentar a adoção em massa, o Nostr se destaca por sua abordagem transparente e sua capacidade de evolução. Funcionalidades como a integração da Lightning Network para pagamentos rápidos e seguros, além do suporte a conteúdo multimídia, são exemplos claros da flexibilidade do protocolo.
Como um projeto de código aberto, o Nostr também se tornou um verdadeiro laboratório para desenvolvedores experimentarem novas ideias. Diversos serviços e funcionalidades estão em constante desenvolvimento, ampliando o ecossistema e abrindo novas possibilidades para o futuro da comunicação descentralizada.
Se você está buscando um aplicativo que seja baseado na rede Nostr, testar o YakiHonne pode ser uma forma de avaliar potencialidades e limites deste protocolo.
Saiba mais em https://yakihonne.com
-
@ 23202132:eab3af30
2025-04-14 20:03:27Executar uma IA local (como LLaMA.cpp, whisper.cpp, etc.) em um mini PC ou Raspberry Pi, combinada com um relay SimpleX privado rodando via .onion (com Tor), permite que você tenha um assistente pessoal inteligente sem depender de intermediários. Isso evita, por exemplo, o vazamento de dados sensíveis para empresas proprietárias dessas inteligências artificiais.
Ideal para pesquisadores que utilizam esse tipo de assistente, mas ainda estão em fase de sigilo em seus estudos e experimentos. Também é perfeito para entusiastas de privacidade, autonomia e independência tecnológica. Como tarefa de aula para alunos de programação e redes, pode ser um projeto interessante e desafiador.
O SimpleX Chat é um sistema de mensagens bastante flexível, permitindo diversas personalizações, inclusive que o usuário execute seus próprios relays de transmissão. Nesse sentido, instalar um relay e conectá-lo a uma inteligência artificial rodando localmente no computador é uma tarefa relativamente fácil.
O principal desafio está em criar um bot intermediário que:
Recebe mensagens no relay,
Passa a entrada para a IA local,
Coleta a resposta gerada pela IA,
E a envia de volta via SimpleX.
Para garantir total privacidade, todo o tráfego deve ocorrer via rede onion.
Como implementar na prática? É necessário:
Um relay simplexmq rodando via Tor (.onion).
Uma IA local (LLaMA.cpp, whisper.cpp ou outra de preferência do desenvolvedor) instalada no computador.
Com esses dois elementos configurados, basta criar um script (em Python, por exemplo) para:
Ler mensagens recebidas,
Encaminhá-las à IA local,
Capturar a resposta e enviá-la via protocolo SMP (SimpleX Messaging Protocol).
Resultado? Um sistema privado de comunicação com assistente inteligente: ✔ Sem servidores de terceiros, ✔ Sem nuvem, ✔ Sem Google, OpenAI ou qualquer outra empresa de IA. ✔ Tudo via Tor, tudo criptografado. ✔ Você interage com uma IA local, com zero risco de vazamento de dados.
Principais desafios técnicos (nada impossível!) Implementar um cliente SimpleX (script em Python) no lado da IA, pois o relay sozinho não envia mensagens — ele apenas as entrega entre peers conectados.
O protocolo SimpleX ainda não tem um cliente CLI oficial, mas é possível usar bibliotecas emergentes ou implementar comunicação em nível de socket com base na documentação do protocolo.
-
@ 23202132:eab3af30
2025-04-14 20:01:29Ter um segundo sistema de mensagens é importante para uso com a família ou grupo de amigos, especialmente naqueles casos em que o WhatsApp é invadido para aplicar golpes nos seus contatos ou, ainda, por conta de bloqueios judiciais que alguns governantes consideram necessários impor. Nesses casos — entre outros possíveis problemas — possuir um segundo sistema de mensagens pode garantir a continuidade da comunicação com seus amigos ou familiares.
Como sistemas de mensagem alternativos, os aplicativos Mixin, Session e Simplex se destacam, cada um com funcionalidades bem distintas. Um fator importante é o grau de dificuldade para usuários com pouca ou nenhuma familiaridade na configuração de aplicativos. Nesse sentido, a escolha do aplicativo deve levar em conta o perfil das pessoas que irão usá-lo.
O aplicativo mais fácil de operar para quem já usa WhatsApp é, sem dúvidas, o Mixin Messenger. Ele permite o cadastro com o número do celular, em uma lógica muito semelhante ao WhatsApp. Para os mais exigentes em relação à privacidade, é possível criar uma conta sem uso de e-mails ou número de telefone. Assim, atende tanto ao usuário acostumado ao WhatsApp quanto àquele que prefere algo com menor vínculo de identificação, ao eliminar dados de contato.
Já o Session oferece a criação de contas totalmente desvinculadas de qualquer dado pessoal, sem necessidade de e-mail ou número de telefone. No entanto, ao criar uma conta, é gerado um ID totalmente aleatório e uma seed (13 palavras) que serve como senha. Se você perder essa seed, perderá o acesso à conta. Essa forma de cadastro garante total privacidade, mas exige cuidado por parte do usuário em armazenar bem a seed. É ideal para grupos com alguma familiaridade no uso de palavras-chave. Usuários acostumados a recuperar senhas com frequência geralmente não dão a devida importância à segurança dessas seeds.
O Simplex é o que há de mais radical em termos de privacidade até o momento — mas é importante lembrar que mais privacidade também significa mais complexidade. A alta privacidade exige uma combinação equilibrada entre comportamento e tecnologia, algo mais comum entre usuários com perfil técnico. Nesse sentido, o Simplex geralmente é utilizado por grupos com algum conhecimento tecnológico e hábitos de segurança digital. Ele permite, por exemplo, que o próprio usuário hospede seu relay na rede Onion, em um Raspberry Pi ou outro tipo de computador.
Uma característica que torna o Simplex tão radical é o fato de não gerar um ID fixo nem utilizar servidores convencionais para trafegar mensagens, além de não coletar metadados. No entanto, isso pode representar dificuldades para usuários sem experiência com tecnologias de comunicação.
Basicamente, se você pretende usar um aplicativo de mensagens alternativo com um grupo inexperiente, o Mixin pode ser a melhor escolha. Já se os familiares e amigos têm mais desenvoltura com tecnologia, o Session pode ser uma excelente alternativa. O Simplex, por outro lado, pode gerar dor de cabeça para grupos inexperientes, dada sua complexidade de uso. No Simplex não há recuperação automatizada de conta com arquivos na nuvem ou qualquer recurso semelhante — é necessário o hábito de realizar backups manuais com alguma frequência. A configuração inicial também pode gerar confusão para usuários não técnicos. Por isso, o Simplex é uma boa escolha apenas para grupos com alguma desenvoltura tecnológica. Para pessoas experientes, ele oferece total personalização e privacidade.
Em termos de segurança, todos os três aplicativos oferecem privacidade e resistência à censura, não são atraentes para golpistas e são difíceis de bloquear. Isso é importante se você está buscando um sistema de mensagens alternativo justamente para manter a comunicação ativa em caso de problemas com seu mensageiro principal. Mas não se esqueça de considerar qual é o perfil dos usuários do seu grupo de contatos.
-
@ 7d33ba57:1b82db35
2025-04-14 19:25:10Sofia might surprise you. One of Europe’s oldest cities, it's a place where Roman ruins, Ottoman mosques, Orthodox churches, Soviet monuments, and hip street art all live side by side. Add in mountain views, leafy parks, and a rising food and coffee scene, and you’ve got a laid-back, history-rich capital that’s still flying under the radar.
🌟 What to See in Sofia
1️⃣ Alexander Nevsky Cathedral
- The city’s iconic symbol, with golden domes and an ornate Orthodox interior
- Free to enter, and worth visiting at sunset when the light hits the gold just right
2️⃣ Roman Ruins of Serdica
- Right in the heart of the city, you can walk through the excavated streets and buildings of ancient Serdica
- Look down through glass panels or walk among ruins near the Largo complex
3️⃣ St. George Rotunda
- A 4th-century red-brick church tucked behind government buildings
- One of the oldest and most atmospheric sites in Sofia
4️⃣ Vitosha Boulevard
- The city’s main pedestrian street, lined with shops, cafés, and mountain views
- Great for people-watching, especially at a terrace with a rakia or local craft beer
5️⃣ National Palace of Culture (NDK)
- A massive cultural center with striking architecture and gardens
- Surrounded by a wide boulevard that's great for walks or grabbing snacks from nearby vendors
⛰️ Escape to Nature: Vitosha Mountain
- Just outside the city, Vitosha Mountain is a paradise for hikers, skiers, or picnickers
- Visit Boyana Church (UNESCO site) and hike to Boyana Waterfall
- In winter: great for a quick ski day
- In summer: cool breezes and panoramic city views
🍽️ What to Eat in Sofia
- Shopska salad – Fresh, simple, and topped with white cheese
- Kavarma – Slow-cooked meat and vegetables in clay pots
- Banitsa – A flaky pastry filled with cheese or pumpkin
- Wash it down with rakia (fruit brandy) or local wines from Melnik or the Thracian Valley
🎯 Tips for Visiting Sofia
✅ Affordable and uncrowded—a great value destination
✅ Currency: Bulgarian lev (BGN)
✅ Most signs use both Cyrillic and Latin alphabets, but a few phrases in Bulgarian go a long way
✅ Spring and fall offer the best weather for exploring both city and mountain -
@ 4c96d763:80c3ee30
2025-04-14 18:34:36Changes
Ken Sedgwick (1):
- manually specify ubuntu libc dependency
William Casarin (52):
- column: inline some things because why not
- debug: fix debug crash when adding columns
- filter: fix memory leak in nostrdb Filter
- egui: bump to 0.31.1
- feat: integrate nostrdb relay indexing
- disable large scale unknown id detection
- switch to profiling crates
- theme: fix window styles
- perf: reduce timeline overscan
- nostrdb: add author_kind index
- attempt macos fix
- fix again
- zaps: fix invalid zaps
- nostrdb: only use 2 ingester threads
- dave is alive
- dave: cube lighting
- dave: rotation tweaks
- dave: only re-render dave if he's moving
- dave: fix prompt and token concat
- dave: add background to user messages
- dave: remove shader since we do it inline now
- dave: use local llama for testing for now
- dave: tweak prompt
- dave: toolcall parsing
- dave: tools working even better
- clippy fixes
- dave: auto-reply, initial avatar anim
- dave: move quaternion to its own file
- dave: prepare for android
- dave: fix android build
- assets: add columns app icon
- ui crate and chrome sidebar
- assets: update columns app icon
- dave: give dave a new home in the sidebar
- dave: better initial rotation
- dave: improve design
- chrome: initial action handling
- dave: extract search_call ui
- icons: add new_message icon
- notedeck: include frame history
- dave: tweak search tool to include limit arg
- dave: introduce model config
- dave: add a bit of spacing, fix sned
- dave: remove default property value and add to description
- dave: improve query tool
- chrome: fix settings view
- chrome: fix support route
- dave: fix ollama config if enabled
- log: changed urlcache log to debug
- dave: tweak prompt
- lint: fix clippy and fmt issues
- dave: don't make dave active yet
jglad (5):
-
716 add full screen images
-
716 move goto button one level down
-
716 store full size img, add zoom & pan
-
761 add padding to relay view
-
507 add right click paste in search
kernelkind (33):
- remove security framework storage
- simplify key storage
- serialize
Keypair
using tokenator - migrate to tokenator key storage impl
- canonize UserAccount
- serialize
UserAccount
FileKeyStorage
->AccountStorage
- token serialize user account
- add nwc dependency
- add tokio dep to notedeck package
- introduce
TokenHandler
- wallet
- accounts: update & optimised find
- integrate global wallet into app
- add
Wallet
toUserAccount
- add get wallet method
- use UserAccount for account storage
- process wallet action
- move
close_button
toui/widgets.rs
asx_button
- move
sized_button
intoui/widgets
asstyled_button
- add human_format dep
- add wallet ui
- wallet route
- wallet side panel button
- fetch zap invoice
- add
Zap
- add hashbrown
- introduce
Zaps
- use
Zaps
- propagate current account
- note zap button
- process zaps in
Notedeck
- fix zaps networking tests
pushed to notedeck:refs/heads/master
-
@ 6e0ea5d6:0327f353
2025-04-14 15:11:17Ascolta.
We live in times where the average man is measured by the speeches he gives — not by the commitments he keeps. People talk about dreams, goals, promises… but what truly remains is what’s honored in the silence of small gestures, in actions that don’t seek applause, in attitudes unseen — yet speak volumes.
Punctuality, for example. Showing up on time isn’t about the clock. It’s about respect. Respect for another’s time, yes — but more importantly, respect for one’s own word. A man who is late without reason is already running late in his values. And the one who excuses his own lateness with sweet justifications slowly gets used to mediocrity.
Keeping your word is more than fulfilling promises. It is sealing, with the mouth, what the body must later uphold. Every time a man commits to something, he creates a moral debt with his own dignity. And to break that commitment is to declare bankruptcy — not in the eyes of others, but in front of himself.
And debts? Even the small ones — or especially the small ones — are precise thermometers of character. A forgotten sum, an unpaid favor, a commitment left behind… all of these reveal the structure of the inner building that man resides in. He who neglects the small is merely rehearsing for his future collapse.
Life, contrary to what the reckless say, is not built on grand deeds. It is built with small bricks, laid with almost obsessive precision. The truly great man is the one who respects the details — recognizing in them a code of conduct.
In Sicily, especially in the streets of Palermo, I learned early on that there is more nobility in paying a five-euro debt on time than in flaunting riches gained without word, without honor, without dignity.
As they say in Palermo: L’uomo si conosce dalle piccole cose.
So, amico mio, Don’t talk to me about greatness if you can’t show up on time. Don’t talk to me about respect if your word is fickle. And above all, don’t talk to me about honor if you still owe what you once promised — no matter how small.
Thank you for reading, my friend!
If this message resonated with you, consider leaving your "🥃" as a token of appreciation.
A toast to our family!
-
@ 6e0ea5d6:0327f353
2025-04-14 15:10:58Ascolta bene.
A man’s collapse never begins on the battlefield.
It begins in the invisible antechamber of his own mind.
Before any public fall, there is an ignored internal whisper—
a small, quiet, private decision that gradually drags him toward ruin.No empire ever fell without first rotting from within.
The world does not destroy a man who hasn’t first surrendered to himself.
The enemy outside only wins when it finds space in the void the man has silently carved.**Non ti sbagliare ** — there are no armies more ruthless than undisciplined thoughts.
There are no blows more fatal than the ones we deal ourselves:
with small concessions, well-crafted excuses,
and the slow deterioration of our integrity.
What people call failure is nothing more than the logical outcome
of a sequence of internal betrayals.Afraid of the world? Sciocchezze.
But a man who’s already bowed before his own weaknesses—
he needs no enemies.
He digs his own grave, chooses the epitaph,
and the only thing the world does is toss in some dirt.Capisci?
Strength isn’t the absence of falling, but the presence of resistance.
The true battle isn’t external.
It takes place within—where there’s only you, your conscience, and the mirror.
And it’s in that silent courtroom where everything is decided.The discipline to say “no” to yourself
is more noble than any public glory.
Self-control is more valuable than any victory over others.In Sicily, we learn early:
“Cu s’abbrazza cu’ so’ nemicu, si scorda la faccia di l’amicu.”
He who embraces his enemy forgets the face of his friend.
The most dangerous enemy is the one you feed daily with self-indulgence.
And the most relentless confrontation is the one you avoid in front of the mirror.So don’t talk to me about external defeats.
Tell me where inside you the weakness began.
Tell me the exact moment you abandoned what you believed in, in the name of ease.
Because a man only falls before the world… after falling before himself.Thank you for reading, my friend!
If this message resonated with you, consider leaving your "🥃" as a token of appreciation.
A toast to our family!
-
@ c21b1a6c:0cd4d170
2025-04-14 14:41:20🧾 Progress Report Two
Hey everyone! I’m back with another progress report for Formstr, a part of the now completed grant from nostr:npub10pensatlcfwktnvjjw2dtem38n6rvw8g6fv73h84cuacxn4c28eqyfn34f . This update covers everything we’ve built since the last milestone — including polish, performance, power features, and plenty of bug-squashing.
🏗️ What’s New Since Last Time?
This quarter was less about foundational rewrites and more about production hardening and real-world feedback. With users now onboard, our focus shifted to polishing UX, fixing issues, and adding new features that made Formstr easier and more powerful to use.
✨ New Features & UX Improvements
- Edit Existing Forms
- Form Templates
- Drag & Drop Enhancements (especially for mobile)
- New Public Forms UX (card-style layout)
- FAQ & Support Sections
- Relay Modal for Publishing
- Skeleton Loaders and subtle UI Polish
🐛 Major Bug Fixes
- Fixed broken CSV exports when responses were empty
- Cleaned up mobile rendering issues for public forms
- Resolved blank.ts export issues and global form bugs
- Fixed invalid
npub
strings in the admin flow - Patched response handling for private forms
- Lots of small fixes for titles, drafts, embedded form URLs, etc.
🔐 Access Control & Privacy
- Made forms private by default
- Fixed multiple issues around form visibility, access control UIs, and anonymous submissions
- Improved detection of pubkey issues in shared forms
🚧 Some Notable In-Progress Features
The following features are actively being developed, and many are nearing completion:
-
Conditional Questions:
This one’s been tough to crack, but we’re close!
Work in progress bykeraliss
and myself:
👉 PR #252 -
Downloadable Forms:
Fully-contained downloadable HTML versions of forms.
Being led bycasyazmon
with initial code by Basanta Goswami
👉 PR #274 -
OLLAMA Integration (Self-Hosted LLMs):
Users will be able to create forms using locally hosted LLMs.
PR byashu01304
👉 PR #247 -
Sections in Forms:
Work just started on adding section support!
Small PoC PR bykeraliss
:
👉 PR #217
🙌 Huge Thanks to New Contributors
We've had amazing contributors this cycle. Big thanks to:
- Aashutosh Gandhi (ashu01304) – drag-and-drop enhancements, OLLAMA integration
- Amaresh Prasad (devAmaresh) – fixed npub and access bugs
- Biresh Biswas (Billa05) – skeleton loaders
- Shashank Shekhar Singh (Shashankss1205) – bugfixes, co-authored image patches
- Akap Azmon Deh-nji (casyazmon) – CSV fixes, downloadable forms
- Manas Ranjan Dash (mdash3735) – bug fixes
- Basanta Goswami – initial groundwork for downloadable forms
- keraliss – ongoing work on conditional questions and sections
We also registered for the Summer of Bitcoin program and have been receiving contributions from some incredibly bright new applicants.
🔍 What’s Still Coming?
From the wishlist I committed to during the grant, here’s what’s still in the oven:
-[x] Upgrade to nip-44 - [x] Access Controlled Forms: A Form will be able to have multiple admins and Editors. - [x] Private Forms and Fixed Participants: Enncrypt a form and only allow certain npubs to fill it. - [x] Edit Past Forms: Being able to edit an existing form. - [x] Edit Past Forms
- [ ] Conditional Rendering (in progress)
- [ ] Sections (just started)
- [ ] Integrations - OLLAMA / AI-based Form Generation (near complete)
- [ ] Paid Surveys
- [ ] NIP-42 Private Relay support
❌ What’s De-Prioritized?
- Nothing is de-prioritized now especially since Ollama Integration got re-prioritized (thanks to Summer Of Bitcoin). We are a little delayed on Private Relays support but it's now becoming a priority and in active development. Zap Surveys will be coming soon too.
💸 How Funds Were Used
- Paid individual contributors for their work.
- Living expenses to allow full-time focus on development
🧠 Closing Thoughts
Things feel like they’re coming together now. We’re out of "beta hell", starting to see real adoption, and most importantly, gathering feedback from real users. That’s helping us make smarter choices and move fast without breaking too much.
Stay tuned for the next big drop — and in the meantime, try creating a form at formstr.app, and let me know what you think!
-
@ 7bc05901:8c26d22b
2025-04-14 13:33:09This is how we should build and tinker. One square meter at a time.
I have been trying to subtly preach square foot gardening to my wife over the winter. While we were planting yesterday, I noticed she had placed the cabbage just a couple inches away from each other, because based on the size they are now, it seems right. I said, you think those are far enough apart? And she quickly divided them up each into their own square foot, which is the recommended distance to maximize their growth. Considerations about future growth engaged her intuition, and giving them each a square foot made sense.
One cannot get more hyper-local than the square meter that they currently occupy. After we had finished planting, we sat on lawn chairs in the grass while our daughter chased bubbles from the battery-powered bubble machine that the neighbor had given us. My wife and I started talking about how many blades of grass were in our entire backyard. Our whole piece of property is not quite three quarters of an acre, and the backyard is about a third of it. The way to figure that out, though, is to figure out how many blades of grass there are in a square foot. After a bit of back and forth, le chat (the mistral AI) finally told me that in a more dense square foot of grass, you might have over 7,000 blades of grass and in a less dense square foot around 3,000. We didn't do the math on our whole yard, but we at least know the formula if we ever care to.
Thinking by the square foot is truly how empires fall. Realizing that the world is divisible not just by state, but also by square foot, is a critical step towards manifesting sovereignty. The world is not just cities, counties, nations, continents -- the network that we impact is not defined by armies, politicians, or CEOs unless we let it be.
As we think about the expansion of our hyper-local spaces, the permaculture design principles about controlling edges seemed relevant to me. This is from mistral:
In permaculture, the principle of "using edges and valuing the marginal" is one of the key design principles. This principle emphasizes the importance of the edges or boundaries in a system, where different environments or ecosystems meet. These edges are often the most diverse and productive areas because they allow for interactions between different elements.
Here are some key aspects of this principle:
Increased Productivity: Edges are often more productive because they receive inputs from multiple environments. For example, the edge of a forest and a meadow might receive sunlight from the meadow side and nutrients from the forest side.
Diversity: Edges support a greater diversity of species because they provide a variety of microclimates and resources. This diversity can lead to more resilient ecosystems.
Innovation: Edges are places of interaction and exchange, which can lead to new ideas and innovations. In a permaculture design, this might mean placing elements that benefit from interaction at the edges of different zones.
Valuing the Marginal: This principle also encourages valuing and utilizing marginal spaces and resources that might otherwise be overlooked. By doing so, permaculture aims to make the most efficient use of all available resources.
In practical terms, this principle might be applied by designing gardens or farms to maximize edge environments, such as by using keyhole beds or creating winding paths that increase the amount of edge in the landscape. It's about recognizing the potential in transitional spaces and leveraging it for greater productivity and resilience.
In permaculture, the principle of "using edges and valuing the marginal" is one of the key design principles. This principle emphasizes the importance of the edges or boundaries in a system, where different environments or ecosystems meet. These edges are often the most diverse and productive areas because they allow for interactions between different elements.
Here are some key aspects of this principle:
-
Increased Productivity: Edges are often more productive because they receive inputs from multiple environments. For example, the edge of a forest and a meadow might receive sunlight from the meadow side and nutrients from the forest side.
-
Diversity: Edges support a greater diversity of species because they provide a variety of microclimates and resources. This diversity can lead to more resilient ecosystems.
-
Innovation: Edges are places of interaction and exchange, which can lead to new ideas and innovations. In a permaculture design, this might mean placing elements that benefit from interaction at the edges of different zones.
-
Valuing the Marginal: This principle also encourages valuing and utilizing marginal spaces and resources that might otherwise be overlooked. By doing so, permaculture aims to make the most efficient use of all available resources.
In practical terms, this principle might be applied by designing gardens or farms to maximize edge environments, such as by using keyhole beds or creating winding paths that increase the amount of edge in the landscape. It's about recognizing the potential in transitional spaces and leveraging it for greater productivity and resilience.
The revolution will begin in your square meter, and it will grow when you use edges and value the marginal.
We are all on the edge over here in the Nostr-ecosystem. And bitcoin allows you to store your value in your square meter without interference from those who currently control many square meters.
Stay sovereign.
-
-
@ 4e088f30:744b1792
2025-04-14 12:38:12Pouco menos de um mês antes de sua morte, minha mãe escreveu um texto com suas reflexões sobre a carta dezesseis do conjunto de cartas que eu criei. Ela estava lendo com a fonoaudióloga que a atendia e me contou. Eu disse que queria ouvir a reflexão, e um dia ela gravou um áudio para mim.
A carta dizia assim:
Ajo como borboleta que vai contra a força da vida ao sair do casulo tentando controlar o modo como será vista. Não percebo que tudo o que precisa ser feito agora é me entregar às minhas próprias asas.
Se a borboleta sai do casulo para ser vista como idealiza, o que ela deixa de ver, o que ela deixa de nutrir na vida?
Um dos trechos do texto que ela escreveu era:
“Você pode me ver?”
E eu me pergunto: será que tenho coragem de vê-la por inteiro? Ver sem palavras, sem conceitos, sem julgamentos, sem projeções? Será que tenho coragem de apenas ver quem ela é?
–
Outro dia, estava na casa dela - e o que mais me interessa sempre são seus cadernos - eu encontrei um que ainda não tinha visto. Parece que ela o usava em meados dos anos 90. Eu o abri e encontrei o nome Elizabeth Kubler Ross e eu tinha lido alguns livros dela alguns anos atrás, quando comecei a mergulhar em estudos sobre cuidados paliativos, morte e luto, então achei oportuno e li o que estava escrito:
“Depois de passar por todas as provas para as quais fomos mandados à terra como parte de nosso aprendizado, podemos nos formar. Podemos sair do nosso corpo, que aprisiona a alma como um casulo aprisiona a futura borboleta e, no momento certo, deixá-lo para trás. E estaremos livres da dor, livres dos medos e livres das preocupações… Livres como uma borboleta voltando para casa, para Deus… em um lugar onde nunca estamos sós, onde continuamos a crescer, a cantar, a dançar, onde estamos com aqueles que amamos e cercados de mais amor que jamais poderemos imaginar.” Elizabeth Kubler Ross, M.D (A roda da vida)
Antes de ouvir o que ela tinha escrito, eu disse que ela estava confiando na fonoaudióloga para se abrir e isso ia ajudá-la a florescer, ela emendou com “largar o casulo e virar borboleta”. Ela se sentia ainda emaranhada no casulo. No último ano ela falou algumas vezes sobre a necessidade de desapegar, sobre a única dificuldade dela ser soltar o apego a nós, os filhos dela. Mas ela foi fazendo o trabalho de soltar e soltar e soltar, até que se entregou às suas asas que sempre foram lindas e brilhantes a cada metamorfose em vida, e agora sendo vida.
Começo essa jornada, que ainda não sei o que será - embora tenha alguns desejos, com esses escritos, que ofereço à Vida, que já foi chamada de Glória e de minha mãe.
-
@ 846ebf79:fe4e39a4
2025-04-14 12:35:54The next iteration is coming
We're busy racing to the finish line, for the #Alexandria Gutenberg beta. Then we can get the bug hunt done, release v0.1.0, and immediately start producing the first iteration of the Euler (v0.2.0) edition.
While we continue to work on fixing the performance issues and smooth rendering on the Reading View, we've gone ahead and added some new features and apps, which will be rolled-out soon.
The biggest projects this iteration have been:
- the HTTP API for the #Realy relay from nostr:npub1fjqqy4a93z5zsjwsfxqhc2764kvykfdyttvldkkkdera8dr78vhsmmleku,
- implementation of a publication tree structure by nostr:npub1wqfzz2p880wq0tumuae9lfwyhs8uz35xd0kr34zrvrwyh3kvrzuskcqsyn,
- and the Great DevOps Migration of 2025 from the ever-industrious Mr. nostr:npub1qdjn8j4gwgmkj3k5un775nq6q3q7mguv5tvajstmkdsqdja2havq03fqm7.
All are backend-y projects and have caused a major shift in process and product, on the development team's side, even if they're still largely invisible to users.
Another important, but invisible-to-you change is that nostr:npub1ecdlntvjzexlyfale2egzvvncc8tgqsaxkl5hw7xlgjv2cxs705s9qs735 has implemented the core bech32 functionality (and the associated tests) in C/C++, for the #Aedile NDK.
On the frontend:
nostr:npub1636uujeewag8zv8593lcvdrwlymgqre6uax4anuq3y5qehqey05sl8qpl4 is currently working on the blog-specific Reading View, which allows for multi-npub or topical blogging, by using the 30040 index as a "folder", joining the various 30041 articles into different blogs. She has also started experimenting with categorization and columns for the landing page.
nostr:npub1l5sga6xg72phsz5422ykujprejwud075ggrr3z2hwyrfgr7eylqstegx9z revamped the product information pages, so that there is now a Contact page (including the ability to submit a Nostr issue) and an About page (with more product information, the build version displayed, and a live #GitCitadel feed).
We have also allowed for discrete headings (headers that aren't section headings, akin to the headers in Markdown). Discrete headings are formatted, but not added to the ToC and do not result in a section split by Asciidoc processors.
We have added OpenGraph metadata, so that hyperlinks to Alexandria publications, and other events, display prettily in other apps. And we fixed some bugs.
The Visualisation view has been updated and bug-fixed, to make the cards human-readable and closeable, and to add hyperlinks to the events to the card-titles.
We have added support for the display of individual wiki pages and the integration of them into 30040 publications. (This is an important feature for scientists and other nonfiction writers.)
We prettified the event json modal, so that it's easier to read and copy-paste out of.
The index card details have been expanded and the menus on the landing page have been revamped and expanded. Design and style has been improved, overall.
Project management is very busy
Our scientific adviser nostr:npub1m3xdppkd0njmrqe2ma8a6ys39zvgp5k8u22mev8xsnqp4nh80srqhqa5sf is working on the Euler plans for integrating features important for medical researchers and other scientists, which have been put on the fast track.
Next up are:
- a return of the Table of Contents
- kind 1111 comments, highlights, likes
- a prototype social feed for wss://theforest.nostr1.com, including long-form articles and Markdown rendering
- compose and edit of publications
- a search field
- the expansion of the relay set with the new relays from nostr:npub12262qa4uhw7u8gdwlgmntqtv7aye8vdcmvszkqwgs0zchel6mz7s6cgrkj, including some cool premium features
- full wiki functionality and disambiguation pages for replaceable events with overlapping d-tags
- a web app for mass-uploading and auto-converting PDFs to 30040/41 Asciidoc events, that will run on Realy, and be a service free for our premium relay subscribers
- ability to subscribe to the forest with a premium status
- the book upload CLI has been renamed and reworked into the Sybil Test Utility and that will get a major release, covering all the events and functionality needed to test Euler
- the #GitRepublic public git server project
- ....and much more.
Thank you for reading and may your morning be good.
-
@ 7d33ba57:1b82db35
2025-04-14 11:00:25Nestled at the foot of the Alps, Salzburg is a city where Baroque beauty, musical legacy, and alpine magic come together. Best known as the birthplace of Mozart and the setting for The Sound of Music*, Salzburg is both elegant and enchanting—with fortress views, winding lanes, and a rich cultural rhythm that’s hard to resist.
🌟 Top Things to Do in Salzburg
1️⃣ Hohensalzburg Fortress
- One of Europe’s best-preserved medieval castles, perched high above the city
- Take the funicular or hike up for sweeping views
- Explore towers, armories, and eerie dungeons
2️⃣ Old Town (Altstadt)
- A UNESCO World Heritage Site filled with Baroque buildings, charming squares, and boutique-lined alleys
- Don’t miss Getreidegasse, a bustling shopping street with Mozart’s birthplace at No. 9
- Stop for a coffee in a historic café like Café Tomaselli
3️⃣ Mirabell Palace & Gardens
- Iconic filming location for The Sound of Music
- The gardens are perfect for a peaceful stroll or a picnic with palace views
- Pop into the Marble Hall—often used for classical concerts
4️⃣ Mozart’s Legacy
- Visit Mozart’s Birthplace and Mozart’s Residence for insight into his early life
- Enjoy a Mozart concert in a candlelit palace or at the fortress
5️⃣ Salzburg Cathedral & DomQuartier
- The majestic Salzburger Dom is the heart of the city’s religious life
- Explore the DomQuartier, a grand museum route through palaces, galleries, and cathedral terraces
🧀 What to Eat in Salzburg
- Kasnocken – Austrian-style cheesy dumplings with crispy onions
- Wiener Schnitzel – Classic veal (or pork) cutlet, perfectly golden
- Salzburger Nockerl – A fluffy baked dessert representing the city's snowy hills
- Sip a local Stiegl beer or warm up with a Glühwein in colder months
🎶 The Sound of Music Fans?
- Join a Sound of Music tour to visit film locations like Leopoldskron Palace, Nonnberg Abbey, and the gazebo from “Sixteen Going on Seventeen”
- Even if you’re not a fan, the scenery is worth it!
🏞️ Day Trips from Salzburg
- Hallstatt – Stunning lakeside village (2 hrs) with picture-perfect alpine views
- Eagle’s Nest (Kehlsteinhaus) – WWII site with panoramic mountain views
- Werfen Ice Caves – The largest ice cave system in the world
- Salzkammergut Lakes – Beautiful region of lakes and hills (perfect in summer)
🎯 Quick Tips
✅ Salzburg is compact and walkable—explore on foot
✅ Best time to visit: spring to early autumn, or December for magical Christmas markets
✅ Salzburg Card is worth it if you plan to visit several museums or use public transport
✅ Stay at least 2 nights to soak in both culture and scenery -
@ b17fccdf:b7211155
2025-04-14 07:07:54What's changed
- Updated Fulcrum and added the new configuration parameter:
zmq_allow_hashtx = true
~> diff reference, to subscribe to Bitcoind's transaction notifications, enabling real-time detection of mempool transactions. - Updated Fulcrum and deleted unnecessary
FulcrumAdmin
commands after this comment. The changes were on Configuration ~> diff reference and systemd service configuration ~> diff reference. - New Resources Launched and added on Homepage & Menus: Calendar (Launchpad) + Badge (requested by a DM to 2FakTor) < ~ REMOVE the "[]" symbols from the URLs (naddr/npub...) to access.
- Readded project tags on the Homepage.
- Readded Broadcast past events section on Nostr relay in Rust bonus guide with a new method.
- Modernize Ordisrespector guide by @Unhosted Marcellus < ~ REMOVE the "[]" symbols from the URL (npub...) to access | in PR #113.
- Updated Electrs and added the new configuration parameter:
db_parallelism=4
to allow concurrent DB background operations. - Added new FREE service: Hockeypuck OpenPGP Public Keyserver (soon will be a guide on MiniBolt to build it).
- Phrasing and formatting consistency on Wireguard VPN by @Singlebeam < ~ REMOVE the "[]" symbols from the URL (npub...) to access | in PR #109.
- Updated Bitcoin Core to the latest v28.1.
- Updated LND to the latest v0.18.5.
- Updated other services: NBXplorer + BTCPay Server + Cloudflared + Go; to the latest versions.
- Added new Remote access over Tor and Allow insecure WebSocket connections in Firefox-based browsers sections on Nostr relay in Rust guide and separated Cloudflare tunnel configuration in a dedicated extra section.
- Added a new Upgrade to major version section on PostgreSQL guide.
- Added a new Upgrade to major version section on Node + NPM guide.
- Added a "Uninstall Snap" (optional section) on Configuration. Although it is in the initial stages (1.4 Configuration), it can be applied anytime.
- Included some useful commands in the PostgreSQL guide.
- Added and separated Cloudflare tunnel configuration in a dedicated extra section on BTCPay Server and BTC RPC Explorer.
- Separated Wireguard VPN + Cloudflare tunnel + Tor services: bridges & relays to a new "Networking" category.
- Separated Login with SSH keys guide to a new and dedicated "Security" section.
- Added
AssumeReachable=1
new parameter on obfs4 bridge config ~> diff reference. - Added new items to the Bitcoin Core extra section to Accelerate the IBD and Improve the reliability.
- Completed the improvement of the official MiniBolt Linktr (FOSS version).
- Added a new section to the Nostr Relay in Rust bonus guide to create a Cloudflare exception that allows incoming connections from Tor.
- Other minor fixes and improvements.
~> If you have any questions, feel free to join one of our discussion groups on our 🌳Linktr page🌳
Enjoy it! 🖥🔄🍓
- Updated Fulcrum and added the new configuration parameter:
-
@ 502ab02a:a2860397
2025-04-14 03:32:56หรือต้นน้ำของปัญหาจะเป็น UPOV 1991?
เมื่อพูดถึงสิทธิในเมล็ดพันธุ์ หลายคนอาจนึกถึงแค่เรื่องเกษตรกรรมพื้นบ้านหรือพันธุ์พื้นเมืองที่ใช้สืบต่อกันมาในครอบครัว แต่ความจริงแล้ว ในโลกเบื้องลึกของการค้าระหว่างประเทศ มีข้อตกลงที่เปลี่ยน "เมล็ดพันธุ์" ให้กลายเป็น "ทรัพย์สินทางปัญญา" และอาจเปลี่ยนเกษตรกรให้กลายเป็นผู้ละเมิดลิขสิทธิ์โดยไม่รู้ตัว... นั่นคือ UPOV 1991
UPOV (ยูพอฟ) หรือ International Union for the Protection of New Varieties of Plants คือองค์กรที่เริ่มต้นขึ้นในยุโรปตั้งแต่ปี 1961 โดยมีเจตนาดีในช่วงแรก คือคุ้มครองนักปรับปรุงพันธุ์พืช ให้มีแรงจูงใจในการพัฒนาสายพันธุ์ใหม่ๆ แต่เมื่อระบบทุนนิยมเข้ามาขับเคลื่อนกลไกเกษตรอุตสาหกรรม ข้อตกลงฉบับ UPOV 1991 จึงกลายร่างเป็นเครื่องมือที่ทรงพลังที่สุดในการผูกขาดพันธุกรรมของพืช
UPOV 1991 คือชื่อย่อของ อนุสัญญาสหภาพเพื่อคุ้มครองพันธุ์พืช ฉบับปี 1991 (International Convention for the Protection of New Varieties of Plants – 1991 Act) ซึ่งเป็นหนึ่งในกฎหมายระหว่างประเทศที่ทรงอิทธิพลที่สุดในโลกเรื่อง “สิทธิในเมล็ดพันธุ์” คล้ายกับลิขสิทธิ์สำหรับนักปรับปรุงพันธุ์พืช (Plant Breeders' Rights) และถือว่าเป็นเวอร์ชันที่ “โหดสุด” สำหรับเกษตรกรรายย่อยและประเทศกำลังพัฒนา โดยเฉพาะเมื่อเทียบกับฉบับเก่าอย่าง UPOV 1978
หนึ่งในบทบัญญัติที่อันตรายที่สุดของ UPOV 1991 คือการห้ามเกษตรกรเก็บเมล็ดพันธุ์ไว้ปลูกในฤดูกาลถัดไป (farm-saved seeds) โดยเฉพาะหากพันธุ์นั้นได้รับการจดทะเบียนในระบบของ UPOV แล้ว ซึ่งหมายความว่า แม้ชาวนาจะซื้อเมล็ดมาปลูกบนที่ดินของตัวเอง ดูแลด้วยสองมือจนได้ผลผลิต พอเก็บเมล็ดไว้ปลูกต่อปลูกซ้ำ กลับกลายเป็นว่าละเมิดสิทธิของเจ้าของพันธุ์เสียอย่างนั้นและโดนฟ้องได้
รวมถึงห้ามนำเมล็ดไปแลกเปลี่ยนหรือแจกจ่ายให้คนอื่น แม้แต่การแบ่งเมล็ดให้เพื่อนบ้าน ก็อาจถือว่าละเมิดสิทธิ์ของเจ้าของพันธุ์ได้
พูดง่ายๆคือ มันคือการเปลี่ยนเมล็ดพันธุ์ธรรมชาติ ให้กลายเป็นซอฟต์แวร์ ที่ต้องซื้อ license ใหม่ทุกปี
ไม่เพียงเท่านั้น UPOV 1991 ยังขยายขอบเขตการคุ้มครองไปถึง "พืชลูกหลาน" ที่สืบทอดลักษณะทางพันธุกรรมของพันธุ์ต้นแบบ แม้เกษตรกรจะเพาะปลูกและคัดเลือกสายพันธุ์ต่อยอดเอง แต่หากลักษณะสำคัญยังใกล้เคียงกับพันธุ์ดั้งเดิม ก็ยังถือว่าละเมิดอยู่ดี
นี่จึงเปิดทางให้บริษัทใหญ่ระดับโลก เช่น Monsanto (ปัจจุบันกลืนรวมกับ Bayer) มีสิทธิครอบครองสายพันธุ์พืชแบบเกือบเบ็ดเสร็จ และเรียกเก็บค่าลิขสิทธิ์จากเกษตรกรายปีได้
ลองจินตนาการดูว่า หากวันหนึ่งทุกผักในตลาด ไม่ว่าจะเป็นข้าว ข้าวโพด พริก มะเขือ หรือแม้แต่บรอกโคลี เป็นสายพันธุ์ที่ต้องจ่ายค่าลิขสิทธิ์ทุกปี เกษตรกรจะยังมีอิสระในการเพาะปลูกอยู่หรือไม่?
ประเทศไทยเอง แม้ยังไม่เข้าร่วม UPOV 1991 อย่างเป็นทางการ แต่ก็เผชิญแรงกดดันจากข้อตกลงการค้าเสรี (FTA) และกลุ่มทุนต่างชาติให้แก้ไขกฎหมายภายใน เช่น ร่าง พ.ร.บ.คุ้มครองพันธุ์พืช ที่เคยถูกวิจารณ์อย่างหนักว่าเลียนแบบ UPOV 1991 แทบทุกบรรทัด
ในขณะที่โลกกำลังพูดถึง "Seed Sovereignty" หรืออธิปไตยของเมล็ดพันธุ์ การรักษาสิทธิของเกษตรกรในการเก็บ แลกเปลี่ยน และปรับปรุงพันธุ์พืชโดยไม่ถูกผูกขาดด้วยระบบลิขสิทธิ์ UPOV 1991 กลับทำหน้าที่ตรงข้ามอย่างสิ้นเชิง
มันไม่ใช่แค่ข้อตกลงที่เขียนด้วยภาษากฎหมาย แต่มันคือกรงขังที่มองไม่เห็น ที่ล็อกเกษตรกรเอาไว้กับพันธุ์พืชที่พวกเขาไม่ได้เป็นเจ้าของ แม้จะปลูกมันเองกับมือก็ตาม
ทางออกเดียวอาจไม่ใช่แค่การไม่เข้าร่วม UPOV 1991 แต่คือการกลับมาสร้างระบบอาหารที่ยั่งยืนตั้งแต่เมล็ดพันธุ์ ระบบที่ให้สิทธิ์กับผู้ปลูกอย่างแท้จริง ไม่ใช่ระบบที่ให้อำนาจแค่กับผู้จดทะเบียน
แล้วอะไรจะเป็น right exit? #pirateketo #กูต้องรู้มั๊ย #ม้วนหางสิลูก
-
@ fd06f542:8d6d54cd
2025-04-14 02:32:03NIP-09
Event Deletion Request
draft
optional
A special event with kind
5
, meaning "deletion request" is defined as having a list of one or moree
ora
tags, each referencing an event the author is requesting to be deleted. Deletion requests SHOULD include ak
tag for the kind of each event being requested for deletion.The event's
content
field MAY contain a text note describing the reason for the deletion request.For example:
jsonc { "kind": 5, "pubkey": <32-bytes hex-encoded public key of the event creator>, "tags": [ ["e", "dcd59..464a2"], ["e", "968c5..ad7a4"], ["a", "<kind>:<pubkey>:<d-identifier>"], ["k", "1"], ["k", "30023"] ], "content": "these posts were published by accident", // other fields... }
Relays SHOULD delete or stop publishing any referenced events that have an identical
pubkey
as the deletion request. Clients SHOULD hide or otherwise indicate a deletion request status for referenced events.Relays SHOULD continue to publish/share the deletion request events indefinitely, as clients may already have the event that's intended to be deleted. Additionally, clients SHOULD broadcast deletion request events to other relays which don't have it.
When an
a
tag is used, relays SHOULD delete all versions of the replaceable event up to thecreated_at
timestamp of the deletion request event.Client Usage
Clients MAY choose to fully hide any events that are referenced by valid deletion request events. This includes text notes, direct messages, or other yet-to-be defined event kinds. Alternatively, they MAY show the event along with an icon or other indication that the author has "disowned" the event. The
content
field MAY also be used to replace the deleted events' own content, although a user interface should clearly indicate that this is a deletion request reason, not the original content.A client MUST validate that each event
pubkey
referenced in thee
tag of the deletion request is identical to the deletion requestpubkey
, before hiding or deleting any event. Relays can not, in general, perform this validation and should not be treated as authoritative.Clients display the deletion request event itself in any way they choose, e.g., not at all, or with a prominent notice.
Clients MAY choose to inform the user that their request for deletion does not guarantee deletion because it is impossible to delete events from all relays and clients.
Relay Usage
Relays MAY validate that a deletion request event only references events that have the same
pubkey
as the deletion request itself, however this is not required since relays may not have knowledge of all referenced events.Deletion Request of a Deletion Request
Publishing a deletion request event against a deletion request has no effect. Clients and relays are not obliged to support "unrequest deletion" functionality.
-
@ 88cc134b:5ae99079
2025-04-14 02:15:34I like it when articles start with an intro paragraph, rather than a heading. Diving straight in with a header is a bit heavy handed. We need a bit of foreplay here. Don't need to hit them with a sledgehammer from the start.
How to Use Headings
Well, we did it. We totally used a heading. The demonstration was a complete success. Overwhelming victory. Let's try subheadings now...
Ordered Lists
No test is complete without an ordered list:
- Always use a good opening for the fist point
- Then bring it home with the last point
Bulleted Lists
There is something so business-like with bulleted lists:
- You get to list without caring for the order
- Feels like there is less at stake
A Now for Some Images
Here we go. The real deal now. Everyone will know we're serious now:
-
@ fd06f542:8d6d54cd
2025-04-14 02:06:32nostrbook 技术框架
源代码在 github.com
git clone https://github.com/nostrbook/nostrbook cd nostrbook npm install npm run dev
- 网站主框架 vite + svelte
- 网站浏览书框架 docsify
网站主框架
svelte 为主,daisyui (tailwindcss) css 。 页面的逻辑结构 都是 svelte搭建的, 采用了 layout 左侧菜单。
菜单代码 在 https://github.com/nostrbook/nostrbook/blob/main/src/lib/SideMenu.svelte 菜单里用了弹框登录,弹框的代码基本是问的 AI。
子页面和 路由器看sveltekit规则编写。
书籍的数据
https://github.com/nostrbook/nostrbook/blob/main/src/lib/bookevent.ts 使用的nostr ndk 库来读写 relay。 书的 tag, 内容就是 标题,封面和作者。
[ ['t',booktag], ['title',content['title']], ];
章节的数据
[ ['t',chaptertag], ['title',title], ['d',filename + "-" + bookid], ['e',bookid], ];
这里面的 d,采用了 文件名 + bookid,所以每一本的章节名的文件名是唯一的。配置文件
src/lib/config.ts,主要配置 服务器的地址 * 图片文件 nip96 服务器 * relays 服务器 * book的tag ,测试和 release不一样。 如果自己部署独有的服务器也可以不一样。这样内容可以垂直。
首页采用了缓冲机制
首页的内容来自 书籍的列表, 用booktag和30023来区分是不是书籍信息。 为了搜索引擎友好,让页面加载就有数据。
采用了 src/hooks.server.ts 预备加载数据,数据会被首页面 src/routes/+page.server.ts 传给 page.svelte去渲染。 这一切都是后台完成的。html页面加载的时候数据都已经渲染完成了。所以对搜索引擎非常友好。搞定了google,seo。
但是为了数据的完整性, 页面起来后会继续读取列表,这时候可能会显示最新的数据。
增加了 sitemap功能
在 hooks.server.ts 文件里 增加了记录访问成功的页面,并且更新到sitemap.xml 文件里面 ```js export const handle: Handle = async ({ event, resolve }) => { event.locals.books = cachedBooks; // 共享数据 const response = await resolve(event); const {url,method} = event.request; console.log(url,response.status) if (response.status == 200){ let url = event.url.toString(); url = replaceHttpToHttps(url); if (!successfulUrls.has(url)){ successfulUrls.add(url); generateSitemap(); } } return response };
```
然后配置 nginx 设置一个sitemap.xml 链接到 nostrbook/static/sitemap.xml文件。
robots.txt
Sitemap: https://nostrbook.com/sitemap.xml
让爬虫 知道 这个sitemap的存在xml This XML file does not appear to have any style information associated with it. The document tree is shown below. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://nostrbook.com/</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/19105641454b483284cf76c42fbdde2ed3f47b1bb2a366a58eaa49630d385027.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/a7f85dfe651aaa0b47d69659266f434479e40558a640a308a8f6769627305a2b/e9801593f2ea4560c55a6a2651788620cfe6c587c17c08f0e8023f06e7ffaf31.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/232dd9c092e023beecb5410052bd48add702765258dcc66f176a56f02b09cf6a.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/1dd58d181d40edb7df942b5b16be3f82e95348a471d5a3620a9585f0af784fee.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/5ad7189d30c9b49aa61652d98ac7853217b7e445f863be09f9745c49df9f514c.webp</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157?title=nostr-examples</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7?title=NostrBook%E7%AB%99%E7%82%B9%E6%97%A5%E8%AE%B0</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/01.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/02.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997?title=Nostr%20protocol</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/01.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/02.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/04.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/03.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/05.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/06.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/08.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/07.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34?title=nostr%E8%B5%84%E6%BA%90%E6%94%B6%E9%9B%86</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/01.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/02.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951</loc> </url> <url> <loc>https://www.nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34?title=nostr%E8%B5%84%E6%BA%90%E6%94%B6%E9%9B%86</loc> </url> <url> <loc>https://www.nostrbook.com/</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/createbook</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7</loc> </url> <url> <loc>https://nostrbook.com/about</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34</loc> </url> <url> <loc>https://nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951</loc> </url> <url> <loc>https://www.nostrbook.com/about</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997</loc> </url> <url> <loc>https://www.nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34</loc> </url> <url> <loc>https://www.nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7</loc> </url> <url> <loc>https://www.nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/a7f85dfe651aaa0b47d69659266f434479e40558a640a308a8f6769627305a2b/e9801593f2ea4560c55a6a2651788620cfe6c587c17c08f0e8023f06e7ffaf31.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/19105641454b483284cf76c42fbdde2ed3f47b1bb2a366a58eaa49630d385027.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/232dd9c092e023beecb5410052bd48add702765258dcc66f176a56f02b09cf6a.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/1dd58d181d40edb7df942b5b16be3f82e95348a471d5a3620a9585f0af784fee.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/5ad7189d30c9b49aa61652d98ac7853217b7e445f863be09f9745c49df9f514c.webp</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/readme.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/getstart.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/readme.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/04.md</loc> </url> <url> <loc>https://nostrbook.com/books/_sidebar.md/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157?title=nostr-examples</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/getstart.md</loc> </url> <url> <loc>https://www.nostrbook.com/writebook</loc> </url> </urlset>
-
@ 5d4b6c8d:8a1c1ee3
2025-04-14 00:32:26The matchups are set, so we can get the contest underway.
You need to select one team from this round to win their game. You also need to predict who will be the highest scoring player in this round.
Matchups (seed)
- Hawks (8) @ Magic (7)
- Heat (10) @ Bulls (9)
- Grizzlies (8) @ Warriors (7)
- Mavericks (10) @ Kings (9)
Scoring this round: 1 Point for your team winning + Your team's seed if they win + 1 Point for picking the correct top scorer
This round has a maximum of 12 points.
originally posted at https://stacker.news/items/942654