-
@ 955e5a04:c03b3cc3
2024-04-29 13:36:19"If the things that cause you unease or disturb your peace don't come to you, but you, in a certain way, go to them, remaining unmoved, then judgment must cease warring against them. And thus, you will no longer desire them nor flee from them henceforth." –Marco Aurelio
"In this meditation, Marco Aurelio reflects on how our emotional reactions are influenced by our desires and aversions, rather than external circumstances.
Here's an interpretation for each line, based on all the principles applied in Stoicism and his Meditations, this is in the 11th book:
"If the things that cause you unease or disturb your peace don't come to you": Marco Aurelio points out that the things that cause us emotional distress don't actively pursue us, but it's our own reactions to them that create that distress. "But rather, you, in a certain way, go to them, remaining unmoved": Suggests that it's us who, in some way, seek out those disturbing emotions, even when external circumstances remain unchanged. "Therefore judgment must cease warring against them": Here, Marco Aurelio advocates for ceasing to fight against those disturbing emotions with the power of judgment or reason. Instead of resisting them, he suggests we should accept them as part of our human experience. "And thus, you will no longer desire them nor flee from them henceforth": By freeing ourselves from the struggle against those emotions, we cease to desire or fear them in the future. By accepting them peacefully, we lose interest in them and no longer actively pursue or avoid them."
Embrace inner strength. Master reactions. Find peace. That's the true path to empowerment and serenity.
-
@ 76c71aae:3e29cafa
2024-04-27 02:17:10Why are there 5.5 million people with Bluesky accounts and about 800k to 1.3M on Nostr?
Some of it boils down to social dynamics and chance. It's akin to how immigrants often cluster in the same neighborhoods. Most people are simply following their communities, and their primary decision is driven by where their community is heading.
Why did the communities choose Bluesky over Nostr, Mastodon, Farcaster, or the several dozen centralized and decentralized alternatives?
That’s a more pertinent question. Firstly, very few people actually make these decisions, and most simply follow them. Secondly, the choices aren't primarily based on the technology or the features of the apps or protocols.
Bluesky had certain advantages and disadvantages. It received a fair amount of press as a Twitter spinoff. However, it was late to launch, only preceded by Threads, which had Meta’s platforms for promotion.
In terms of initial marketing, I’d say Bluesky and Nostr were about equal, both often pitched as a ‘Jack Dorsey thing’, which wasn’t true in either case. The press loves stories about people and drama over networks and systems. Social media is vast and complex, and its technology even more so, which is why it’s often presented through personalized narratives about the creators.
Under the hood, Bluesky’s atproto and Nostr are very similar technologically. Both were inspired by Secure Scuttlebutt. Bluesky has adopted a cathedral model of open source, akin to how Android is open source but controlled by Google. Meanwhile, Nostr developed under the bazaar model of open source, created by a community rather than a company.
This company model gives Bluesky some advantages; for instance, they could launch with an invite list, a classic tactic to make something feel more desirable. Even then, most Bluesky users haven’t posted a single thing, and when they had a million registered users, they had fewer than 1500 Daily Active Users (DAU) see bluesky stats.
Bluesky is a lot easier to try than Nostr. The ways keys and content signing work in Bluesky and Nostr are overwhelmingly similar, except that Nostr doesn’t tell you where to store your keys and in Bluesky, you put them on your PDS server, which Bluesky provided free by default for all new users.
This means for Nostr, you have to figure out what to do with your nsec and npub, then how to get a nip-05 for a Nostr name which makes sense. If you want to log in with a username and password, you need to find and set up a nip-46 service. Not all apps support that, so you’re copying and pasting around an nsec. If you want to use a web app, you need to go find and choose one of several browser extensions and set that up. This is easy and natural for folks with experience in crypto but really foreign for everyone else.
Maybe a million people have figured out how to get started on Nostr; it’s definitely possible. And some apps like Primal and Nos have integrated name services as part of the signup, which makes it cleaner.
Once you’re on Nostr, people often discuss zaps, a functionality that may not work as expected. You’ve got to learn how to set up a wallet, what lightning and Bitcoin are. Some get really into it, we’ve seen folks get into Bitcoin through Nostr, but for many, it’s a confusing hurdle.
Bluesky provides a neat way to get into a single default app and gives you a username. Sure, you can change it—I self-host my DID at rabble.nz—but apparently less than 1% of Bluesky users do that, just like most Nostr users have chosen to use a cloud service for their nip-05 Nostr name.
Why else has Bluesky grown bigger than Nostr? It's their approach to positioning the protocol. They’ve set up default moderation controls and a trust and safety team. Initially, they didn’t have these, and when users demanded action and the company refused, growth stalled and usage dropped last July. The Bluesky team didn’t post for about a month, and there was a real question about whether Bluesky would survive.
The user community wanted pretty heavy-handed moderation. The Bluesky team was committed to building a decentralized protocol that didn’t do that. The compromise was that Bluesky would be slow about opening up open federation over atproto until the Bluesky apps, protocol, and company-hosted services could have a trust and safety team and a moderation bot. Their moderation bot is fancier than @reportinator, but it’s the same idea, but with a bigger team of humans reviewing reports. And if you’re using the Bluesky-provided PDS, there’s no way to block or unfollow their default moderation bot. We don’t make everybody on Nostr follow nostr:npub14h23jzlyvumks4rvrz6ktk36dxfyru8qdf679k7q8uvxv0gm0vnsyqe2sh .
That compromise worked for the community and company, and the user base started growing again. The negative press about Bluesky's content ceased and those upset by the policies left, some migrating to Nostr. Bluesky was able to position itself as the socially responsible social media protocol that was easy to use. Jack deleted his Bluesky account, signaling to the world and press what we already knew: he is much more interested in Nostr’s approach to bottom-up development by community and support for lightning payments.
During this period, Nostr's growth really stalled. There are a few reasons for this. We'd saturated the community of folks who both love Bitcoin and dislike Elon enough to leave Twitter. Additionally, our new user experience pushed people to view a global feed dominated by a single topic of conversation.
Nostr has positioned itself strongly as a protocol for those who are freedom-loving, anti-censorship Bitcoin enthusiasts. The easiest Nostr client for new users, Primal, markets itself as a Bitcoin wallet first, and only secondarily as a social media app. People view Nostr as a Web3 project. We’ve had individuals visit the Nos.social website and decline involvement, saying they dislike Web3 because they perceive it as a planet-harming scam (let's not argue the carbon emissions of mining here). We never mention Web3 or any cryptocurrency elements on the Nos website, yet all decentralization has been associated with dubious schemes.
As Nostr’s growth has stalled, the ecosystem has matured and flourished. Nostr boasts technology and apps that other platforms envy. I often hear Bluesky and Fediverse developers express admiration for the cool things Nostr is doing with technology and apps, but since their communities don’t use it, they don’t either.
Just look at the articles my posts last week about Nostr vs. ActivityPub kicked off: Extending ActivityPub and Nomadic Identity is Coming to ActivityPub
I suspect what’s holding back Nostr is twofold. First, how we talk about Nostr. We discuss it in political and ideological terms—we're against censorship, for free speech, value-for-value, etc.—but not about the types of content and people on Nostr, how to find your friends, or the interesting stuff you followed elsewhere. Nor do we talk about how you can use all these cool apps with the same identity and content. It's a hard concept to grasp, and I find myself constantly having to explain it.
The biggest issue people see with Nostr is its perceived association with Bitcoin enthusiasts plus those who’ve been deplatformed elsewhere, often for contentious reasons. I’m not saying the deplatforming was justified, but the perception among those unfamiliar with arbitrary bans and sanctions on platforms is that those who've been deplatformed had it coming—that they were all conspiracy theorists, bigots, or harassers. Some were, some were not, but it's perceived that way by many.
The way we talk about Nostr and onboard new users doesn’t help. The goal of the creator and journalism projects we just launched was to both diversify the content on Nostr for new users and to demonstrate to those creators and journalists that micropayments and paid content on Nostr are viable alternatives/additions to how they publish on social media elsewhere. It is value-for-value without the label, because our theory is that people want the functionality but aren't so keen on the cultural ideology.
This is all solvable. We can: - Make it easier to set up a nip-05 for new users. - Ensure that nip-05 also functions as an nsec bunker for easy login, if users desire. - Add Webfinger files so your nip-05 name functions as a Fediverse name (it’s pretty easy to do; we're experimenting with it on nos.social). - Show users a variety of content types when they join. - Help users find communities, perhaps encouraging groups/channels the way Farcaster does. - Make it easy to find and choose moderation settings, offering more middleware services like Reportinator but with different content labeling ideas. - Change our marketing to attract these new users, focusing on what they can see and who they can connect with, less on Bitcoin, technology, or evading censorship. - Develop apps that offer new functionalities, drawing people in instead of being mere clones with or without certain features.
It always takes a long time for people to figure out what the native mediums are on a technology platform. Initially people would make a phone call to listen to a concert, the first radio stations had people just reading the newspaper, and the first tv broadcasts were either a camera pointed at radio announcers or a single camera shot of a play. People always do the same things, we're the same humans that evolved a couple hundred thousand years ago, same brains, same bodies. What's changed is the way we do things with technology, so what fundamental human thing can we do new and different now that we've got these social protocols and tech?
Addressing the app design and technology will help, but actual growth will come when people discover us, join, find connections, and genuinely want to invite others to join them. Nostr users are incredibly welcoming to new users. However, we also have a subset of users who engage in sexist, racist, and homophobic harassment. This harassment drives people away from Nostr and deters them from recommending it to others. If we don't provide better tools for users to protect themselves from this harassment, they'll leave and find social spaces where they feel safe. Some might abandon public social media altogether, or just switch to Bluesky, which promises to eventually open up their network and has just announced support for uploading images, coming soon.
We're way ahead of the other protocols in some areas and way behind in others. We've got enough momentum and users to figure this out, but we're not there yet.
-
@ 6b9da920:7841cc6e
2024-04-25 06:43:22When I was a corporate programmer, I never had the chance to directly work with designers because I was a backend developer and more importantly, individual contributors usually have no sayings on what designers should be. Usually, the project manager discusses with designers and decides what should be done and we as programmers just receive the decisions.
In this context, programmers are not treated as engineers because real engineers have to influence the design.
I have the chance to work on designs and with designers for the first time in my life since I started Nostr last year. It has been a huge learning journey for me.
At first, I simply saw UI designers as some kind of painter that drew the shapes I want as the product creator. I have worked with several different designers to come up with UIs or graphics in a side gig, ad-hoc way, either paid or as a community effort.
I need to thank @Karnage and nostr:npub10000003zmk89narqpczy4ff6rnuht2wu05na7kpnh3mak7z2tqzsv8vwqk who have volunteered to help me a bit.
However, the problem unveiled itself shortly. I never finished their design! Roughly 12 months ago, I asked @Karnage to do a redesign of Blowater. He finished it in like a week. But I still have not implemented 30% of what he designed!
Why?
The surface reason is that there are designs that I don't like or visuals that simply goes against the functionality intention. I, as the product creator, did not communicate clearly with the designer what functionalities I want. Therefore, many changes, iterations are needed.
The root reason is, in an exploratory project, designers can't be treated as ad-hoc helpers or outsourced laborers. They have to participate in the core process to shape the product. They can't just do the UIs, they have to actively get involved into the design of the whole product, from functionalities to UIs. This is what I did not understand back then and it took me 12 months to realize. While a designer does not need to spend 40 hours working on a single project. They still need to be considered as a full-time team member instead of an occasional helper.
To address the title, moving forward, I either have to become a UI designer myself, or I have to work with a designer who shares similar visions and is willing to work with me as a long term collaborator. I will never outsource ad-hoc design works again.
-
@ 266815e0:6cd408a5
2024-04-22 22:20:47While I was in Mediera with all the other awesome people at the first SEC cohort there where a lot of discussions around data storage on nostr and if it could be made censorship-resistent
I remember lots of discussions about torrents, hypercore, nostr relays, and of course IPFS
There were a few things I learned from all these conversations:
- All the existing solutions have one thing in common. A universal ID of some kind for files
- HTTP is still good. we don't have to throw the baby out with the bath water
- nostr could fix this... somehow
Some of the existing solutions work well for large files, and all of them are decentralization in some way. However none of them seem capable of serving up cat pictures for social media clients. they all have something missing...
An Identity system
An identity system would allow files to be "owned" by users. and once files have owners servers could start grouping files into a single thing instead of a 1000+ loose files
This can also greatly simplify the question of "what is spam" for a server hosting (or seeding) these files. since it could simply have a whitelist of owners (and maybe their friends)
What is blossom?
Blossom is a set of HTTP endpoints that allow nostr users to store and retrieve binary data on public servers using the sha256 hash as a universal id
What are Blobs?
blobs are chunks of binary data. they are similar to files but with one key difference, they don't have names
Instead blobs have a sha256 hash (like
b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f553
) as an IDThese IDs are universal since they can be computed from the file itself using the sha256 hashing algorithm ( you can get a files sha256 hash on linux using:
sha256sum bitcoin.pdf
)How do the servers work?
Blossom servers expose four endpoints to let clients and users upload and manage blobs
GET /<sha256>
(optional file.ext
)PUT /upload
Authentication
: Signed nostr event- Returns a blob descriptor
GET /list/<pubkey>
- Returns an array of blob descriptors
Authentication
(optional): Signed nostr eventDELETE /<sha256>
Authentication
: Signed nostr event
What is Blossom Drive?
Blossom Drive is a nostr app built on top of blossom servers and allows users to create and manage folders of blobs
What are Drives
Drives are just nostr events (kind
30563
) that store a map of blobs and what filename they should have along with some extra metadataAn example drive event would be
json { "pubkey": "266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5", "created_at": 1710773987, "content": "", "kind": 30563, "tags": [ [ "name", "Emojis" ], [ "description", "nostr emojis" ], [ "d", "emojis" ], [ "r", "https://cdn.hzrd149.com/" ], [ "x", "303f018e613f29e3e43264529903b7c8c84debbd475f89368cb293ec23938981", "/noStrudel.png", "15161", "image/png" ], [ "x", "a0e2b39975c8da1702374b3eed6f4c6c7333e6ae0008dadafe93bd34bfb2ca78", "/satellite.png", "6853", "image/png" ], [ "x", "e8f3fae0f4a43a88eae235a8b79794d72e8f14b0e103a0fed1e073d8fb53d51f", "/amethyst.png", "20487", "image/png" ], [ "x", "70bd5836807b916d79e9c4e67e8b07e3e3b53f4acbb95c7521b11039a3c975c6", "/nos.png", "36521", "image/png" ], [ "x", "0fc304630279e0c5ab2da9c2769e3a3178c47b8609b447a30916244e89abbc52", "/primal.png", "29343", "image/png" ], [ "x", "9a03824a73d4af192d893329bbc04cd3798542ee87af15051aaf9376b74b25d4", "/coracle.png", "18300", "image/png" ], [ "x", "accdc0cdc048f4719bb5e1da4ff4c6ffc1a4dbb7cf3afbd19b86940c01111568", "/iris.png", "24070", "image/png" ], [ "x", "2e740f2514d6188e350d95cf4756bbf455d2f95e6a09bc64e94f5031bc4bba8f", "/damus.png", "32758", "image/png" ], [ "x", "2e019f08da0c75fb9c40d81947e511c8f0554763bffb6d23a7b9b8c9e8c84abb", "/old emojis/astral.png", "29365", "image/png" ], [ "x", "d97f842f2511ce0491fe0de208c6135b762f494a48da59926ce15acfdb6ac17e", "/other/rabbit.png", "19803", "image/png" ], [ "x", "72cb99b689b4cfe1a9fb6937f779f3f9c65094bf0e6ac72a8f8261efa96653f5", "/blossom.png", "4393", "image/png" ] ] }
There is a lot going on but the main thing is the list of "x" tags and the path that describes the folder and filename the blob should live at
If your interested, the full event definition is at github.com/hzrd149/blossom-drive
Getting started
Like every good nostr client it takes a small instruction manual in order to use it properly. so here are the steps for getting started
1. Open the app
Open https://blossom.hzrd149.com
2. Login using extension
You can also login using any of the following methods using the input - NIP-46 with your https://nsec.app or https://flare.pub account - a NIP-46 connection string - an
ncryptsec
password protected private key - ansec
unprotected private key (please don't) - bunker:// URI from nsecbunker3. Add a blossom server
Right now
https://cdn.satellite.earth
is the only public server that is compatible with blossom drive. If you want to host your own I've written a basic implementation in TypeScript github.com/hzrd149/blossom-server4. Start uploading your files
NOTE: All files upload to blossom drive are public by default. DO NOT upload private files
5. Manage files
Encrypted drives
There is also the option to encrypt drives using NIP-49 password encryption. although its not tested at all so don't trust it, verify
Whats next?
I don't know, but Im excited to see what everyone else on nostr builds with this. I'm only one developer at the end of the day and I can't think of everything
also all the images in this article are stored in one of my blossom drives here
nostr:naddr1qvzqqqrhvvpzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99qq8xzun5d93kcefdd9kkzem9wvr46jka
-
@ 8f69ac99:4f92f5fd
2024-04-18 10:54:00No discurso moderno em torno do capitalismo, não é incomum encontrar veemente oposição e crítica. Desde acusações de exploração a pedidos da sua queda, o capitalismo muitas vezes encontra-se na mira do debate ideológico. No entanto, sob a superfície desses argumentos, reside uma complexa rede de motivações psicológicas e crenças filosóficas que impulsionam o sentimento anticapitalista.
A Deturpação do Capitalismo
Desde a sua criação, o capitalismo tem enfrentado uma enxurrada de deturpações e distorções por parte dos seus críticos. Seja alimentada por preconceito ideológico ou genuína ignorância, essas deturpações contribuíram para uma percepção negativa generalizada do capitalismo. Por exemplo, os críticos frequentemente retratam o capitalismo como um sistema que leva inerentemente à desigualdade de riqueza, desconsidera o bem-estar social e prioriza o lucro corporativo sobre o bem-estar dos indivíduos. No entanto, evidências crescentes mostram os benefícios do capitalismo, como aumento do crescimento económico, produtividade e inovação. Apesar dessas evidências, a deturpação persiste, tornando o capitalismo um dos conceitos mais mal representados na história cultural.
Capitalismo difere do que vemos hoje, um híbrido distorcido de mercantilismo e estatismo. No capitalismo puro, o governo desempenha um papel mínimo, apenas fornecendo as infraestruturas mínimas necessárias para um mercado livre funcionar de forma eficiente. O que temos hoje é frequentemente um Estado forte que interfere nos mercados, desvirtuando o princípio básico de oferta e procura, levando à inflação e ao desequilíbrio económico.
A confusão entre capitalismo e esta forma distorcida leva muitos a concluir incorretamente que o capitalismo resulta em desigualdade e injustiça social. No entanto, o capitalismo real, baseado em concorrência leal e sem interferência do Estado, não só gera prosperidade geral, mas também garante que o mérito seja recompensado e que cada indivíduo tenha oportunidades iguais de sucesso.
"Quando não há uma ligação entre esforço e recompensa, o que se obtém é menos esforço." - Thomas J. DiLorenzo
A Influência Corrosiva do Sistema Fiat
A moeda fiat desempenha um papel central na distorção do capitalismo, uma vez que o próprio governo tem o poder de criar dinheiro à vontade, inflacionando a moeda e degradando o valor da riqueza, e poupança, real. Isso gera instabilidade económica, permitindo que os ricos e os poderosos manipulem o sistema ao seu favor. Assim, o sistema fiat não é um reflexo verdadeiro do capitalismo, mas sim uma forma de mercantilismo velado, que prejudica os cidadãos comuns e perpetua a ideia de que o capitalismo é culpado por essas falhas.
Ao entender a verdadeira natureza do capitalismo e a influência corrosiva do sistema fiat, podemos começar a desconstruir as ideias preconcebidas sobre o capitalismo e a sua suposta culpa pela desigualdade e injustiça. A fim de garantir uma sociedade verdadeiramente justa e próspera, é crucial que o nosso sistema se afaste do estatismo e do mercantilismo e retorne às raízes do capitalismo verdadeiro.
Raízes Psicológicas do Anticapitalismo
No cerne do sentimento anticapitalista estão factores psicológicos profundos. Medo da independência, medo do fracasso, aversão à perda e suscetibilidade a vieses cognitivos podem desempenhar um papel significativo na formação das atitudes dos indivíduos em relação ao capitalismo.
- Medo da independência refere-se à apreensão em relação à autossuficiência e às responsabilidades que a acompanham.
- Medo do fracasso abrange a ansiedade em torno da possibilidade de cometer erros ou não corresponder às expectativas da sociedade, particularmente no contexto de sucesso económico.
- Aversão à perda significa a tendência de preferir evitar perdas em vez de adquirir ganhos equivalentes, levando a uma preferência pela segurança e estabilidade em detrimento do potencial crescimento e inovação.
Indivíduos que lutam com estes factores muitas vezes procuram a segurança e previsibilidade, tornando-os mais propensos a abraçar ideologias que prometem segurança coletiva. Além disso, a suscetibilidade a vieses cognitivos pode reforçar ainda mais os sentimentos anticapitalistas. Por exemplo, o viés de confirmação pode levar os indivíduos a concentrarem-se selectivamente em informações que confirmem suas crenças preexistentes sobre o capitalismo, enquanto descartam evidências contraditórias. Da mesma forma, a heurística da disponibilidade pode distorcer as percepções de risco, fazendo com que os indivíduos sobrestimem a probabilidade de resultados negativos associados ao capitalismo.
Compreender esses fatores psicológicos e vieses é crucial para fomentar um discurso e políticas informadas. Embora o capitalismo possa apresentar incertezas, também é um sistema que prospera na inovação e fomenta oportunidades económicas significativas. Ao reconhecer essas nuances psicológicas e promover o pensamento crítico, podemos trabalhar para abordar as preocupações subjacentes e cultivar um cenário económico mais equitativo e inclusivo.
A Fuga da Razão e da Realidade
Alguns indivíduos, motivados pelo desejo de escapar das exigências da razão e da realidade, buscam escravizar os produtores de bens e serviços da sociedade. Esses "escapistas" pretendem criar um Estado omnipotente na esperança de riqueza e honras imerecidas. Eles estão dispostos a dar obediência total ao Estado em troca de provisão e proteção contra os desafios da vida independente. Esse profundo medo de enfrentar a vida por conta própria, assumir a responsabilidade por suas acções e fazer julgamentos informados impulsiona seu comportamento irracional.
O único meio de alcançar o imerecido é através da força física, razão pela qual os inimigos do capitalismo são estatistas. Aqueles que buscam escapar da razão e da realidade só podem fazê-lo esperando que os seus objectivos, desejos ou medos possam de alguma forma triunfar sobre a realidade. Eles esperam que, escravizando os produtores de bens, os produtores económicos, criando um Estado omnipotente, de alguma forma cavalguem nos ombros dos membros racionais da sociedade, os membros produtivos, aqueles capazes de lidar com os factos da realidade de forma adequada, não apenas na questão da produção de bens materiais, mas em todas as questões.
A Moralidade do Altruísmo
Uma das ideologias que desafia o capitalismo é o conceito de altruísmo. Aqui, o autossacrifício é visto como a virtude mais elevada, e o interesse próprio é condenado. Isso cria uma tensão moral com o capitalismo, que se baseia na busca do ganho pessoal, em primeiro lugar. Aqueles que subscrevem fortes princípios altruístas podem ver o sucesso alcançado no capitalismo como inerentemente explorador, alimentando o sentimento anticapitalista.
Contexto Histórico: As raízes do altruísmo podem ser rastreadas até filosofias antigas como o estoicismo e o cristianismo primitivo. Essas escolas de pensamento enfatizavam a importância do dever para com os outros e de viver uma vida virtuosa, mesmo que isso significasse sacrifício pessoal. No entanto, o altruísmo desenfreado pode ter consequências indesejadas. Por exemplo, os experimentos utópicos do século 19, inspirados nos ideais socialistas de propriedade comum, muitas vezes lutaram com a ineficiência, escassez e a falta de motivação individual.
Subjectivismo e Estatismo
Paralelamente ao altruísmo estão o subjectivismo e o estatismo, ou estadismo, que oferecem estruturas alternativas para aqueles que consideram as demandas do capitalismo e da tomada de decisão individual intimidadoras. O subjectivismo pressupõe que a verdade e a realidade são subjectivas e podem ser moldadas pela percepção individual. O estatismo, por outro lado, defende um forte controle centralizado pelo Estado, prometendo fornecer segurança colectiva e estabilidade.
Essas ideologias podem ser vistas como um refúgio das incertezas e responsabilidades inerentes a um sistema de livre mercado (capitalismo). No entanto, o subjectivismo desenfreado pode levar ao relativismo e à negação dos factos objectivos, enquanto o estatismo excessivo invariavelmente sufoca a iniciativa individual e a inovação.
Tanto o altruísmo quanto os conceitos de subjectivismo e estatismo levantam questões importantes sobre o papel do indivíduo na sociedade e o equilíbrio entre responsabilidade pessoal e bem-estar social.
A Tentação do Totalitarismo
Para alguns, o atractivo do totalitarismo - uma forma extrema de estatismo - torna-se irresistível perante ameaças existenciais. A história está repleta de exemplos em que sociedades, temendo instabilidade ou invasão externa, abraçaram regimes que prometiam segurança e estabilidade à custa da liberdade e autonomia individuais.
Após a Primeira Guerra Mundial, a frágil República de Weimar na Alemanha debateu-se com depressão económica e turbulência política. Essa vulnerabilidade criou terreno fértil para o surgimento do Partido Nazi (Partido Nacional-Socialista dos Trabalhadores Alemães) totalitário. Hitler prometeu a restauração nacional, recuperação económica e uma Alemanha forte no palco mundial. Muitos alemães, ansiando por ordem e um sentido de orgulho nacional, estavam dispostos a ignorar a supressão nazi dos direitos individuais e das instituições democráticas.
Da mesma forma, a União Soviética sob Joseph Stalin fornece outro exemplo sombrio. Enfrentando a ameaça de invasão durante a Segunda Guerra Mundial, Stalin consolidou seu poder e esmagou impiedosamente a dissidência. Embora a União Soviética tenha finalmente repelido os nazis, isso aconteceu ao custo de milhões de vidas e de um regime totalitário que sufocou as liberdades individuais por décadas.
Estes exemplos históricos ilustram o poder sedutor do totalitarismo em tempos de crise. A promessa de segurança pode ser muito atraente, mas deve ser ponderada em relação ao alto preço da liberdade individual.
Resumindo
Ao mergulhar nas profundezas do debate em torno do capitalismo, torna-se claro que as objecções e críticas frequentemente têm raízes mais profundas do que simplesmente questões económicas ou políticas. O cerne do anticapitalismo reside numa teia complexa de motivações psicológicas e crenças filosóficas que moldam as atitudes individuais em relação ao sistema económico.
Desmistificar Deturpações: É crucial desmistificar as deturpações comuns sobre o capitalismo, destacando a sua verdadeira natureza e os benefícios que pode trazer quando implementado correctamente. Desde a sua concepção, o capitalismo tem sido alvo de distorções que obscurecem a sua capacidade de promover prosperidade e progresso.
Desafios Psicológicos e Ideológicos: O medo da independência, aversão à perda e a influência de ideologias como o altruísmo e o estadismo desempenham papéis significativos na formação das opiniões anti capitalistas. Compreender esses desafios psicológicos e ideológicos é essencial para abrir caminho para um diálogo mais informado e produtivo sobre o papel do capitalismo na sociedade.
Alerta Contra Totalitarismo: Os exemplos históricos do poder sedutor do totalitarismo lembram-nos dos perigos de abraçar sistemas políticos que sacrificam a liberdade individual em nome da segurança coletiva. É um lembrete contundente da necessidade de proteger e valorizar os princípios fundamentais da democracia e dos direitos individuais.
Ao desvendar as raízes psicológicas do anti capitalismo, abrimos espaço para um diálogo mais inclusivo e esclarecedor sobre o papel do capitalismo na construção de uma sociedade justa e próspera. Reconhecer e enfrentar essas raízes é o primeiro passo para promover um entendimento mais profundo e uma abordagem mais equilibrada das questões económicas e sociais que moldam o nosso mundo.
-
@ f72e682e:c51af867
2024-04-05 10:55:30Spaniards already dedicate more than 75% of their salary to taxes: Indirect taxes, the 69 tax increases this year, and 50% of the salary for social security make Spaniards the people in Europe whose tax pressure has increased the most since 2019. Tax experts already talk about “modern tax slavery”. The video in the link is in Spanish but I believe you may be able to translate the subtitles. A psychologist analyze this new modern version of slavery.
(ES) Los españoles dedican ya más del 75% de su sueldo a impuestos: Los impuestos indirectos, las 69 subidas del fisco, y el 50% del sueldo para cotizaciones y varios hacen de los españoles el pueblo de europa al que más suben la presión fiscal desde 2019. Expertos fiscales hablan ya de “esclavismo fiscal moderno”
https://www.youtube.com/watch?v=63zP9XlLg4k
-
@ f72e682e:c51af867
2024-04-01 20:02:23Yes, as you read.
There is a controversy on if this was intentional, or just a bug introduced by Satoshi when he programmed Bitcoin. But the bug causes this money supply graph:
As you can see, after a large period of flat supply, it jumps again up with 50 btc per block, and the cicle repeats indefinetly.
Yes, I know, those are a lot of years, and not even our grandchildren will see it happening. But ey, better to have the future well tied!
The core programmer Pieter Wuille solved it in BIP-0042 ten years ago:
https://github.com/bitcoin/bips/blob/master/bip-0042.mediawiki
-
@ 1bc70a01:24f6a411
2024-03-30 01:27:45We’re all daily users of Nostr, so it can be easy to see things through an advanced user lens while forgetting what it felt like to be a newbie. I thought I would take some time to go over major client from the start in hopes of evaluating what it might feel like for a new user.
The other reason for running this review is to hopefully improve the overall nostr retention rate across clients. As it stands, according to nostr.band, retention of trusted users 30 days after signups trends to 0 for recent cohorts. This seems to be supported by the lack of growth in daily active users, with the average remaining in the 10,000-12,000 range for “trusted” pub keys.
The following report consists of several criteria which I felt were essential to basic first-time social media experience:
- Ease of signup
- Ease of logging in
- Ability to understand what you are looking at (sufficient explanations)
- Seeing a good initial feed
- Ability to follow something of interest
- Minimizing technical /dev lingo
- A fast scrolling experience
- Ability to easily upload media
- A good search experience overall
- Good keyword searching
- Hashtag searching
- Ability to follow hashtags
- Easily accessing followed hashtags
- Good experience reacting to notes
In total there are 140 points, 10 for each category. This is by far not the most comprehensive score card, but I felt it did a decent job covering most things you’d want to do in a social client.
Some notes of caution:
- This report and score card are meant to be a general quick glance at where your client may stand in overall UX. It does not differentiate between the intended target audiences.
- The criteria that I deem important may not be important to you as the founder / developer, so take it for what it’s worth. Adding your desired criteria may increase your score significantly. For example, I did not evaluate the zap experience, or thoroughly test nested replies.
- This report is not a substitute for proper user testing. It’s just one person’s observations. While we have done some user testing in the past, I highly recommend doing your own. You can do so by approaching and interviewing new users (if you are able to distinguish if they came from your client), or via other user testing software. Talk to me (@karnage) if you need some help getting set up.
- People’s reported experience regarding usability may vary greatly depending on their familiarity with cryptographic concepts, their background, and technical experience. What I may deem as a great score of 10, may not be a 10 for others. I have seen user tests where “obvious” things were not obvious to testers.
- This report only looks at the English language version of the client. The actual user experience for someone on a different language version of the app could be totally different from what is graded here. It’s worth considering geographies of where users are coming from and how they experience your client.
- I did not test re-activation of new users. Meaning, once they close the app, I did not test if they are pulled back by some notification or other means. This is a crucial aspect of any new app usage that should be considered carefully.
Tested Clients: Damus, Amethyst, Primal iOS, Snort (web), Iris (sort of), Coracle, Nostur.
I also tested Instagram and X/Twitter for comparison.
Results, highest points to lowest: Primal iOS: 136 Twitter: 125 Instagram: 109 Nostur: 108 Coracle: 99 Amethyst: 93 Snort: 90 Damus: 87 Iris: N/A Facebook: could not test.
My main takeaway was that among all apps (including Twitter and Instagram), the traditional apps win simply by having much better content selection. You get to see a variety of interesting things that Nostr simply can’t match. Going forward, this is an area I would probably recommend focusing on - how to engage people to post more interesting content, onboard creators etc… Nostr is lacking in content and I believe this could be the primary reason people are not sticking around after trying it.
Other Nostr Notes:
There seemed to be little of interesting topics to follow or stick around for. The experience of joining nostr doesn't feel special or different in any way opposed to X for example. Twitter has interesting accounts, TikTok has interesting videos, what does Nostr have? The lack of "popular" conent due to the generally low number of users is probably to blame. In a way we suffer from the chicken / egg problem where new users are needed to generate more content, and more content is needed to retain new users. Going forward, I think clients should think about ways to encourage users to share content (whether that be their own, or posted from other platforms). Nostr also does not seem to have any external growth loops. For example, there is no way to invite people to the platform by email with a single click (by accessing the address book). Even if a friend does manage to join and you can find them, they are in no way notified when tagged (as far as I know). People have to have a habit of opening the app to know if something is happening. The habit formation of using a new app is important in the early usage phase and nostr seems to have a weak spot here.
You can find all of the detailed scoring, notes for each client and other thoughts in this spreadsheet: https://docs.google.com/spreadsheets/d/14w8-aQ1sHfGBSuNpqvOA9i7PHNSfhn6lUOV6H293caw/edit?usp=sharing
-
@ 04c4089f:dfd1a512
2024-03-25 04:37:23よくきたな。俺は逆噴射なわしろだ。俺は普段ものすごい量の文章を書いているが、誰にも読ませるつもりはない。
嘘です。普段文章なんか書かないし、書いたとしても大部分をインターネットで世界中に公開しています。どうも、なわしろです。
今回、VR コミュニティのエンジニア集会で催されたハッカソンに参加しました。このテキストはそのレポートです。
イベントについて
VR コミュニティ エンジニア集会とは?
慕狼(しのがみ)家の末っ子、慕狼ゆにさんが、いくつかの VR プラットフォームで運営している集会です。エンジニアならハード・ソフト・その他何でも OK、金曜日にお酒を飲んでワイワイしよう、というゆるい集会です。毎回「進捗共有会」が催されます。飲んだお酒を進捗に数えても OK です。話が長くて制限時間を超えると、床が抜けて落とされます。
VRChat で開催する週と Cluster で開催する週があります。よくある誤解なのですが、これらのソフトは VR 機器が無くても、デスクトップで使えます。特に Cluster はスマホからでも入れるので、敷居はかなり低いです。
テーマ「バーチャルな〇〇」第一回エンジニア集会ハッカソン
最初の開催ということで、テーマは応募前から開示されていました。テーマは上記の通り、バーチャルと関係していれば何でも OK ということで、参加者は仮想マシンを作ったり、きゅうりに蜂蜜をかけてメロンの味を再現しようとしたり、面白い試みを色々やっていました。
バーチャルライフマガジンの取材もあったとのことですので、そちらのアクセスカウンターも回していただけると幸いです。
NosHagaki について
https://nos-hagaki.vercel.app/
登場人物
- なわしろ:私。関西型言語を話す人の影響でエセ関西弁を喋る。
- ハ・サタン:旧約聖書に登場するキャラ。対立する者の意。神の命令を受けて人間に試練を与える。
構想
なわしろ「距離が離れていて時間がかかる文通アプリを作ってみてえなあ。ついでに相互運用可能ならもっとええなあ」
ハ・サタン「どした?」
なわしろ「スマホアプリで『Slowly』っていうのがあるんやけど、これを分散型 SNS でできないかと思ってるんよ。ActivityPub でできないかな」
ハ・サタン「あれ色々大変やで。SNS ひとつローンチするのと変わらんからな」
kaiji さん「Nostr はいいぞ」
https://zenn.dev/kaiji/articles/e855dccba73211
なわしろ「パスワードみたいなセンシティブなデータを扱わなくてもええんやね。なんか Nostr 良さそうやね。これでクライアント作りやってみよう」
ハ・サタン「位置情報はどうするん?他のクライアント使ってる人からは取れんやろ」
なわしろ「あんまり現実の位置にこだわらなくてもええんじゃない?個人情報だし、気にする人もいるやろ。公開鍵からランダム生成すれば解決や」
ハ・サタン「それだと海に住んでる人も発生するのと違うか?地球の七割は海やで」
なわしろ「それは…うーん、陸地を細かく区分けして番号振って扱うとか…いや難しいな…せや!」
「陸地を当てるまでサイコロを振り直せばいいじゃない!」
なわしろ
ハ・サタン「けっこう愚かな方法だと思うで、それ。マイニングか?まあええか。どうやって陸地かどうか判定するんや?」
なわしろ「容量とライセンスがいい感じの geojson を拾ってきたやで。これで地域名が取得できたら陸地と考える。住所が扱えるようになったし、すると距離とかかる日数もわかるはずだから、あとは予約投稿のような仕組みがあれば完成しそうやね」
ハ・サタン「Nostr には予約投稿無いで」
なわしろ「そうなの!?自分で作るしかないか…あらかじめ時刻がわかっているから、実際に投稿される時刻で署名してサーバーにとっておいて、時刻に達したら投稿する、というフローでいけば良さそうやね」
使用した技術
フレームワーク: Next.js
慣れていたし、フルスタックアプリを作るには都合が良さそうだったから。それに、デプロイ先として無料プランのある Vercel が使える。
DB:Postgres、KV(Redis)
Vercel で用意されていて便利そうだったから。
言語:TypeScript
静的型付けができた方が楽なのかな、という軽い気持ちで決めた。
Nostr ライブラリ:NDK
nostr-tools より使いやすそうだったから。IndexedDB を利用したキャッシュも備えている。
タイムラインを作る
なわしろ「まずはタイムラインを作るで。とはいっても、ほとんど NDK が提供する機能に GUI を与えるだけや」
ハ・サタン「シングルトンインスタンスとして実装するのが望ましいと README に書いてあったので、そこだけ気をつけなあかんで」
```ts import NDK from "@nostr-dev-kit/ndk"; import NDKCacheAdapterDexie from "@nostr-dev-kit/ndk-cache-dexie";
export class NDKSingleton extends NDK { private static _instance: NDKSingleton;
public static get instance(): NDKSingleton { if (!this._instance) { const dexieAdapter = new NDKCacheAdapterDexie({ dbName: "ndk-cache", }); this._instance = new NDKSingleton({ cacheAdapter: dexieAdapter }); }
return this._instance;
} } ```
なわしろ「あれ?キャッシュが作成されない。なんで?」
ハ・サタン(ほら言わんこっちゃない)
なわしろ「あ、クラスはシングルトン書いたけど、インスタンス作る時にシングルトンとして書いてなかった!」
ハ・サタン「キャッシュの機能もつけてたから気づいたものの、けっこう危ない間違いだと思うで」
diff -ndk: new NDKSingleton(), +ndk: NDKSingleton.instance,
すみかを計算する
なわしろ「公開鍵から乱数を生成して、地域名が取得できれば OK、できなければやり直し、というフローやで」
ハ・サタン「緯度の計算はどうするんや?緯度は単純な乱数だと南極点と北極点に住所が偏るで」
なわしろ「算数わからん」
ランダムな緯度経度を計算する方法ですが、迂曲余接ありました。あいにく私は算数に弱く、ましてや球面座標なんてやったこともありません。指摘してくれた方やプルリクエストを送ってくださった方もおり、現状は以下の式にしています。今後も変わる可能性はあります。
ts const longitude = rng() * 360 - 180; const latitude = -Math.asin(2 * rng() - 1) * (180 / Math.PI);
なわしろ「geojson の中身はだいたいこんな感じやね」
ts export interface GeoJSONFeature { type: string; properties: { iso: string; // ISO 3166-1 alpha-2 code pais: string; ja: string; }; geometry: { type: string; coordinates: number[][][]; // MultiPolygon coordinates }; }
properties
に国名コードや日本語の地域名が入っています。国の形は
coordinates
の中にポリゴンが書いてありますね。指定した点がポリゴンの中にあるか、という判定はpoint-in-polygon
というそのものなライブラリがあったのでこれを使いました。ハ・サタン「毎回 geojson を読み込むの、よくないと思うで」
なわしろ「IndexedDB にキャッシュしておくか。
zustand
とidb-keyval
を使えば良さそうやね」```ts import { createStore } from "zustand/vanilla"; import { persist, createJSONStorage, StateStorage } from "zustand/middleware";
export const IdbStorage: StateStorage = { getItem: async (name) => { // Exit early on server if (typeof indexedDB === "undefined") { return null; } const value = await get(name); console.log("load indexeddb called"); return value || null; }, setItem: async (name, value) => { // Exit early on server if (typeof indexedDB === "undefined") { return; } return set(name, value); }, removeItem: async (name) => { // Exit early on server if (typeof indexedDB === "undefined") { return; } await del(name); }, };
…
interface State { features: GeoJSONFeature[]; get: boolean; }
const store = createStore( persist( () => ({ features: [], get: true, }), { name: "features-storage", storage: createJSONStorage(() => IdbStorage) } ) ); ```
データベース
なわしろ「デプロイ先の Vercel には Postgres が用意されているけど、SQL を書くのはしんどい気がするな」
Google 先生「Object-Relational Mapping(オブジェクト関連マッピング、対象関係映射、ORM、O/RM)を使うと良い。例えば
prisma
というのがある」登場人物が増えた「なわしろ」
prisma
をインストールするとprisma
ディレクトリにschema.prisma
ファイルが生成されます。データベースやテーブルの設定を書いていきます。```ts generator client { provider = "prisma-client-js" }
datasource db { provider = "postgresql" // Uses connection pooling url = env("POSTGRES_PRISMA_URL") // Uses direct connection, ⚠️ make sure to keep this to
POSTGRES_URL_NON_POOLING
// or you'll have dangling databases from migrations directUrl = env("POSTGRES_URL_NON_POOLING") }model Event{ id String @id SubmittedData SubmittedData @relation(fields: [submittedDataId], references: [id], onDelete: Cascade) submittedDataId Int @unique kind Int content String pubkey String created_at Int address String sig String }
model SubmittedData { id Int @id @default(autoincrement()) sended Boolean @default(false) createdAt DateTime @default(now()) sendDay DateTime event Event? relays String[] ip String } ```
Event
のここを注目してください。SubmittedData
を親、Event
を子として関連付けています。また、SubmittedData
の行が消されたら自動的にこちらも消えるように指定しています。ts SubmittedData SubmittedData @relation(fields: [submittedDataId], references: [id], onDelete: Cascade) submittedDataId Int @unique
API
なわしろ「DB へのインサートはこんな感じでええかな」
ts await prisma.submittedData.create({ data: { sendDay: sendDay, relays: Array.from(outbox), event: { create: { kind: res.event.kind, content: res.event.content, pubkey: res.event.pubkey, created_at: res.event.created_at, address: res.event.tags[0][1], sig: res.event.sig, id: res.event.id, }, }, ip: ip, }, });
なわしろ「確か『しずかなインターネット』は一時間に 6 稿のレート制限があったな。あれ真似したい。Redis と
upstash/ratelimit
を使うと良いらしいな」```ts import { Ratelimit } from "@upstash/ratelimit";
const ratelimit = new Ratelimit({ redis: redis, limiter: Ratelimit.slidingWindow(6, "1 h"), });
export async function POST(req: NextRequest) { … const successIp = (await ratelimit.limit(ip)).success; if (!successIp) { return new Response(null, { status: 429 }); } … } ```
バッチ
なわしろ「毎日決まった時刻に送信してほしいな。Vercel にはサーバーレス関数を実行できる cron が用意されてるからこれ使っとけばええか」
Vercel ログ「設定時刻の 40 分くらい後に実行したやで」
なわしろ「ファー!?」
ハ・サタン「無課金ユーザーだからか、もともとそういうもんなのかわからんけども、誤差が結構大きいみたいやな。これほど大きいと、投稿先のリレーサーバーは受け入れてくれないやろ。さて、どうする?」
なわしろ「Github Actions の cron なら 5、6 分程度の誤差のはず。こっちでサーバーレス関数叩けばええかな。まず時刻を書き込んで…」
json on: schedule: # 定期実行する時間 - cron: "0 22 * * *"
なわしろ「あとは認証情報を設定してある環境変数と、実行するプログラムを指定すれば…」
json - name: Run script env: SECRET: ${{secrets.SECRETKEY}} run: | # 定期実行するファイルを指定 python run.py
なわしろ「動いた!誤差も少ないし大丈夫そうやね」
ブロック
フェディバース「現在スパム bot が POST のみでアカウントを作れるサーバーを中心に猛威を奮っており、各所に管理人メールアドレスを使用した爆破予告が…」
なわしろ「サイバー攻撃めっちゃ怖い。Tor ブロックしたいなあ」
Google 先生「Tor は出口 IP リストを公開してるからブロックは難しくない。ただ、IP リストは動的に変わるので定期的な更新が必要」
なわしろ「30 分おきくらいに取得して Redis に格納して、一致したらブロックしておけばええか」
ハ・サタン「ちょい待ち、今どこにそれを実装した?」
なわしろ「リクエストが来た時に最初に実行される
middleware.ts
やけど」ハ・サタン(やったなこいつ)
〜リリース後〜
Shino3「なんか nos-hagaki おちた」
なわしろ「わあ」
ハ・サタン「
middleware.ts
に書いたからやね。全てのリクエストに対して実行されるから、Redis へのリクエストが殺到したんや。投稿 API あたりに実装するのが妥当やね」なわしろ「メンテ入りまーす」
ちゃんちゃん。
-
@ 3bf0c63f:aefa459d
2024-03-23 08:57:08Nostr is not decentralized nor censorship-resistant
Peter Todd has been saying this for a long time and all the time I've been thinking he is misunderstanding everything, but I guess a more charitable interpretation is that he is right.
Nostr today is indeed centralized.
Yesterday I published two harmless notes with the exact same content at the same time. In two minutes the notes had a noticeable difference in responses:
The top one was published to
wss://nostr.wine
,wss://nos.lol
,wss://pyramid.fiatjaf.com
. The second was published to the relay where I generally publish all my notes to,wss://pyramid.fiatjaf.com
, and that is announced on my NIP-05 file and on my NIP-65 relay list.A few minutes later I published that screenshot again in two identical notes to the same sets of relays, asking if people understood the implications. The difference in quantity of responses can still be seen today:
These results are skewed now by the fact that the two notes got rebroadcasted to multiple relays after some time, but the fundamental point remains.
What happened was that a huge lot more of people saw the first note compared to the second, and if Nostr was really censorship-resistant that shouldn't have happened at all.
Some people implied in the comments, with an air of obviousness, that publishing the note to "more relays" should have predictably resulted in more replies, which, again, shouldn't be the case if Nostr is really censorship-resistant.
What happens is that most people who engaged with the note are following me, in the sense that they have instructed their clients to fetch my notes on their behalf and present them in the UI, and clients are failing to do that despite me making it clear in multiple ways that my notes are to be found on
wss://pyramid.fiatjaf.com
.If we were talking not about me, but about some public figure that was being censored by the State and got banned (or shadowbanned) by the 3 biggest public relays, the sad reality would be that the person would immediately get his reach reduced to ~10% of what they had before. This is not at all unlike what happened to dozens of personalities that were banned from the corporate social media platforms and then moved to other platforms -- how many of their original followers switched to these other platforms? Probably some small percentage close to 10%. In that sense Nostr today is similar to what we had before.
Peter Todd is right that if the way Nostr works is that you just subscribe to a small set of relays and expect to get everything from them then it tends to get very centralized very fast, and this is the reality today.
Peter Todd is wrong that Nostr is inherently centralized or that it needs a protocol change to become what it has always purported to be. He is in fact wrong today, because what is written above is not valid for all clients of today, and if we drive in the right direction we can successfully make Peter Todd be more and more wrong as time passes, instead of the contrary.
See also:
-
@ ee11a5df:b76c4e49
2024-03-22 22:39:31Implementing The Gossip Model
version 1 (2024-03-23)
Introduction
History
The gossip model is a general concept that allows clients to dynamically follow the content of people, without specifying which relay. The clients have to figure out where each person puts their content.
Before NIP-65, the gossip client did this in multiple ways:
- Checking kind-3 contents, which had relay lists for configuring some clients (originally Astral and Damus), and recognizing that wherever they were writing our client could read from.
- NIP-05 specifying a list of relays in the
nostr.json
file. I added this to NIP-35 which got merged down into NIP-05. - Recommended relay URLs that are found in 'p' tags
- Users manually making the association
- History of where events happen to have been found. Whenever an event came in, we associated the author with the relay.
Each of these associations were given a score (recommended relay urls are 3rd party info so they got a low score).
Later, NIP-65 made a new kind of relay list where someone could advertise to others which relays they use. The flag "write" is now called an OUTBOX, and the flag "read" is now called an INBOX.
The idea of inboxes came about during the development of NIP-65. They are a way to send an event to a person to make sure they get it... because putting it on your own OUTBOX doesn't guarantee they will read it -- they may not follow you.
The outbox model is the use of NIP-65. It is a subset of the gossip model which uses every other resource at it's disposal.
Rationale
The gossip model keeps nostr decentralized. If all the (major) clients were using it, people could spin up small relays for both INBOX and OUTBOX and still be fully connected, have their posts read, and get replies and DMs. This is not to say that many people should spin up small relays. But the task of being decentralized necessitates that people must be able to spin up their own relay in case everybody else is censoring them. We must make it possible. In reality, congregating around 30 or so popular relays as we do today is not a problem. Not until somebody becomes very unpopular with bitcoiners (it will probably be a shitcoiner), and then that person is going to need to leave those popular relays and that person shouldn't lose their followers or connectivity in any way when they do.
A lot more rationale has been discussed elsewhere and right now I want to move on to implementation advice.
Implementation Advice
Read NIP-65
NIP-65 will contain great advice on which relays to consult for which purposes. This post does not supersede NIP-65. NIP-65 may be getting some smallish changes, mostly the addition of a private inbox for DMs, but also changes to whether you should read or write to just some or all of a set of relays.
How often to fetch kind-10002 relay lists for someone
This is up to you. Refreshing them every hour seems reasonable to me. Keeping track of when you last checked so you can check again every hour is a good idea.
Where to fetch events from
If your user follows another user (call them jack), then you should fetch jack's events from jack's OUTBOX relays. I think it's a good idea to use 2 of those relays. If one of those choices fails (errors), then keep trying until you get 2 of them that worked. This gives some redundancy in case one of them is censoring. You can bump that number up to 3 or 4, but more than that is probably just wasting bandwidth.
To find events tagging your user, look in your user's INBOX relays for those. In this case, look into all of them because some clients will only write to some of them (even though that is no longer advised).
Picking relays dynamically
Since your user follows many other users, it is very useful to find a small subset of all of their OUTBOX relays that cover everybody followed. I wrote some code to do this as (it is used by gossip) that you can look at for an example.
Where to post events to
Post all events (except DMs) to all of your users OUTBOX relays. Also post the events to all the INBOX relays of anybody that was tagged or mentioned in the contents in a nostr bech32 link (if desired). That way all these mentioned people are aware of the reply (or quote or repost).
DMs should be posted only to INBOX relays (in the future, to PRIVATE INBOX relays). You should post it to your own INBOX relays also, because you'll want a record of the conversation. In this way, you can see all your DMs inbound and outbound at your INBOX relay.
Where to publish your user's kind-10002 event to
This event was designed to be small and not require moderation, plus it is replaceable so there is only one per user. For this reason, at the moment, just spread it around to lots of relays especially the most popular relays.
For example, the gossip client automatically determines which relays to publish to based on whether they seem to be working (several hundred) and does so in batches of 10.
Clobbering issues
Please read your users kind 10002 event before clobbering it. You should look many places to make sure you didn't miss the newest one.
If the old relay list had tags you don't understand (e.g. neither "read" nor "write"), then preserve them.
How users should pick relays
Today, nostr relays are not uniform. They have all kinds of different rule-sets and purposes. We severely lack a way to advice non-technical users as to which relays make good OUTBOX relays and which ones make good INBOX relays. But you are a dev, you can figure that out pretty well. For example, INBOX relays must accept notes from anyone meaning they can't be paid-subscription relays.
Bandwidth isn't a big issue
The outbox model doesn't require excessive bandwidth when done right. You shouldn't be downloading the same note many times... only 2-4 times depending on the level of redundancy your user wants.
Downloading 1000 events from 100 relays is in theory the same amount of data as downloading 1000 events from 1 relay.
But in practice, due to redundancy concerns, you will end up downloading 2000-3000 events from those 100 relays instead of just the 1000 you would in a single relay situation. Remember, per person followed, you will only ask for their events from 2-4 relays, not from all 100 relays!!!
Also in practice, the cost of opening and maintaining 100 network connections is more than the cost of opening and maintaining just 1. But this isn't usually a big deal unless...
Crypto overhead on Low-Power Clients
Verifying Schnorr signatures in the secp256k1 cryptosystem is not cheap. Setting up SSL key exchange is not cheap either. But most clients will do a lot more event signature validations than they will SSL setups.
For this reason, connecting to 50-100 relays is NOT hugely expensive for clients that are already verifying event signatures, as the number of events far surpasses the number of relay connections.
But for low-power clients that can't do event signature verification, there is a case for them not doing a lot of SSL setups either. Those clients would benefit from a different architecture, where half of the client was on a more powerful machine acting as a proxy for the low-power half of the client. These halves need to trust each other, so perhaps this isn't a good architecture for a business relationship, but I don't know what else to say about the low-power client situation.
Unsafe relays
Some people complain that the outbox model directs their client to relays that their user has not approved. I don't think it is a big deal, as such users can use VPNs or Tor if they need privacy. But for such users that still have concerns, they may wish to use clients that give them control over this. As a client developer you can choose whether to offer this feature or not.
The gossip client allows users to require whitelisting for connecting to new relays and for AUTHing to relays.
See Also
-
@ ec965405:63996966
2024-03-20 15:25:23The homie and tech mentor, Iris, ispired me to write this with their recent blog about the intersection of politics and technology.We're heeding Tim Berner Lee's call to "demand higher standards and greater accountability for our online experiences"from the powers at be by being creators and collaborators on the Internet in accordance with the 7th principle of the Contract for the Web.If my readers ever need any tech support, be sure to hit up Iris and check out Light Crystal Systemsfor your freedom tech needs.
Mi amigx y mentorx tecnológica, Iris, me inspiró a escribir esto con su reciente blog sobre la intersección de la política y la tecnología.Estamos atendiendo el llamado de Tim Berners-Lee de "exigir mayores estándares y mayor responsabilidad para nuestras experiencias en línea" por parte de los poderes establecidos, siendo creadores y colaboradores en el Internet de acuerdo con el séptimo principio del Contrato para la Web.Si mis lectores alguna vez necesitan soporte técnico, asegúrense de contactar a Iris y revisar Light Crystal Systems para sus necesidades de tecnología para la libertad.
"The fight for the web is one of the most important causes of our time." - Tim Berners Lee, 2018 - 30 years on, what’s next #ForTheWeb?
"La pelea por la web es una de las causas mas importantes de nuestro epoca." - Tim Berners Lee, 2018 - 30 años después, qué sigue #ForTheWeb?
Do you remember how liberating it felt to customize your Myspace with HTML, CSS,and embeded playlists? I miss that feeling. I'm blown away by the power of the web browser to facilitate meaningful connections with other humans across long distances over cable. Did you every flash a custom operating system on a device to unlock endless possibilities? Modding a jigkick battery to install custom firmwareon my God of War Edition PlayStation Portable enabled me to emulate Super Mario and customize the layout of the home screen. It added my own seasoning salt to the device and instilled confidence in my ability to mess with a computer's guts without bricking it. I fondly remember these early years of my relationship with technology that provided me with an escape from bullying at school and an abusive household while empowering me to navigate a rapidly digitizing world.
¿Te acuerdas de lo liberador que era personalizar tu Myspace con HTML, CSS y listas de reproducción integradas?Extraño esa sensación. Me sorprende el poder del navegador web para facilitar conexiones significativas con otras personas a largas distancias a través de cable. ¿Alguna vez instalaste un sistema operativo personalizado en un dispositivo para desbloquear infinitas posibilidades? Modificar una batería jigkick para instalar firmware personalizado en mi PlayStation Portable Edición God of War me permitió emular Super Mario y personalizar el diseño de la pantalla de inicio. Le añadí mi propio sazón al dispositivo y fortaleció mi confianza en mi habilidad para manipular las entrañas de un computador sin dañarlo. Recuerdo con cariño esos primeros años de mi relación con la tecnología que me proporcionaron un escape del acoso escolar y un ambiente abusivo en casa, mientras me empoderaban para navegar en un mundo que se digitalizaba rápidamente.
When Facebook and Twitter dethroned Myspace in the early 2010s as the mainstream social media platforms, however, technology started to affect my life in less liberating ways. The monetization of my attention span ruined real life relationships and probably prevented me from getting hired. I was cyberbullied and even doxed in a Facebook group on one occassion. These are humiliating experiences that I imagine some of my Millenial and Gen Z readers can relate to as being the first generations to grow up with the Internet. As much as these corporations market their software as giving people "the power to build community and bring the world closer together",the lack of accountability for their role in aiding and abetting genocide, destroying marriages, or in fueling the youth behavioral and mental health crisis(which I would argue extends to adult users of these platforms as well) are examples of the "unintended consequences of benevolent design" that Tim Berner's Lee and the Web Foundation aim to address in their movement.
Cuando Facebook y Twitter destronaron a Myspace a principios de los años 2010 como las plataformas sociales principales, la tecnología empezó a afectar mi vida de formas menos liberadoras. La monetización de mi atención arruinó relaciones en mi vida real y probablemente me impidió conseguir empleo. Fui acosado cibernéticamente e incluso expuesto públicamente en un grupo de Facebook en una ocasión. Son experiencias humillantes que imagino que algunos de mis lectores Millennials y Gen Z pueden entender, siendo las primeras generaciones criadas con Internet. Aunque estas corporaciones promocionan su software como una manera de dar a las personas "el poder de construir comunidad y acercar el mundo,"la falta de responsabilidad por su rol en ayudar y fomentar genocidios, destruir matrimonioso alimentar la crisis de salud mental y conductual de los jóvenes (lo cual, argüiría, también se extiende a los usuarios adultos de estas plataformas) son ejemplos de las "consecuencias no intencionadas de un diseño benevolente" que Tim Berners-Lee y la Fundación Webbuscan abordar en su movimiento.
A genocidal blockade by washington forces Cubans to jump through hoops to access Internet services that the Global North take for granted.Though amendments have been made to allow for a handful of personal communication services like WhatsApp to be accessed by Cuban IP addresses, the majority of Cuban citizens have to spend their salaries on costly VPNs to surf the web.These economic sanctions shed light on the lack of technical understanding in washington of how the Internet works and run afoul of the second principle of the Contract for the Web; keep all of the Internet available all of the time.
Un bloqueo genocida por parte de washington obliga a los Cubanos a saltar obstáculos para acceder a servicios de Internetque en el Norte se dan por sentados. Aunque se han hecho enmiendas para permitir el acceso a algunos servicios de comunicación personal como WhatsApp desde direcciones IP cubanas, la mayoría de los ciudadanos cubanos deben gastan sus salarios en VPNs costosas para navegar en la web.Estas sanciones económicas evidencian la falta de comprensión técnica en Washington sobre cómo funciona el Internet y contravienen el segundo principio del Contrato para la Web: mantener todo el Internet disponible todo el tiempo.
“It would be interesting to know how it is possible that the us is so interested in a free access internet for Cubans but prevents us from accessing digital platforms such as WeTransfer, OpenSea, Adobe and dozens of others that are accessed by the rest of the world, adding obstacles to our human development.” - Rubén Martínez Rojas, Havana Resident
"Sería interesante saber cómo es posible que los estados unidos esté tan interesado en un acceso libre a internet para los cubanos, pero al mismo tiempo nos impida acceder a plataformas digitales como WeTransfer, OpenSea, Adobe y docenas de otras que están disponibles para el resto del mundo, añadiendo obstáculos a nuestro desarrollo humano." - Rubén Martínez Rojas, Resident de La Habana
When you juxtapose cruel sanctions with the recent pushes to pass the Protecting Americans from Foreign Adversary Controlled Applications Act(PAFACAA) and the Kids Online Safety Act(KOSA), the united states increasingly seems less like the "land of the free" and more like Soviet Russia. The Electronic Fronteir Foundation found that KOSA "empowers state officials to target services and online content they do not like" and will unfairly endanger activists and other groups.If passed in the Senate, the PAFACAA would ban Tik Tok from devices and app stores in the united states if its China-based owner, ByteDance, doesn't sell its stake to a us-based company. Former united states Treasury Secretary steve mnuchin, a close friend of former mossad chief yossi cohen, whom he previously invited to join his investment fund, has already mobilized potential buyers.This is no doubt to squash political dissent on a platform that has mobilized and educated millions on the ongoing genocide in Gaza. The us empire is throwing the weight of its bloated aparatus around to maintain a waning political and cultural hegemony and blatantly violating our our civil liberties in the process.
Cuando juxtapones las sanciones crueles con los intentos recientes de aprobar la Ley de Protección de los Americanos contra Aplicaciones Controladas por Adversarios Extranjeros (Protecting Americans from Foreign Adversary Controlled Applications Act) y la Ley de Seguridad en Línea para Niños (Kids Online Safety Act),los estados unidos cada vez parece menos como la "tierra de los libres" y más como la Unión Soviética. La Fundación de la Frontera Electrónica (Electronic Frontier Foundation) encontró que KOSA "otorga poder a los funcionarios estatales para atacar servicios y contenidos en línea que no les gustan" y pondrá en peligro injustamente a activistas y otros grupos. Si se aprueba en el Senado, PAFACAA prohibirá TikTok en dispositivos y tiendas de aplicaciones en los estados unidos si su propietario Chino, ByteDance, no la vende a una compañía estadounidense. El exsecretario del Tesoro de estados unidos, steve mnuchin, amigo cercano del exjefe del Mossad, yossi cohen, a quien previamente invitó a unirse a su fondo de inversión, ya ha movilizado a posibles compradores. Esto es, sin duda, para suprimir la disidencia política en una plataforma que ha movilizado y educado a millones sobre el genocidio en curso en Gaza. El imperio estadounidense está utilizando el peso de su aparato inflado para mantener una hegemonía política y cultural en declive y, en el proceso, violando descaradamente nuestras libertades civiles.
"Imagine something similar happening in another country, where its former finance minister ended up as the buyer." - Robert Weissman, president of the watchdog group Public Citizen
"Imagina algo similar ocurriendo en otro país, donde su exministro de finanzas termina siendo el comprador."- Robert Weissman, presidente del grupo Public Citizen
Yes, Iris, technology is political AF. Each corporate tech acquisition and authoritative legislation passed is a nontechnical factor in technology-policy decisions as outlined in Kranzberg's 4th Law.The World Wide Web just turned 35 years old and it's power has concentrated in the hands of a few corporations and an authoritarian regimethat are working in tandem to erode our civil liberties and keep us from building the world we want. How do we achieve Tim Berner Lee's original vision for an open, decentralized information sharing network that empowers humanity?
Sí, Iris, la tecnología es política. Cada adquisición corporativa tecnológica y legislación autoritaria que se aprueba es un factor no técnico en las decisiones de política-tecnológica, como se describe en la cuarta ley de Kranzberg.La World Wide Web acaba de cumplir 35 años y su poder se ha concentrado en las manos de unas pocas corporaciones y un régimen autoritario que están trabajando juntos para erosionar nuestras libertades civiles y evitar que construyamos el mundo que queremos. ¿Cómo logramos la visión original de Tim Berners-Lee para una red de intercambio de información abierta y descentralizada que empodere a la humanidad?
"A new paradigm is emerging, one that places individuals’ intention rather than attention at the heart of business models, freeing us from the constraints of the established order and returning control over our data."- Tim Berners Lee, Marking the Web’s 35th Birthday: An Open Letter
"Está emergiendo un nuevo paradigma, uno que sitúa la intención de los individuos en lugar de la atención en el centro de los modelos de negocio, liberándonos de las restricciones del orden establecido y devolviendo el control sobre nuestros datos." - Tim Berners Lee, Con motivo del 35.º aniversario de la Web: Una Carta Abierta
We can siphon power out from the tentacles of the evil tech lords and politicians back into the hands of the people by wielding the power of open source technology. We have to be better consumers of tech and the Internet and think critically about our digital presences if we want to have a chance at disabling the lying machine. Protocols like Nostr create digital spheres that facilitate this power exchange and give us the means to govern our online spaces, free from the influence of corporate greed. That's why I'm following your lead in this fight for digital democracy. Hasta la victoria siempre!!
Podemos sustraer el poder de las tentáculos de los malvados corporaciones tecnológicos y políticos para devolverlo a manos de la gente mediante el uso del poder de la tecnología de código abierto. Tenemos que ser mejores consumidores de tecnología e Internet y pensar críticamente sobre nuestras presencias digitales si queremos tener una oportunidad de deshabilitar la máquina de mentiras. Protocolos como Nostr crean esferas digitales que facilitan este intercambio de poder y nos dan los medios para gobernar nuestros espacios en línea, libres de la influencia de la codicia corporativa. Por eso estoy siguiendo tu ejemplo en esta lucha por la democracia digital. Hasta la victoria, siempre!!!
"The web is for everyone and collectively we hold the power to change it. It won’t be easy. But if we dream a little and work a lot, we can get the web we want." - Tim Berners Lee, Marking the Web’s 35th Birthday: An Open Letter "La web es para todos y colectivamente tenemos el poder de cambiarla. No será fácil. Pero si soñamos un poco y trabajamos mucho, podemos conseguir la web que queremos." - Tim Berners Lee, Con motivo del 35.º aniversario de la Web: Una Carta Abierta
-
@ 81870f53:29bef6a6
2024-03-14 08:26:571月11日の設定以来、ビットコインETFは金を急速に吸収しており、一方火曜日には10本のビットコインETFへの流入額が1日で最高額を記録し、初めて10億ドルを超えた。
中でもブラックロックの IBIT ファンドは最も人気があり、同日に他の 9 つの ETF を大きく上回る 8 億 5,000 万米ドル近くの資金が流入し、これまでに IBIT は 110 億ドル以上の投資を受けています。
この流入率は、ビットコインETFに対する市場の強い関心と需要を完全に反映しており、同時にスポットビットコインの価格をずっと上昇させている。プレスリリース時点で、ビットコイン価格は72,000ドルから73,000ドルの範囲内に留まっており、これはほぼ72,000ドルから73,000ドルの範囲内にある。過去最高値は7,3637ドル。
ビットコインETF市場のパフォーマンスはさまざまな専門家の予想を裏切るものの、一部のアナリストには少し不安を抱かせており、現在10のETFが80万以上のビットコインを保有しており、理論上のビットコイン総供給量の4%を占めている。
アナリストらは、ETFがビットコインを高率で吸収し続ければ、ビットコイン市場が流動性危機に陥る可能性がある、つまり、利用可能な供給量が外部からの圧倒的な需要を満たすことができなくなるのではないかと懸念している。
予想をはるかに超えたトップ クリプトクアントのキ・ヨンジュ最高経営責任者(CEO)は火曜日のXへの投稿で、ビットコインETFは先週3万ビットコインの純購入を行ったが、現在既知の団体が保有するビットコインの総数は300万で、そのうちのビットコインの数は企業が保有していると述べた。米国の事業体は 150 万です。
同氏は、このETFがスポットトークンを購入するレートに基づいて計算を続ければ、6か月以内に市場で売り手間の流動性危機が発生し、ビットコインの高価格が予想を超えることになるだろうと警告した。
同氏はまた、ビットコインマイナーが現在ビットコインをチェーンに移動させているようであり、これは彼らがコレクションの一部を売却した可能性があることを意味しているが、その一方で、$Marathon Digital (MARA.US)$と$Riot Platforms (RIOT. US)$大手マイナーのビットコイン保有量は依然として増加傾向にあるようだ。
同氏の見解では、これはETFの資金流入が減速しない限りビットコインの強気市場が続くことを意味するという。
現在、10のビットコインETFの運用資産総額は600億ドルを超え、そのうちブラックロックのIBIT規模は150億ドルを超えており、業界では同ファンドが間もなくトップ100ETFに入るだろうとしている。
この記事がお役に立てば幸いです。 もしそうなら、チップをおくるどうぞ https://getalby.com/p/bitcap
-
@ 4657dfe8:47934b3e
2024-03-12 11:36:36Bitcoin is the native currency of the Internet. Digital scarcity however comes with certain costs and tradeoffs that are a bit unintuitive and not immediately obvious. For example — If bitcoin is purely digital, why can't we use it on every corner of the Internet with ease? If it's natively digital, why is there still an issue with receiving instant payments in a sovereign way? The list could go on. Bitcoin is the native currency of the Internet, but it still needs more time and care to become really in its element.
At Alby, we have always believed that we'll arrive at a point where you can easily populate any app or website you dream of with bitcoin. That sending and receiving bitcoin will be as easy as sending an email, login in will be easier than doing so with Google or Facebook. In a digital age supporting your favourite podcaster should be natural and swift, like you reward a busker on the street, not harder to do so.
Alby is an answer to a big need we identified — a need for using bitcoin seamlessly while you're surfing the web of bitcoin apps, on these popular social media pages or for fun on websites your friends built. And this need urged to be addressed now, not in the next five years, but today. Even if sovereign tech was not yet ready for a big part of what we all wanted to do.
That's how the Alby Extension was born and it provided a balanced choice: you can use it in a totally sovereign way, connecting your own node and plugin into many apps thanks to WebLN protocol.
But there’s also an easy and accessible wallet experience for newcomers and users who aren't necessarily up for the struggles of running a node, like artists and creators. Alby Accounts provide exactly that.
In total, we brought and popularized bitcoin use cases that haven't been possible before to thousands of users: streaming bitcoin in live concerts or video broadcasts, one-tap zaps to dozens of Nostr clients, QR-codeless lightning payments, logins to bitcoin web apps by just clicking one button, and many, many more.
But only half of those things were possible for node-runners or self-managed wallets. If you wanted to stream bitcoin in a mobile podcast player, or want to automate payments with the Alby Wallet API, you had to use a wallet managed by Alby. And a self-managed way of doing the same seemed a distant future.
Until today...
The path forward
We found ourselves at a crossroad. We could go on with expanding Alby Accounts capabilities, which was offered to make it easy for users to start with bitcoin payments and the Alby Extension in the first place.
Or is the time now right to choose the technically still difficult, but also more rewarding and — we believe — moral path of empowering users with self-managed wallets and the proven Alby user experience: Giving bitcoin wallets superpowers. Making them interoperable with the entire Internet, whether it's an app, a website, an online game, or a plugin for your favourite software. No matter if it's a web browser, a mobile or, (why the hell not?) a smartwatch. Bitcoin can reach it all.
For the past couple of months, we have been focusing on finding a way for the second path. We believe that a measure to give those superpowers to bitcoin wallets lies in Nostr Wallet Connect (NWC). Nostr in this case does not have anything to do with social media, but rather serves as a communication and coordination layer between lightning wallets and apps. This allows for building some really wild use cases that were hard to pull off before we had such a layer. That's why we now double down on raising awareness on the potential of NWC. We also developed Bitcoin Connect, a supplementary library with the goal to make it dead simple and super fast to add bitcoin to your product.
NWC really shines and brings us really close to the familiar experience you now have with an Alby Account when it's combined with a cloud based bitcoin lightning wallet. We're now experimenting with technologies such as Greenlight, Breez SDK and LDK to craft a powerful, self-managed wallet that you'll be able to bring to any app, website, game or any other kind of software that will implement NWC.
You'll be able to do things like one tap zaps, automated monthly subscription payments or in-game bitcoin transfers instantly, 24/7, without limits while maintaining full control over your funds.
How cool is that?
-
@ 266815e0:6cd408a5
2024-03-08 21:51:09Not much going on in this release, just a lot of cleanup under the hood and a few new tools
Minor Changes
- Add "open in" modal (NIP-89)
- Add event publisher tool
- Added Event Console tool
- Add option to automatically decrypt DMs
Patch Changes
- Rebuild observable class
- Add UI tab to relays
- Fix custom emoji reactions having multiple colons
- Fix jsonl database export format
- Fix auto-playing blurred videos
- Fix bunker://pubkey connect URIs
- Fix profile form removing unknown metadata fields
- Unblur all images when clicking on a note
- Update emojilib ( thanks nostr:npub168ghgug469n4r2tuyw05dmqhqv5jcwm7nxytn67afmz8qkc4a4zqsu2dlc PR )
Event Console
A handy tool I built to explore that raw nostr events from nostr relays (or the local cache) It supports auto-completion for the REQ fields and @
Event Publisher
Similar to the event console the event publisher tool lets you write any kind of nostr event, sign, and publish it to your relays
Auto Decrypt DMs
While I'm not a fan of nostr apps prompting the user to sign or decrypt things automatically. in this case it dose make the user experience better.
If your tired of clicking "decrypt" on each message you can turn on the "Auto Decrypt DMs" in the "Performance" settings
As always you can run the app locally using docker
docker run --rm -p 8080:80 ghcr.io/hzrd149/nostrudel:0.39.0
-
@ ec965405:63996966
2024-03-06 04:36:27I'm finally getting around to sharing this note after Aaron Bushnell, a 25 year old united states service member streamed a video of his self immolation in front of an israeli embassy on Twitch last weekend in protest of the ongoing Palestinian genocide. He's the second in recent months to do so and the first to lose his life in the process. This note is for the martyrs.
Finalmente estoy compartiendo esta nota después de que Aaron Bushnell, un miembro de 25 años de las fuerzas armadas de Estados Unidos, transmitiera en vivo su autoinmolación frente a una embajada israelí en Twitch el fin de semana pasado en protesta por el genocidio palestino en curso. Es el segundo que lo hace en los últimos meses y el primero en perder la vida en el proceso. Esta nota es para los mártires.
I woke up feeling sick to my stomach in the middle of the night during my recent delgation to Cuba; probably a side effect of mixing 3 plates of Ropa Vieja at dinner with cigars and beer at La Fabrica the night before. Chastising myself for hitting my body with 3 things I normally avoid at home (tobacco, alcohol, and meat), I wasn't able to make it downstairs to the cafeteria for breakfast or the day trip with the group. I was allowed to stay and rest at the center in the morning while they checked out El Rincón de los Milagros,where they learned about the impact of the Haitian revolution on Cuban society. Everyone said I would have loved it. After looking through their pictures and videos of the drum sessions,I'm certain I would have. I'm going to prioritize visiting this spot next time I'm in Cuba.
Me desperté sintiéndome mal del estómago en medio de la noche, durante mi reciente delegación a Cuba; probablemente un efecto secundario de mezclar 3 platos de Ropa Vieja en la cena, con cigarros y cerveza en La Fábrica la noche anterior. Regañándome a mí mismo por someter mi cuerpo a 3 cosas que normalmente evito en casa (tabaco, alcohol y carne), no logré bajar a la cafetería para desayunar ni unirme al viaje del día con el grupo. Me permitieron quedarme a descansar en el centro durante la mañana mientras ellos visitaban El Rincón de los Milagros, donde aprendieron sobre el impacto de la revolución haitiana en la sociedad cubana. Todos dijeron que me hubiera encantado. Después de ver sus fotos y videos de las sesiones de tambores, estoy seguro de que así hubiera sido. Voy a hacer de visitar este lugar una prioridad la próxima vez que esté en Cuba.
On the flip side, I was deficient in sleep hours, so catching up on rest put me in a better position to participate in the evening social at El Sauce. El Sauce is a smaller venue that wasn't nearly as packed as La Fabrica the previous evening. I enjoyed down time with my fellow delegates, happy to get to know them in an intimate space and eventualy joining them on the dance floor for an electric slide.
Por otro lado, me faltaban horas de sueño, así que ponerme al día con el descanso me colocó en una mejor posición para participar en el evento social de la noche en El Sauce. El Sauce es un lugar más pequeño que no estaba tan lleno como La Fábrica la noche anterior. Disfruté del tiempo libre con mis compañeros delegados, contento de llegar a conocerlos en un espacio íntimo y finalmente uniéndome a ellos en la pista de baile para un electric slide.
I watched a man dressed in plain shorts and a red shirt dance enthusiastically with at least 5 separate partners of varying ages and genders throughout the night, radiating joy with each graceful spin as if he hadn't a care in the world. His magnetic energy drew everyone around him into his orbit despite coming to El Sauce alone that night. The circumstances of an inhumane blockade on his country did not seem to phase him as he laughed and sang along to the music, his humanity on full display for us to see.
Observé a un hombre vestido con shorts sencillos y una camisa roja bailar entusiasmado con al menos 5 parejas distintas de variadas edades y géneros a lo largo de la noche, irradiando alegría con cada giro elegante como si no tuviera ninguna preocupación en el mundo. Su energía magnética atraía a todos a su alrededor a pesar de haber llegado solo a El Sauce esa noche. Las circunstancias de un bloqueo inhumano sobre su país parecían no afectarle mientras reía y cantaba junto a la música, mostrando su humanidad para que todos la viéramos
Before dinner the next evening, the group gathered in the cafeteria for a reflection activity about our first few days in Cuba where we broke the ice by sharing an African word that we were familiar with and its significance to us. My mind instantly snapped to "Ubuntu", a word that represents the inception of my programming journey and my intentions with what comes from it. From the African Journal of Social Work,
Antes de la cena la siguiente noche, el grupo se reunió en la cafetería para una actividad reflexiva sobre nuestros primeros días en Cuba, donde rompimos el hielo compartiendo una palabra africana con la que estuviéramos familiarizados y su significado para nosotros. Mi mente se dirigió instantáneamente a 'Ubuntu', una palabra que representa el inicio de mi carrera en la programación y mis intenciones con lo que resulte de ello. Según el Journal Africano de Trabajo Social:
Ubuntu refers to a collection of values and practices that Black people of Africa or of African origin view as making people authentic human beings. While the nuances of these values and practices vary across different ethnic groups, they all point to one thing – an authentic individual human being is part of a larger and more significant relational, communal, societal, environmental and spiritual world. Ubuntu se refiere a un conjunto de valores y prácticas que las personas negras de África o de origen africano consideran que hacen a los seres humanos auténticos. Aunque los matices de estos valores y prácticas varían entre los distintos grupos étnicos, todos apuntan a lo mismo: un ser humano auténtico es parte de un mundo más amplio y significativo que incluye lo relacional, lo comunal, la sociedad, el medio ambiente y lo espiritual.
I explained my philosophy around the use of open sourced software and a healthier relationship with the Internet highlighting the need to boycot corporate tech platforms that inflict irreparable harm on the massses. The constant bombardment of corporate advertising guided by antagonizing algorithms fuel a dire behavioral health crisis that's actively destroying the fabric of our society and disconnecting us from our humanity. Open source software is my weapon in this war against the tech corporations that dominate our dystopic digital lives that I will leverage to center humanity and dignity in communications.
Expliqué mi filosofía sobre el uso de software de código abierto y una relación más saludable con internet, resaltando la necesidad de boicotear las plataformas tecnológicas corporativas que infligen un daño irreparable a las masas. El constante bombardeo de publicidad corporativa, guiado por algoritmos antagonistas, alimenta una grave crisis de salud conductual que está destruyendo activamente el tejido de nuestra sociedad y desconectándonos de nuestra humanidad. El software de código abierto es mi arma en esta guerra contra las corporaciones tecnológicas que dominan nuestras vidas digitales distópicas, el cual utilizaré para centrar la humanidad y la dignidad en nuestras comunicaciones.
I shared this with the group, happy to look over at a fellow delegate and see her point to the bracelet on her wrist with the letters U-B-U-N-T-U spelled out. I felt right at home with this crew.
Compartí esto con el grupo, contento de mirar a una compañera delegada y verla señalar hacia la pulsera en su muñeca con las letras U-B-U-N-T-U. Me sentí como en casa con este equipo.
-
@ d0de11ab:63c92d19
2024-03-05 16:30:18■ 流速計測 2024/03/06 01:20~01:30
[JP リレー] きりの川: 36 posts きりの川(G): 111 posts のこたろ川(G): 103 posts やぶみ川: 42 posts ほりべあ川: 欠測 かすてら川: 3 posts こじら川: 42 posts しの川: 7 posts
[GLOBAL リレー] きりの川: 36 posts きりの川(G): 111 posts のこたろ川(G): 103 posts やぶみ川: 42 posts ほりべあ川: 欠測 かすてら川: 3 posts こじら川: 42 posts しの川: 7 posts
■ 野洲田川定点観測所 https://nostr-hotter-site.vercel.app
https://i.imgur.com/BauRHvW.png https://i.imgur.com/71sH005.png
-
@ 693c2832:57b2f1fb
2024-03-01 07:38:09There are moments when your body, your mind and your soul are all aching at the same time. When life switches you to a semi-automatic mode, it is far too easy to lose touch. Thankfully, I got reminded of the importance of being thankful.
Be. Thankful. In moments of pain, those words can appear sharp. You commute back ‘home’, alone through a sea of people, feeling disconnected from it all; Koyaanisqatsi keeps coming to mind. It sometime feels as if you were waiting for a train at the wrong platform, jumped aboard anyway and finally got off at the wrong station. Should you ‘thank’ anyone for it? If you sit there in sorrow, you are not going anywhere.
I went back to my little box in a box. You know, those boxes made of empty corridors and rows of closed doors; sounds of life but no real signs of it. I jumped in the shower to try to wash some of the aches away, sooth the body, the mind and the soul. It is amazing what a warm shower can do.
As I felt the water dripping down my face, washing some of the tension away, those words came back to mind: be thankful. I closed my eyes and started tracing the path of the water in my mind.
As I saw the clean water coming up the pipes up to my floor, I was reminded of the plumbers assembling the maze of water ducts and all the other builders that had worked months erecting the condominium from the dust. I saw them work and joke, getting sad and happy, tired and then back to work; water flowing at the centre of it all
My mind continued into the pipes of the city’s network. For every place I would cross, water sanitation plants, large aqueducts and water dams, more and more people were coming to mind. All the builders, the engineers, the drivers moving everything around and all the roads they were using, all the trucks, the mechanics, the petrol stations, the refineries, more and more people all with their lives and their dreams, their aches and their sorrows.
My mind continued to the factories where all these items were constructed out of ingenuity, knowledge, sweat and raw materials. I ventured down more transport routes, trucks, cargos and planes, and into the caves and mines where all these materials were extracted from the earth. More and more people were deserving my thanks. All the lives that helped my water along the way. In feeling thankful I was feeling connected. It is amazing what a warm shower can do.
Suddenly, my mind switched to an ancient Roman aqueduct under construction. I was being transported through time, countless people had slowly shaped the technological wonders that would one day combine into this warm water washing away a feeling of isolation. How many of them had failed? All of them had persevered.
Marvels of engineering and architecture, science and art. Knowledge passed on and refined generation after generation. Networks of power and water, logistics and transports, companies, organisations, governments and tax payers.
I could attempt to use the little knowledge and skills I possess to carve myself some kind of a container, attempt to boil some water over a fire started with a couple of sticks and finally splash it over my head, but even then I would have to thank all the people that have passed that knowledge on to me, my parents, my teachers, my many mentors in real life and in the media. For every single piece of technology I use there is an unfathomable amount of people deserving my thanks. For every single skill that I possess there are generations and generations to whom I owe my gratefulness.
It is amazing what a warm shower can do. That simple daily moment is in itself a luxury, one of the most basic luxury I enjoy. We often take things for granted. Our expectations, our suffering, our definitions of fair, all impact on the way we look at life. I sometime forget about this lesson and let these feelings take over me again; disappointed, disconnected, isolated, at war. Judging people when I define them careless and lazy in my regard will only lead me to anger. However, even when they did not seem to care for me directly, so many were deserving my thanks. So after a bit of time and a few showers we can find it in ourselves to realise how interconnected we all are and find it in our hearts to be thankful.
When you walk back out of your little box, the sea of people is the same, your ego is not. It is amazing what a warm shower can do.
To all of you I say ‘thank you’, for the shower, and everything else.
-
@ fa984bd7:58018f52
2024-02-28 22:15:25I have recently launched Wikifreedia, which is a different take on how Wikipedia-style systems can work.
Yes, it's built on nostr, but that's not the most interesting part.
The fascinating aspect is that there is no "official" entry on any topic. Anyone can create or edit any entry and build their own take about what they care about.
Think the entry about Mao is missing something? Go ahead and edit it, you don't need to ask for permission from anyone.
Stuart Bowman put it best on a #SovEng hike:
The path to truth is in the integration of opposites.
Since launching Wikifreedia, less than a week ago, quite a few people asked me if it would be possible to import ALL of wikipedia into it.
Yes. Yes it would.
I initially started looking into it to make it happen as I am often quick to jump into action.
But, after thinking about it, I am not convinced importing all of Wikipedia is the way to go.
The magical thing about building an encyclopedia with no canonical entry on any topic is that each individual can bring to light the part they are interested the most about a certain topic, it can be dozens or hundreds, or perhaps more, entries that focus on the edges of a topic.
Whereas, Wikipedia, in their Quijotean approach to truth, have focused on the impossible path of seeking neutrality.
Humans can't be neutral, we have biases.
Show me an unbiased human and I'll show you a lifeless human.
Biases are good. Having an opinion is good. Seeking neutrality is seeking to devoid our views and opinions of humanity.
Importing Wikipedia would mean importing a massive amount of colorless trivia, a few interesting tidbits, but, more important than anything, a vast amount of watered-down useless information.
All edges of the truth having been neutered by a democratic process that searches for a single truth via consensus.
"What's the worst that could happen?"
Sure, importing wikipedia would simply be one more entry on each topic.
Yes.
But culture has incredibly strong momentum.
And if the culture that develops in this type of media is that of exclusively watered-down comfortable truths, then some magic could be lost.
If people who are passionate or have a unique perspective about a topic feel like the "right approach" is to use the wikipedia-based article then I would see this as an extremely negative action.
An alternative
An idea we discussed on the #SovEng hike was, what if the wikipedia entry is processed by different "AI agents" with different perspectives.
Perhaps instead of blankly importing the "Napoleon" article, an LLM trained to behave as a 1850s russian peasant could be asked to write a wiki about Napoleon. And then an agent tried to behave like Margaret Thatcher could write one.
Etc, etc.
Embrace the chaos. Embrace the bias.
-
@ cce0989b:b497e608
2024-02-26 15:03:04In Old Happy culture, we’re told to always be positive. And what does that positivity look like? Burying your real feelings under a layer of false smiles; never, ever complaining or speaking up about difficult things; and forcing yourself to ignore suffering and pain.
But this is not true positivity. When I think about someone who is a positive person, I don’t think of someone who is faking their way through the day. I think about someone who is facing their challenges courageously, making authentic choices, and striving to help other people.
That’s because true positivity has nothing to do with how smiley you are. True positivity is making the choice to embrace your experiences and learn from them. In a world of challenges, what could be more positive than accepting what is and then trying to find a way to use it that benefits yourself and others?
Take a moment now and allow yourself to feel any emotions that you have been suppressing, labeling them as they come up. Then, ask yourself: “What does this have to teach me?” That's true positivity in action.
-
@ 3f770d65:7a745b24
2024-02-24 18:01:19February 24, 2024 - Nostr Nests, the premier decentralized audio platform powered by the Nostr protocol, announces the launch of its highly anticipated version 2.0 beta release. This major update brings complete integration with Nostr, a redesigned user interface, and a host of powerful features, making it easier than ever to connect, collaborate, and create in an open and censorship-resistant environment.
Originally launched in January 2023 as Nostr Plebs Spaces, Nostr Nests quickly gained traction as a haven for audio-based interactions across the Nostr protocol. The official rebrand to Nostr Nests in February 2023 further solidified its position as the go-to platform for chatting, jamming, micro-conferences, live podcast recordings, and more with the onboarding of users, shows, and content from around the globe.
Version 2.0 marks a significant leap forward:
Seamless Nostr Integration: Nostr Nests 2.0 was built from the ground up to be a full fledged Nostr client, enabling a truly decentralized experience with direct Nostr authentication. No need for separate accounts, logins, or verification posts. Login with your current Nostr keys via nsecBunker or NIP-07 extensions such as Alby, Nostr Connect, or Nostore for iOS.
Discoverability and User Choice: Find your favorite live audio events like never before, not only on NostrNests.com, but also via a variety of Nostr clients that support live events such as Amethyst, Snort, Iris, Flockstr, Nostrudel, Wherostr and more. Install Nostr Nests as a PWA on Android, iOS, or your favorite desktop operating system.
Redesigned Interface: Navigate with ease thanks to a streamlined and intuitive layout. Find scheduled events, discover communities, and manage your interactions effortlessly.
Enhanced Functionality: Host events with flexible permission settings, record and store audio directly from your Nest, be in charge of your data while you chat on your customized relays, leverage advanced moderation tools for a smooth and secure experience, and broadcast it all across the Nostr protocol. Experience value for value with Zap enabled profiles and chat announcements.
Multi-lingual: Access Nostr Nests in your native language. Nostr Nests supports over a dozen languages, making Nostr Nests a truly global platform for our users. Open Source: The platform's code is fully open-source under the MIT license, welcoming community contributions and fostering transparency. Submit issues and pull requests on GitHub to shape the future of Nostr Nests.
Nostr Nests 2.0 empowers individuals and communities to:
Connect: Host and attend audio events with like-minded people based on shared interests, making new friends along the way or reconnecting with old ones.
Collaborate: Jam with musicians, brainstorm with colleagues, or conduct insightful interviews in a live audio setting.
Express Yourself: Share your voice, thoughts, and ideas with the world in an uncensored and secure environment via text chats as well as audio conversations.
Build Communities: Foster vibrant, customizable communities around shared passions, hobbies, or professional pursuits.
Whether you're a musician, podcaster, entrepreneur, or simply someone who enjoys meaningful audio interactions, Nostr Nests 2.0 invites you to join the conversation. Visit NostrNests.com today and experience the future of social audio.
Join and contribute to the Nostr Nests community:
Website: https://NostrNests.com
GitHub: https://github.com/nostrnests/nests
Current Features:
Nostr Integration: * Sign-in * Live events * Scheduled events * Zaps * Public chat * Reactions * Room presence * Relays (default or custom) * Social sharing * Follow/Unfollow * Profile creation * Profile Editing * Lobby filtering
Lobby: * Active rooms * Scheduled rooms * Filter by global or following * Create new room * View profile
Create room: * Create custom room * Customizable banner * Preselected colors * Custom image (static or animated) * Schedule room * Use default relays or custom relays
Rooms: * Stage and audience * Add/Remove people to/from stage * Public chat (ability to hide/view on mobile) * Raise hand * Mute/Unmute own mic * Mute others (Mod or Host) * Zap * Reactions * Edit profile * View profile * Share to Nostr * Stream audio (coming soon) (Mod or Host) * Record audio (Mod or Host) * Access room recordings (Mod or Host)
Sign-in: * Sign-in as guest to listen only * Create new Nostr profile * Use existing Nostr profile
Future Features:
- Chat zaps, chat reactions, mutes, etc.
- Support additional nsecBunkers
- More room customization options
- Monetization options for creators
- And more!
Please note: While Nostr Nests 2.0 marks a significant step forward, this release should be considered beta software. Users may encounter occasional bugs or unforeseen issues as we continue to refine and optimize the platform. We appreciate your understanding and patience as we work towards a fully polished experience.
Known Issues:
- A lot! It's very new and very beta!
- Sign-in user flow for direct links to rooms
- Mobile UI alignment
- Mobile UI chat bar
-
@ 4bcc0228:299141d7
2024-02-23 08:54:31もう3月になってしまいますが、2/10に開催された「ゴリラ.vim #30 ~ 四谷ラボコラボ」に行ってきたのでその感想とか諸々を書いていきます。
普段は平日の夜に開催されていますが、今回は土曜日開催ということで初めて参加してみました。前から参加してみたかったので嬉しい。発表の内容
Nostrってなんなんだ by つるるんさん
前半は遅刻してしまいその場で見れなかったので、アーカイブで見直しました。
Nostrの基本的な概要についてのセッションでした。自分も以前からNostrにアカウント(?)を持っていましたが、詳しい仕組みなどは知らなかったので、 「そんな仕組みになってたんだ」とか「思ってた以上に面白そうかも」などと思える発表でした。
Vimの世界へようこそ by ゴリラさん
Vim界隈の解説に関するセッションでした。 Vim/Neovimの違い、両者の思想などの紹介や実際にテキストオブジェクトを利用した思考の速度のテキスト編集などの実演がありました。 その後はVimのコミュニティの紹介で、vim-jpの紹介がありました。
Vimはコミュニティのバックグラウンドが大きいのもメリットだと思っているので、人との繋がりという方向から見てもとても魅力的なエディタだと思っています。Vimやると人生変わるよ
Nostr✖Vim ライブコーディング by 発火大根さん
VimとNostrのCLIクライアントalgiaを使ってVimからNostrのTLを見るプラグインをライブコーディングしてみよう、という内容でした。 JSONを扱うので、TypeScriptでプラグインが書けるdenopsを使うとポータビリティのあるプラグインが出来そうだなぁなんて思いました。やってみたい。
Nostrで個人開発はじめよう by かすてらふぃさん
Nostrの個人開発のしやすさをあらゆる観点から紹介するセッションでした。 個人開発を発表した際の反応の良さはVimコミュニティにも通じるものがあって良いなぁと感じました。
四谷ラボとは / Bluesky勉強会#3 by Shino3
Nostrの概要からNostrの優位な点についての紹介、活用事例などがありとてもワクワクするセッションでした。
Nostrの冗長性、即時性、耐障害性を活用した災害情報配信サービスの事例として「サーモンアラートシステム」についての紹介では、 kind 30028も実際に活用していて、NostrでBotを開発する1事例としてかなり参考になるセッションでした。Nervより速いのすごい。
設定をすることは自由の象徴 by yasunori
Vimの最大のメリットである「自由に設定できる」という事についてのセッションでした。 設定できるというのは本当にありがたくて、学習コストは高いけれど一旦覚えてしまえばちょっとやそっとの要望は設定を調整するだけで実現できるので、日々ありがたみを感じています。
VimをIMEとして使いこなす(改) by NI57721
以前Vim界隈で話題になったVimをIMEとして使う方法についてのセッションでした。 「Vimがあれば何でもできる」の良い例だと思いました。
Vimは大抵の編集では最強ですがIMEを使う編集は苦手なので、そのあたりを改善する一つの事例として参考になりました。 途中実演もありましたが、自分がSKK打つのに比べてめちゃくちゃ速くてびっくりしました。すごい...
懇親会
発表が終わったあとは懇親会がありました。 今回は食事としてゆかりおにぎりなどが食べれました。ゆかり好きなので嬉しかった。
あとはNostrのクライアントDamusを開発している方がzap(物理)[^1]している動画を見たりとワイワイしました。楽しかった。
また@ma_swanさんと始めてお会いできたので、自分のマシンとかVimのカスタムについて話したりしました。
その後
ゴリラ.vimが終わったあとは懇親会で話したma_swanさんと渋谷のカフェでCoc.nvimの導入を手伝ったり、卒業研究でやりたいこととか話したりしました。 同年代とこういった事を話せる機会はなかなか無いので嬉しいです。今度は他の学生Vimmerとか集めてもくもく会出来たりしたら良いなぁなんて思いました。
余談
今回初めてNostar界隈の人と交流しましたが、雰囲気がvim-jpに似ていいてなんか良いなぁと思いました。 ゴリラ.vimの後からNostrの方にも浸ってますが、いろんな話題でわちゃわちゃしていてほぼvim-jpみたいな雰囲気があります。
また、VimコミュニティとNostrコミュニティはどちらも「自分で作っちゃえ!」という雰囲気があったりしてかなり相性が良いと思っているので、 今後も交流が続けばいいなぁと思っています。
今回はDeNAさんのオフィスで開催されたので、普段は入れないスクランブルスクエアのオフィス階に入れて良い経験になりました。 キラキラオフィスすごい...あとオフィスにあったYogiboのパソコンテーブルがかなり使い心地が良かったので、いつか買おうと思ったりしてます。
VimのオフラインイベントはVimConfに続いて2回めでしたが、今回も楽しい時間を過ごすことが出来ました。 また機会があったらこういったイベントに参加していきたいです!
[^1]: Lightning Networkを活用したユーザー間でBitcoinを送信できる機能。質問に答えてくださったお礼にチップ感覚で渡したりできて便利。
-
@ eb119234:434cddf2
2024-02-22 12:12:53[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
[35]
[36]
[37]
[38]
[39]
[40]
[41]
[42]
[43]
[44]
[45]
[46]
[47]
[48]
[49]
[50]
[51]
[52]
[53]
[54]
[55]
[56]
[57]
[58]
[59]
[60]
[61]
[62]
[63]
[64]
[65]
[66]
[67]
[68]
[69]
[70]
[71]
[72]
-
@ 2d5b6404:d4b500b0
2024-02-17 14:47:18- アンフィールドでリバプールの試合を観戦する
- イタリアでピザ食べたりエスプレッソ飲む
- じゅりよんやラルフ、ewelina、マルティン、jefgとか𓆏に会いにヨーロッパ旅行行く
- 長崎ぺんぎん水族館に行く
- 九十九里で貝を食べる
- 奄美大島でクジラの鳴き声を聞く
- 蒸気機関車に乗る
- 台湾旅行に行く
- 韓国旅行に行く
- 船で東京か大阪、四国に行く
- Punkt. MP02を買い替える
- ベトナムに住んでる友達に会いに行く
- ホームベースとなる共同体を見つける。もしくは作る
- 収入の10分の1を寄付する
- ~~デスストランディングをクリアする~~
- ブレワイ、ティアキンをクリアする
- べランピングする
- 冷蔵庫を伊良コーラでいっぱいにする
- 友達とこたつでゲームする
-
@ f240c9c2:6c0c0a86
2024-02-16 09:39:47noStrudel、早いし機能も充実していてとても良いクライアント。でも個人的に画面下部のタブバーがごちゃっとしてるのが気に入らなかったので、雑にUIを破壊してみた。 ついでにフォントサイズがちょっと小さくて見づらかったので気持ち大きくした。
before
after
ブックマークレット版
js javascript:applyStyle%3D()%3D%3E%7B(customStyle%3Ddocument.createElement(%22style%22)).innerText%3D%60%20body%7Bfont-size%3Alarger%3B%7Dbutton%5Baria-label%3D%22Launchpad%22%5D%7Bdisplay%3Anone%3B%7Dbutton%5Baria-label%3D%22New%20Note%22%5D%7Bposition%3Aabsolute%3Bwidth%3A4rem%3Bheight%3A4rem%3Bbottom%3A4rem%3Bright%3A1.25rem%3Bborder-radius%3A50%25%3B%7D%60%2Cdocument.getElementsByTagName(%22head%22).item(0).appendChild(customStyle)%7D%2C-1%3D%3D%3Dwindow.location.href.search(%2F%5C%2F%5C%2Fnostrudel%5C.ninja%2F)%3Falert(%22noStrudelで実行しなはれ~%22)%3AapplyStyle()%3Bvoid(0);
追加用リンクUserStyle版
「iOS Safariだからユーザースタイルとか使えなさそ〜」と思い込んでたら普通に使えたのでブックマークレットにする必要なかった。
css /* ==UserStyle== @name noStrudelCustomStyle @include https://nostrudel.ninja/* ==/UserStyle== */ body{font-size:larger;} button[aria-label="Launchpad"]{display:none;} button[aria-label="New Note"]{position:absolute;width:4rem;height:4rem;bottom:4rem;right:1.25rem;border-radius:50%;}
保存用リンク -
@ d1d17471:5b15ed44
2024-02-11 15:18:32Nostrプロトコルを利用したアプリケーションの開発に役立つ資料をまとめていく場です。
プロトコル仕様書
nostr-protocol/nips
https://github.com/nostr-protocol/nips
Nostrプロトコルの仕様を定めるNIPs(Nostr Implementation Possibilities)を取りまとめるリポジトリ。 また、issue・PRは新規NIPの提案や既存NIPの改善などに関する議論を交わす場となっている。
必須仕様はすべて NIP-01 にまとまっているので、まずはNIP-01を読みましょう
nips-ja
https://github.com/nostr-jp/nips-ja
NIPsの日本語訳プロジェクト。
プロトコルの解説
Web記事
書籍
- Hello, Nostr! 先住民が教えるNostrの歩き方
- learn-nostr-by-crafting: 本書内記事「手を動かして学ぶNostrプロトコル」の演習用リポジトリ
- Hello, Nostr! Yo Bluesky! 分散SNSの最前線
- learn-nostr-by-crafting-2: 本書内記事「演習!作ってみよう「日本語 TL のぞき窓」の演習用リポジトリ
- Software Design誌 連載「新時代の分散SNS Nostr」(2023年7月号~12月号)
- 第1回(7月号)〜第3回(9月号): Nostrプロトコルやアプリケーションの紹介
- 第4回(10月号): Nostrプロトコルの解説
- 第5回(11月号), 第6回(12月号): Nostrアプリケーションの実装解説
動画
ライブラリ
nostr-tools
https://github.com/nbd-wtf/nostr-tools
Nostrアプリケーションの開発で頻出する処理を提供するJS/TSライブラリ。
- 秘密鍵の生成・秘密鍵から公開鍵への変換
- イベントの署名・検証
- リレーとの通信(イベント購読・発行)
- bech32形式識別子(
npub
,nsec
,nevent
などから始まる識別子、NIP-19)のencode/decode - ドメイン認証(NIP-05)の検証
- etc...
NDK
https://github.com/nostr-dev-kit/ndk
Nostrプロトコルに対する、nostr-toolsよりも高いレイヤの抽象を提供するJS/TSライブラリ
rx-nostr
https://github.com/penpenpng/rx-nostr
イベント購読をはじめとするNostrリレーとのやり取りを、RxのSubscriptionとして扱えるようにするJS/TSライブラリ。
nostr-fetch
https://github.com/jiftechnify/nostr-fetch
Nostrリレーから過去のイベントを取得する機能を提供するJS/TSライブラリ。最新のReplaceable Eventの取得にも便利。
(リレーから過去のイベントを正確に取得しようと思うと、落とし穴が多くて意外と大変。詳細はこちら)
rust-nostr
https://github.com/rust-nostr/nostr
Rust向けにNostrプロトコル全般の抽象を提供するライブラリ。機能ごとにクレートが分割されている。
- nostr: Nostrプロトコルの低レイヤの実装
- nostr-sdk: nostrクレートをベースとする、より高レイヤの抽象。クライアントの実装向け
- nostr-database: Nostrイベントの永続化処理に関する抽象。
- etc
また、さまざまなプログラミング言語向けのbindingが提供されている
go-nostr
https://github.com/nbd-wtf/go-nostr
Nostrプロトコル全般の抽象を提供するGoライブラリ。
eventstore
https://github.com/fiatjaf/eventstore
Nostrイベントの永続化処理に関する抽象を提供するGoライブラリ。
khatru
https://github.com/fiatjaf/khatru
Go向けのNostrリレー実装用のフレームワーク。
-
@ 2d417bce:f56911ac
2024-02-10 21:04:23TEST
enu
TEST
https://studiokaiji.com
https://nostter.app/
-
@ dffd3ffc:5ade7be1
2024-02-10 14:25:48[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
[35]
[36]
[37]
[38]
[39]
[40]
[41]
[42]
[43]
[44]
[45]
[46]
[47]
[48]
[49]
[50]
[51]
[52]
[53]
[54]
[55]
[56]
[57]
[58]
[59]
[60]
[61]
[62]
[63]
[64]
[65]
[66]
[67]
[68]
[69]
[70]
[71]
[72]
[73]
[74]
[75]
[76]
[77]
[78]
[79]
[80]
[81]
[82]
[83]
[84]
[85]
[86]
[87]
[88]
[89]
[90]
[91]
[92]
[93]
[94]
[95]
[96]
[97]
[98]
[99]
[100]
[101]
[102]
[103]
[104]
[105]
[106]
[107]
[108]
[109]
[110]
[111]
[112]
[113]
[114]
[115]
[116]
[117]
[118]
[119]
[120]
[121]
[122]
[123]
[124]
[125]
[126]
[127]
[128]
[129]
[130]
[131]
[132]
[133]
[134]
[135]
[136]
[137]
[138]
[139]
[140]
[141]
[142]
[143]
[144]
[145]
[146]
[147]
[148]
[149]
[150]
[151]
[152]
[153]
[154]
[155]
[156]
[157]
[158]
[159]
[160]
[161]
[162]
[163]
[164]
[165]
[166]
[167]
[168]
[169]
[170]
[171]
[172]
[173]
[174]
[175]
[176]
[177]
[178]
[179]
[180]
[181]
[182]
[183]
[184]
[185]
[186]
[187]
[188]
[189]
[190]
[191]
[192]
[193]
[194]
[195]
[196]
[197]
[198]
[199]
[200]
[201]
[202]
[203]
[204]
[205]
[206]
[207]
[208]
[209]
[210]
[211]
[212]
[213]
[214]
[215]
[216]
[217]
[218]
[219]
[220]
[221]
[222]
[223]
[224]
[225]
[226]
[227]
[228]
[229]
[230]
[231]
[232]
[233]
[234]
[235]
[236]
[237]
[238]
[239]
[240]
[241]
[242]
[243]
[244]
[245]
[246]
[247]
[248]
[249]
[250]
[251]
[252]
[253]
[254]
[255]
[256]
[257]
[258]
[259]
[260]
[261]
[262]
[263]
[264]
[265]
[266]
[267]
[268]
[269]
[270]
[271]
[272]
[273]
[274]
[275]
[276]
[277]
[278]
[279]
[280]
[281]
[282]
[283]
[284]
[285]
[286]
[287]
-
@ 0f22c06e:6194f8b6
2024-02-08 01:26:43On social media and in the Nostr space in particular, there’s been a lot of debate about the idea of supporting deletion and editing of notes.
Some people think they’re vital features to have, others believe that more honest and healthy social media will come from getting rid of these features. The discussion about these features quickly turns to the feasibility of completely deleting something on a decentralized protocol. We quickly get to the “We can’t really delete anything from the internet, or a decentralized network.” argument. This crowds out how Delete and Edit can mimic elements of offline interactions, how they can be used as social signals.
When it comes to issues of deletion and editing content, what matters more is if the creator can communicate their intentions around their content. Sure, on the internet, with decentralized protocols, there’s no way to be sure something’s deleted. It’s not like taking a piece of paper and burning it. Computers make copies of things all the time, computers don’t like deleting things. In particular, distributed systems tend to use a Kafka architecture with immutable logs, it’s just easier to keep everything around, as deleting and reindexing is hard. Even if the software could be made to delete something, there’s always screenshots, or even pictures of screens. We can’t provably make something disappear.
What we need to do in our software is clearly express intention. A delete is actually a kind of retraction. “I no longer want to associate myself with this content, please stop showing it to people as part of what I’ve published, stop highlighting it, stop sharing it.” Even if a relay or other server keeps a copy, and keeps sharing it, being able to clearly state “hello world, this thing I said, was a mistake, please get rid of it.” Just giving users the chance to say “I deleted this” is a way of showing intention. It’s also a way of signaling that feedback has been heard. Perhaps the post was factually incorrect or perhaps it was mean and the person wants to remove what they said. In an IRL conversation, for either of these scenarios there is some dialogue where the creator of the content is learning something and taking action based on what they’ve learned.
Without delete or edit, there is no option to signal to the rest of the community that you have learned something because of how the content is structured today. On most platforms a reply or response stating one’s learning will be lost often in a deluge of replies on the original post and subsequent posts are often not seen especially when the original goes viral. By providing tools like delete and edit we give people a chance to signal that they have heard the feedback and taken action.
The Nostr Protocol supports delete and expiring notes. It was one of the reasons we switched from secure scuttlebutt to build on Nostr. Our nos.social app offers delete and while we know that not all relays will honor this, we believe it’s important to provide social signaling tools as a means of making the internet more humane.
We believe that the power to learn from each other is more important than the need to police through moral outrage which is how the current platforms and even some Nostr clients work today.
It’s important that we don’t say Nostr doesn’t support delete. Not all apps need to support requesting a delete, some might want to call it a retraction. It is important that users know there is no way to enforce a delete and not all relays may honor their request.
Edit is similar, although not as widely supported as delete. It’s a creator making a clear statement that they’ve created a new version of their content. Maybe it’s a spelling error, or a new version of the content, or maybe they’re changing it altogether. Freedom online means freedom to retract a statement, freedom to update a statement, freedom to edit your own content. By building on these freedoms, we’ll make Nostr a space where people feel empowered and in control of their own media.
-
@ 7fa56f5d:751ac194
2024-02-06 11:28:05I'm happy to announce a new release of Habla.
Nostr connect
Users can now login via Nostr Connect remote signers. Both
bunker://
URLs and NIP-46 compatible nostr addresses (NIP-05) are supported.Local drafts
nostr:nevent1qqs2jfpse4akde0w2ljq0n8sytp7pmnrqj943ymyw5kets45ftvv5qspzpmhxue69uhkummnw3ezuamfdejsygyhcu9ygdn2v56uz3dnx0uh865xmlwz675emfsccsxxguz6mx8rygq4xs2f
Some users have reported Habla eating their blog posts. To avoid the issue Habla will now automatically save the post you are editing in local storage. The option to store drafts on nostr still exists if you want to continue editing from another client or device.
RTL languages
Habla is now translated to Hebrew. The translator was kind enough to review the RTL compatibility of the site and we have fixed multiple layout and text direction issues for RTL language users.
Extracting Habla core code
The core Habla code has been extracted to a library called ngine and I have ported several apps to it. These apps are currently using it:
nostr:naddr1qqxnzdesxvungvecxsungdpkqgs8lft0t45k92c78n2zfe6ccvqzhpn977cd3h8wnl579zxhw5dvr9qrqsqqql8kqf6n74
nostr:naddr1qqxnzdesxgunqvpexuersvp3qgs8lft0t45k92c78n2zfe6ccvqzhpn977cd3h8wnl579zxhw5dvr9qrqsqqql8k6zxwng
nostr:naddr1qqxnzd3exgmrsveh8yerqdfcqgsrx4k7vxeev3unrn5ty9qt9w4cxlsgzrqw752mh6fduqjgqs9chhgrqsqqql8kaulu0l
The next step is to start using it from Habla and document it so other nostr devs can leverage it for building apps quicker. The library has similar scope as Osty so will probably join forces with nostr:nprofile1qqsru22d9lfnnwck54qr4phrvey50h2q33xc0gqxv5j03ftn4efu4rspr9mhxue69uhhyetvv9ujumn0wdmksetjv5hxxmmd9uq3gamnwvaz7tmjv4kxz7tpvfkx2tn0wfnj7qgewaehxw309aex2mrp0yhxummnw3exzarf9e3k7mf0y2nv4h, expect some news about this soon.
Happy curating, reading and writing!
-
@ 17330507:495e4154
2024-02-05 22:57:03This is an official statement about my node. TLDR: if you have channel with me, I recommend force-closing it. If your node did penalty/breach tx, please return my funds, see below. Contact see on amboss - https://amboss.space/node/033878501f9a4ce97dba9a6bba4e540eca46cb129a322eb98ea1749ed18ab67735?section=General - preferrably Telegram or email, haven't checked nostr in ages, but will do.
Penalty tx
See instructions here: https://gist.github.com/xmrk-btc/f21fd8649dcd573679f043836e3ef05f , note that my lightning address is published on amboss - pls use address from amboss, you don't want to pay any impostor. Ideally I would sign it with my node's private key, doing lncli signmessage but cannot do that while node is down, and cannot safely bring it up. I am linking a separate document because I may need to edit it.
I'd like to publicly praise all peers who do return me sats, and not sure how to do it so that it has maximum visibility. Suggestions welcome. Thinking about using Node Bilboard on Amboss -> Socials, but not satisfied, it may get lost in the spam. And it is valuable information - other things being equal, you strongly prefer a honest peer which doesn't try to rob you even when he can do so with relative impunity.
Although I may sue peers which don't return money - well, at least I can serve them using OP_RETURN. /s
Already 3 peers out of 13 reached out: - Garlic - https://amboss.space/node/033b63e4a9931dc151037acbce12f4f8968c86f5655cf102bbfa85a26bd4adc6d9 - Cypher - https://amboss.space/node/02d5246fa6bccbb80732146e198d243c49348a29d847ca8486742f5bbec158744f - Satway - https://amboss.space/node/02916bb52b33836e28a3649baea2e4a29c16fd8ad97901b2c97d408f428edef108
Still, I am a bit worried about creating bad precedent, penalty txs exist for a reason. And yes, this surely doesn't look like a succesful attack by me, but how about unsuccesful one? Even unsuccesful attacker should be punished to deter attacks. In my favor speaks the fact of having run a node for > 2 years, an attacker probably wouldn't bother.
Amboss Magma channel buyers
Headache... I want to return funds I received. But there is magma fee, channel buyer pays to seller (me) and to amboss, guess I should refund both, as this is not fault of amboss. Hoping to beg amboss to forgive something. I am planning doing keysends, but there may be peers who neither support keysend nor published contact info. May publish some info here: https://gist.github.com/xmrk-btc/456666f1681c65dd0469df786de5d632 .
Other peers - active
As stated, I recommend force-closing. I still hope for a miracle, so you may wait a bit, but ziggie has already force-closed, and I have discussed details with him. Remember there are watchtowers, don't try to steal or you will be punished just as I was.
Another possibility is doing zombie recovery with SCBs even if your node is runnning fine. The advantage is that you don't need to wait for your fund, and less on-chain footprint & fees. But it is unsafe for me, it is essentialy a cooperative closure, I lose watchtower protection. And is more work for both of us. May do it with some trusted peers. (Correct me if I am wrong...)
Other peers - crashed/zombie
My SCB / channel.backup seems up to date, so zombie recovery should be possible. I have one such case, haven't attempted it yet though.
What happened
I stopped lnd, installed updates for 30-60 minutes, wanted to reboot because systemd did not respond, but even reboot did nothing. Decided to do sync, wait a few seconds and do
reboot -f
. As if I haven't heard aboutumount
ormount -o remount,ro
... sigh. lnd data are stored on ZFS pool as RAID1. Working theory is that important data stayed only in cache, lnd was running on 32 GB RAM machine while channel.db has 14GB so enough to cache everything. Still surprises me, usually lnd is writing at least 1 MB/s, as seen in dstat, perhaps some data is written and some is not?Community
The reaction was amazing, special thanks to Rocket Node who insisted on me stopping lnd, and thus possibly saved me several BTC. Zap-O-Matic tried to calm me down. Ziggie and Alex Bosworth investigated. They all gave me strength to continue.
Future
I probably want to start another lightning node, but not sure if I have all the skills. I can be reckless and undisciplined, perhaps less so after this event. I have little idea how to choose good HW. And the node was distracting me from work. OTOH, it would be a pity to abandon such community. And this gives me some opportunities to improve, I can finally migrate to SQLite or Postgres which could have better replication.
-
@ b3e43e8c:e3068b5f
2024-02-01 12:13:17ああテストだよテストだよ
-
@ cce0989b:b497e608
2024-01-30 13:44:31Being patient is hard.
It's hard to wait; it's frustrating, it's difficult, and it can even make us feel helpless, like we have no power over what happens next. What's the vibe of patience? Waiting in line at the doctor's office, waiting for difficult situations to change, waiting to see the results from your daily habits.
But there's a state very close to patience — one where you are still waiting for something to happen — that has a completely different emotional tone. It's the state of anticipation.
Anticipation is exciting. Something good is going to happen. There's joy just around the corner; it's going to be so wonderful when it finally arrives. You anticipate vacations, special events, and life milestones. As it turns out, research find that anticipation can sometimes be even more enjoyable than the event itself.
Here's something to try out today:
What would it look like if you waited with anticipation instead of patience?
If you were anticipating... you would be certain that good things were coming, so you'd feel excited and hopeful.
If you were anticipating... you would trust that changes were occurring, even if you couldn't see them quite yet.
If you were anticipating... you would enjoy the process of waiting rather than simply rushing to get to the end.
Wouldn't that be more so much enjoyable?
-
@ 2863f394:275ed58d
2024-01-27 11:15:32I setup a node or two...spent $400 each for incoming and outgoing and now I can't receive payments anymore. I basically lost $800 on this garbage.
-
@ 2c7cc62a:622a5cdc
2024-01-16 15:56:52algia
nostr CLI client written in Go
Usage
``` NAME: algia - A cli application for nostr
USAGE: algia [global options] command [command options] [arguments...]
DESCRIPTION: A cli application for nostr
COMMANDS: timeline, tl show timeline stream show stream post, n post new note reply, r reply to the note repost, b repost the note unrepost, B unrepost the note like, l like the note unlike, L unlike the note delete, d delete the note search, s search notes dm-list show DM list dm-timeline show DM timeline dm-post post new note profile show profile powa post ぽわ〜 puru post ぷる zap zap note1 version show version help, h Shows a list of commands or help for one command
GLOBAL OPTIONS: -a value profile name --relays value relays -V verbose (default: false) --help, -h show help ```
Installation
Download binary from Release page.
Or install with go install command.
go install github.com/mattn/algia@latest
Configuration
Minimal configuration. Need to be at ~/.config/algia/config.json
json { "relays": { "wss://relay-jp.nostr.wirednet.jp": { "read": true, "write": true, "search": false } }, "privatekey": "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
If you want to zap via Nostr Wallet Connect, please add
nwc-pub
andnwc-uri
which are provided from https://nwc.getalby.com/apps/new?c=Algiajson { "relays": { ... }, "privatekey": "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "nwc-uri": "nostr+walletconnect://xxxxx", "nwc-pub": "xxxxxxxxxxxxxxxxxxxxxxx" }
TODO
- [x] like
- [x] repost
- [x] zap
- [x] upload images
FAQ
Do you use proxy? then set environment variable
HTTP_PROXY
like below.HTTP_PROXY=http://myproxy.example.com:8080
License
MIT
Author
Yasuhiro Matsumoto (a.k.a. mattn)
-
@ 3bf0c63f:aefa459d
2024-01-15 11:15:06Pequenos problemas que o Estado cria para a sociedade e que não são sempre lembrados
- **vale-transporte**: transferir o custo com o transporte do funcionário para um terceiro o estimula a morar longe de onde trabalha, já que morar perto é normalmente mais caro e a economia com transporte é inexistente. - **atestado médico**: o direito a faltar o trabalho com atestado médico cria a exigência desse atestado para todas as situações, substituindo o livre acordo entre patrão e empregado e sobrecarregando os médicos e postos de saúde com visitas desnecessárias de assalariados resfriados. - **prisões**: com dinheiro mal-administrado, burocracia e péssima alocação de recursos -- problemas que empresas privadas em competição (ou mesmo sem qualquer competição) saberiam resolver muito melhor -- o Estado fica sem presídios, com os poucos existentes entupidos, muito acima de sua alocação máxima, e com isto, segundo a bizarra corrente de responsabilidades que culpa o juiz que condenou o criminoso por sua morte na cadeia, juízes deixam de condenar à prisão os bandidos, soltando-os na rua. - **justiça**: entrar com processos é grátis e isto faz proliferar a atividade dos advogados que se dedicam a criar problemas judiciais onde não seria necessário e a entupir os tribunais, impedindo-os de fazer o que mais deveriam fazer. - **justiça**: como a justiça só obedece às leis e ignora acordos pessoais, escritos ou não, as pessoas não fazem acordos, recorrem sempre à justiça estatal, e entopem-na de assuntos que seriam muito melhor resolvidos entre vizinhos. - **leis civis**: as leis criadas pelos parlamentares ignoram os costumes da sociedade e são um incentivo a que as pessoas não respeitem nem criem normas sociais -- que seriam maneiras mais rápidas, baratas e satisfatórias de resolver problemas. - **leis de trãnsito**: quanto mais leis de trânsito, mais serviço de fiscalização são delegados aos policiais, que deixam de combater crimes por isto (afinal de contas, eles não querem de fato arriscar suas vidas combatendo o crime, a fiscalização é uma excelente desculpa para se esquivarem a esta responsabilidade). - **financiamento educacional**: é uma espécie de subsídio às faculdades privadas que faz com que se criem cursos e mais cursos que são cada vez menos recheados de algum conhecimento ou técnica útil e cada vez mais inúteis. - **leis de tombamento**: são um incentivo a que o dono de qualquer área ou construção "histórica" destrua todo e qualquer vestígio de história que houver nele antes que as autoridades descubram, o que poderia não acontecer se ele pudesse, por exemplo, usar, mostrar e se beneficiar da história daquele local sem correr o risco de perder, de fato, a sua propriedade. - **zoneamento urbano**: torna as cidades mais espalhadas, criando uma necessidade gigantesca de carros, ônibus e outros meios de transporte para as pessoas se locomoverem das zonas de moradia para as zonas de trabalho. - **zoneamento urbano**: faz com que as pessoas percam horas no trânsito todos os dias, o que é, além de um desperdício, um atentado contra a sua saúde, que estaria muito melhor servida numa caminhada diária entre a casa e o trabalho. - **zoneamento urbano**: torna ruas e as casas menos seguras criando zonas enormes, tanto de residências quanto de indústrias, onde não há movimento de gente alguma. - **escola obrigatória + currículo escolar nacional**: emburrece todas as crianças. - **leis contra trabalho infantil**: tira das crianças a oportunidade de aprender ofícios úteis e levar um dinheiro para ajudar a família. - **licitações**: como não existem os critérios do mercado para decidir qual é o melhor prestador de serviço, criam-se comissões de pessoas que vão decidir coisas. isto incentiva os prestadores de serviço que estão concorrendo na licitação a tentar comprar os membros dessas comissões. isto, fora a corrupção, gera problemas reais: __(i)__ a escolha dos serviços acaba sendo a pior possível, já que a empresa prestadora que vence está claramente mais dedicada a comprar comissões do que a fazer um bom trabalho (este problema afeta tantas áreas, desde a construção de estradas até a qualidade da merenda escolar, que é impossível listar aqui); __(ii)__ o processo corruptor acaba, no longo prazo, eliminando as empresas que prestavam e deixando para competir apenas as corruptas, e a qualidade tende a piorar progressivamente. - **cartéis**: o Estado em geral cria e depois fica refém de vários grupos de interesse. o caso dos taxistas contra o Uber é o que está na moda hoje (e o que mostra como os Estados se comportam da mesma forma no mundo todo). - **multas**: quando algum indivíduo ou empresa comete uma fraude financeira, ou causa algum dano material involuntário, as vítimas do caso são as pessoas que sofreram o dano ou perderam dinheiro, mas o Estado tem sempre leis que prevêem multas para os responsáveis. A justiça estatal é sempre muito rígida e rápida na aplicação dessas multas, mas relapsa e vaga no que diz respeito à indenização das vítimas. O que em geral acontece é que o Estado aplica uma enorme multa ao responsável pelo mal, retirando deste os recursos que dispunha para indenizar as vítimas, e se retira do caso, deixando estas desamparadas. - **desapropriação**: o Estado pode pegar qualquer propriedade de qualquer pessoa mediante uma indenização que é necessariamente inferior ao valor da propriedade para o seu presente dono (caso contrário ele a teria vendido voluntariamente). - **seguro-desemprego**: se há, por exemplo, um prazo mínimo de 1 ano para o sujeito ter direito a receber seguro-desemprego, isto o incentiva a planejar ficar apenas 1 ano em cada emprego (ano este que será sucedido por um período de desemprego remunerado), matando todas as possibilidades de aprendizado ou aquisição de experiência naquela empresa específica ou ascensão hierárquica. - **previdência**: a previdência social tem todos os defeitos de cálculo do mundo, e não importa muito ela ser uma forma horrível de poupar dinheiro, porque ela tem garantias bizarras de longevidade fornecidas pelo Estado, além de ser compulsória. Isso serve para criar no imaginário geral a idéia da __aposentadoria__, uma época mágica em que todos os dias serão finais de semana. A idéia da aposentadoria influencia o sujeito a não se preocupar em ter um emprego que faça sentido, mas sim em ter um trabalho qualquer, que o permita se aposentar. - **regulamentação impossível**: milhares de coisas são proibidas, há regulamentações sobre os aspectos mais mínimos de cada empreendimento ou construção ou espaço. se todas essas regulamentações fossem exigidas não haveria condições de produção e todos morreriam. portanto, elas não são exigidas. porém, o Estado, ou um agente individual imbuído do poder estatal pode, se desejar, exigi-las todas de um cidadão inimigo seu. qualquer pessoa pode viver a vida inteira sem cumprir nem 10% das regulamentações estatais, mas viverá também todo esse tempo com medo de se tornar um alvo de sua exigência, num estado de terror psicológico. - **perversão de critérios**: para muitas coisas sobre as quais a sociedade normalmente chegaria a um valor ou comportamento "razoável" espontaneamente, o Estado dita regras. estas regras muitas vezes não são obrigatórias, são mais "sugestões" ou limites, como o salário mínimo, ou as 44 horas semanais de trabalho. a sociedade, porém, passa a usar esses valores como se fossem o normal. são raras, por exemplo, as ofertas de emprego que fogem à regra das 44h semanais. - **inflação**: subir os preços é difícil e constrangedor para as empresas, pedir aumento de salário é difícil e constrangedor para o funcionário. a inflação força as pessoas a fazer isso, mas o aumento não é automático, como alguns economistas podem pensar (enquanto alguns outros ficam muito satisfeitos de que esse processo seja demorado e difícil). - **inflação**: a inflação destrói a capacidade das pessoas de julgar preços entre concorrentes usando a própria memória. - **inflação**: a inflação destrói os cálculos de lucro/prejuízo das empresas e prejudica enormemente as decisões empresariais que seriam baseadas neles. - **inflação**: a inflação redistribui a riqueza dos mais pobres e mais afastados do sistema financeiro para os mais ricos, os bancos e as megaempresas. - **inflação**: a inflação estimula o endividamento e o consumismo. - **lixo:** ao prover coleta e armazenamento de lixo "grátis para todos" o Estado incentiva a criação de lixo. se tivessem que pagar para que recolhessem o seu lixo, as pessoas (e conseqüentemente as empresas) se empenhariam mais em produzir coisas usando menos plástico, menos embalagens, menos sacolas. - **leis contra crimes financeiros:** ao criar legislação para dificultar acesso ao sistema financeiro por parte de criminosos a dificuldade e os custos para acesso a esse mesmo sistema pelas pessoas de bem cresce absurdamente, levando a um percentual enorme de gente incapaz de usá-lo, para detrimento de todos -- e no final das contas os grandes criminosos ainda conseguem burlar tudo.
-
@ 3bf0c63f:aefa459d
2024-01-14 14:52:16Drivechain
Understanding Drivechain requires a shift from the paradigm most bitcoiners are used to. It is not about "trustlessness" or "mathematical certainty", but game theory and incentives. (Well, Bitcoin in general is also that, but people prefer to ignore it and focus on some illusion of trustlessness provided by mathematics.)
Here we will describe the basic mechanism (simple) and incentives (complex) of "hashrate escrow" and how it enables a 2-way peg between the mainchain (Bitcoin) and various sidechains.
The full concept of "Drivechain" also involves blind merged mining (i.e., the sidechains mine themselves by publishing their block hashes to the mainchain without the miners having to run the sidechain software), but this is much easier to understand and can be accomplished either by the BIP-301 mechanism or by the Spacechains mechanism.
How does hashrate escrow work from the point of view of Bitcoin?
A new address type is created. Anything that goes in that is locked and can only be spent if all miners agree on the Withdrawal Transaction (
WT^
) that will spend it for 6 months. There is one of these special addresses for each sidechain.To gather miners' agreement
bitcoind
keeps track of the "score" of all transactions that could possibly spend from that address. On every block mined, for each sidechain, the miner can use a portion of their coinbase to either increase the score of oneWT^
by 1 while decreasing the score of all others by 1; or they can decrease the score of allWT^
s by 1; or they can do nothing.Once a transaction has gotten a score high enough, it is published and funds are effectively transferred from the sidechain to the withdrawing users.
If a timeout of 6 months passes and the score doesn't meet the threshold, that
WT^
is discarded.What does the above procedure mean?
It means that people can transfer coins from the mainchain to a sidechain by depositing to the special address. Then they can withdraw from the sidechain by making a special withdraw transaction in the sidechain.
The special transaction somehow freezes funds in the sidechain while a transaction that aggregates all withdrawals into a single mainchain
WT^
, which is then submitted to the mainchain miners so they can start voting on it and finally after some months it is published.Now the crucial part: the validity of the
WT^
is not verified by the Bitcoin mainchain rules, i.e., if Bob has requested a withdraw from the sidechain to his mainchain address, but someone publishes a wrongWT^
that instead takes Bob's funds and sends them to Alice's main address there is no way the mainchain will know that. What determines the "validity" of theWT^
is the miner vote score and only that. It is the job of miners to vote correctly -- and for that they may want to run the sidechain node in SPV mode so they can attest for the existence of a reference to theWT^
transaction in the sidechain blockchain (which then ensures it is ok) or do these checks by some other means.What? 6 months to get my money back?
Yes. But no, in practice anyone who wants their money back will be able to use an atomic swap, submarine swap or other similar service to transfer funds from the sidechain to the mainchain and vice-versa. The long delayed withdraw costs would be incurred by few liquidity providers that would gain some small profit from it.
Why bother with this at all?
Drivechains solve many different problems:
It enables experimentation and new use cases for Bitcoin
Issued assets, fully private transactions, stateful blockchain contracts, turing-completeness, decentralized games, some "DeFi" aspects, prediction markets, futarchy, decentralized and yet meaningful human-readable names, big blocks with a ton of normal transactions on them, a chain optimized only for Lighting-style networks to be built on top of it.
These are some ideas that may have merit to them, but were never actually tried because they couldn't be tried with real Bitcoin or inferfacing with real bitcoins. They were either relegated to the shitcoin territory or to custodial solutions like Liquid or RSK that may have failed to gain network effect because of that.
It solves conflicts and infighting
Some people want fully private transactions in a UTXO model, others want "accounts" they can tie to their name and build reputation on top; some people want simple multisig solutions, others want complex code that reads a ton of variables; some people want to put all the transactions on a global chain in batches every 10 minutes, others want off-chain instant transactions backed by funds previously locked in channels; some want to spend, others want to just hold; some want to use blockchain technology to solve all the problems in the world, others just want to solve money.
With Drivechain-based sidechains all these groups can be happy simultaneously and don't fight. Meanwhile they will all be using the same money and contributing to each other's ecosystem even unwillingly, it's also easy and free for them to change their group affiliation later, which reduces cognitive dissonance.
It solves "scaling"
Multiple chains like the ones described above would certainly do a lot to accomodate many more transactions that the current Bitcoin chain can. One could have special Lightning Network chains, but even just big block chains or big-block-mimblewimble chains or whatnot could probably do a good job. Or even something less cool like 200 independent chains just like Bitcoin is today, no extra features (and you can call it "sharding"), just that would already multiply the current total capacity by 200.
Use your imagination.
It solves the blockchain security budget issue
The calculation is simple: you imagine what security budget is reasonable for each block in a world without block subsidy and divide that for the amount of bytes you can fit in a single block: that is the price to be paid in satoshis per byte. In reasonable estimative, the price necessary for every Bitcoin transaction goes to very large amounts, such that not only any day-to-day transaction has insanely prohibitive costs, but also Lightning channel opens and closes are impracticable.
So without a solution like Drivechain you'll be left with only one alternative: pushing Bitcoin usage to trusted services like Liquid and RSK or custodial Lightning wallets. With Drivechain, though, there could be thousands of transactions happening in sidechains and being all aggregated into a sidechain block that would then pay a very large fee to be published (via blind merged mining) to the mainchain. Bitcoin security guaranteed.
It keeps Bitcoin decentralized
Once we have sidechains to accomodate the normal transactions, the mainchain functionality can be reduced to be only a "hub" for the sidechains' comings and goings, and then the maximum block size for the mainchain can be reduced to, say, 100kb, which would make running a full node very very easy.
Can miners steal?
Yes. If a group of coordinated miners are able to secure the majority of the hashpower and keep their coordination for 6 months, they can publish a
WT^
that takes the money from the sidechains and pays to themselves.Will miners steal?
No, because the incentives are such that they won't.
Although it may look at first that stealing is an obvious strategy for miners as it is free money, there are many costs involved:
- The cost of ceasing blind-merged mining returns -- as stealing will kill a sidechain, all the fees from it that miners would be expected to earn for the next years are gone;
- The cost of Bitcoin price going down: If a steal is successful that will mean Drivechains are not safe, therefore Bitcoin is less useful, and miner credibility will also be hurt, which are likely to cause the Bitcoin price to go down, which in turn may kill the miners' businesses and savings;
- The cost of coordination -- assuming miners are just normal businesses, they just want to do their work and get paid, but stealing from a Drivechain will require coordination with other miners to conduct an immoral act in a way that has many pitfalls and is likely to be broken over the months;
- The cost of miners leaving your mining pool: when we talked about "miners" above we were actually talking about mining pools operators, so they must also consider the risk of miners migrating from their mining pool to others as they begin the process of stealing;
- The cost of community goodwill -- when participating in a steal operation, a miner will suffer a ton of backlash from the community. Even if the attempt fails at the end, the fact that it was attempted will contribute to growing concerns over exaggerated miners power over the Bitcoin ecosystem, which may end up causing the community to agree on a hard-fork to change the mining algorithm in the future, or to do something to increase participation of more entities in the mining process (such as development or cheapment of new ASICs), which have a chance of decreasing the profits of current miners.
Another point to take in consideration is that one may be inclined to think a newly-created sidechain or a sidechain with relatively low usage may be more easily stolen from, since the blind merged mining returns from it (point 1 above) are going to be small -- but the fact is also that a sidechain with small usage will also have less money to be stolen from, and since the other costs besides 1 are less elastic at the end it will not be worth stealing from these too.
All of the above consideration are valid only if miners are stealing from good sidechains. If there is a sidechain that is doing things wrong, scamming people, not being used at all, or is full of bugs, for example, that will be perceived as a bad sidechain, and then miners can and will safely steal from it and kill it, which will be perceived as a good thing by everybody.
What do we do if miners steal?
Paul Sztorc has suggested in the past that a user-activated soft-fork could prevent miners from stealing, i.e., most Bitcoin users and nodes issue a rule similar to this one to invalidate the inclusion of a faulty
WT^
and thus cause any miner that includes it in a block to be relegated to their own Bitcoin fork that other nodes won't accept.This suggestion has made people think Drivechain is a sidechain solution backed by user-actived soft-forks for safety, which is very far from the truth. Drivechains must not and will not rely on this kind of soft-fork, although they are possible, as the coordination costs are too high and no one should ever expect these things to happen.
If even with all the incentives against them (see above) miners do still steal from a good sidechain that will mean the failure of the Drivechain experiment. It will very likely also mean the failure of the Bitcoin experiment too, as it will be proven that miners can coordinate to act maliciously over a prolonged period of time regardless of economic and social incentives, meaning they are probably in it just for attacking Bitcoin, backed by nation-states or something else, and therefore no Bitcoin transaction in the mainchain is to be expected to be safe ever again.
Why use this and not a full-blown trustless and open sidechain technology?
Because it is impossible.
If you ever heard someone saying "just use a sidechain", "do this in a sidechain" or anything like that, be aware that these people are either talking about "federated" sidechains (i.e., funds are kept in custody by a group of entities) or they are talking about Drivechain, or they are disillusioned and think it is possible to do sidechains in any other manner.
No, I mean a trustless 2-way peg with correctness of the withdrawals verified by the Bitcoin protocol!
That is not possible unless Bitcoin verifies all transactions that happen in all the sidechains, which would be akin to drastically increasing the blocksize and expanding the Bitcoin rules in tons of ways, i.e., a terrible idea that no one wants.
What about the Blockstream sidechains whitepaper?
Yes, that was a way to do it. The Drivechain hashrate escrow is a conceptually simpler way to achieve the same thing with improved incentives, less junk in the chain, more safety.
Isn't the hashrate escrow a very complex soft-fork?
Yes, but it is much simpler than SegWit. And, unlike SegWit, it doesn't force anything on users, i.e., it isn't a mandatory blocksize increase.
Why should we expect miners to care enough to participate in the voting mechanism?
Because it's in their own self-interest to do it, and it costs very little. Today over half of the miners mine RSK. It's not blind merged mining, it's a very convoluted process that requires them to run a RSK full node. For the Drivechain sidechains, an SPV node would be enough, or maybe just getting data from a block explorer API, so much much simpler.
What if I still don't like Drivechain even after reading this?
That is the entire point! You don't have to like it or use it as long as you're fine with other people using it. The hashrate escrow special addresses will not impact you at all, validation cost is minimal, and you get the benefit of people who want to use Drivechain migrating to their own sidechains and freeing up space for you in the mainchain. See also the point above about infighting.
See also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Bluesky is a scam
Bluesky advertises itself as an open network, they say people won't lose followers or their identity, they advertise themselves as a protocol ("atproto") and because of that they are tricking a lot of people into using them. These three claims are false.
protocolness
Bluesky is a company. "atproto" is the protocol. Supposedly they are two different things, right? Bluesky just releases software that implements the protocol, but others can also do that, it's open!
And yet, the protocol has an official webpage with a waitlist and a private beta? Why is the protocol advertised as a company product? Because it is. The "protocol" is just a description of whatever the Bluesky app and servers do, it can and does change anytime the Bluesky developers decide they want to change it, and it will keep changing for as long as Bluesky apps and servers control the biggest part of the network.
Oh, so there is the possibility of other players stepping in and then it becomes an actual interoperable open protocol? Yes, but what is the likelihood of that happening? It is very low. No serious competitor is likely to step in and build serious apps using a protocol that is directly controlled by Bluesky. All we will ever see are small "community" apps made by users and small satellite small businesses -- not unlike the people and companies that write plugins, addons and alternative clients for popular third-party centralized platforms.
And last, even if it happens that someone makes an app so good that it displaces the canonical official Bluesky app, then that company may overtake the protocol itself -- not because they're evil, but because there is no way it cannot be like this.
identity
According to their own documentation, the Bluesky people were looking for an identity system that provided global ids, key rotation and human-readable names.
They must have realized that such properties are not possible in an open and decentralized system, but instead of accepting a tradeoff they decided they wanted all their desired features and threw away the "decentralized" part, quite literally and explicitly (although they make sure to hide that piece in the middle of a bunch of code and text that very few will read).
The "DID Placeholder" method they decided to use for their global identities is nothing more than a normal old boring trusted server controlled by Bluesky that keeps track of who is who and can, at all times, decide to ban a person and deprive them from their identity (they dismissively call a "denial of service attack").
They decided to adopt this method as a placeholder until someone else doesn't invent the impossible alternative that would provide all their desired properties in a decentralized manner -- which is nothing more than a very good excuse: "yes, it's not great now, but it will improve!".
openness
Months after launching their product with an aura of decentralization and openness and getting a bunch of people inside that believed, falsely, they were joining an actually open network, Bluesky has decided to publish a part of their idea of how other people will be able to join their open network.
When I first saw their app and how they were very prominently things like follower counts, like counts and other things that are typical of centralized networks and can't be reliable or exact on truly open networks (like Nostr), I asked myself how were they going to do that once they became and open "federated" network as they were expected to be.
Turns out their decentralization plan is to just allow you, as a writer, to host your own posts on "personal data stores", but not really have any control over the distribution of the posts. All posts go through the Bluesky central server, called BGS, and they decide what to do with it. And you, as a reader, doesn't have any control of what you're reading from either, all you can do is connect to the BGS and ask for posts. If the BGS decides to ban, shadow ban, reorder, miscount, hide, deprioritize, trick or maybe even to serve ads, then you are out of luck.
Oh, but anyone can run their own BGS!, they will say. Even in their own blog post announcing the architecture they assert that "it’s a fairly resource-demanding service" and "there may be a few large full-network providers". But I fail to see why even more than one network provider will exist, if Bluesky is already doing that job, and considering the fact there are very little incentives for anyone to switch providers -- because the app does not seem to be at all made to talk to multiple providers, one would have to stop using the reliable, fast and beefy official BGS and start using some half-baked alternative and risk losing access to things.
When asked about the possibility of switching, one of Bluesky overlords said: "it would look something like this: bluesky has gone evil. there's a new alternative called freesky that people are rushing to. I'm switching to freesky".
The quote is very naïve and sounds like something that could be said about Twitter itself: "if Twitter is evil you can just run your own social network". Both are fallacies because they ignore the network-effect and the fact that people will never fully agree that something is "evil". In fact these two are the fundamental reasons why -- for social networks specifically (and not for other things like commerce) -- we need truly open protocols with no owners and no committees.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A Lightning penalty transaction
It was a cold day and I remembered that this
lightningd
node I was running on my local desktop to work on poncho actually had mainnet channels in it. Two channels, both private, bought on https://lnbig.com/ a while ago when I was trying to conduct an anonymous griefing attack on big nodes of the network just to prove it was possible (the attempts proved unsuccessful after some hours and I gave up).It is always painful to close channels because paying fees hurts me psychologically, and then it hurts even more to be left with a new small UTXO that will had to be spent to somewhere but that can barely pay for itself, but it also didn't make sense to just leave the channels there and risk forgetting them and losing them forever, so I had to do something.
One of the channels had 0 satoshis on my side, so that was easy. Mutually closed and I don't have to think anymore about it.
The other one had 10145 satoshis on my side -- out of a total of 100000 satoshis. Why can't I take my part all over over Lightning and leave the full channel UTXO to LNBIG? I wish I could do that, I don't want a small UTXO. I was not sure about it, but if the penalty reserve was 1% maybe I could take out abou 9000 satoshis and then close it with 1000 on my side? But then what would I do with this 1000 sat UTXO that would remain? Can't I donate it to miners or something?
I was in the middle of this thoughts stream when it came to me the idea of causing a penalty transaction to give those abundant 1000 sat to Mr. LNBIG as a donation for his excellent services to the network and the cause of Bitcoin, and for having supported the development of https://sbw.app/ and the hosted channels protocol.
Unfortunately
lightningd
doesn't have a commandtriggerpenaltytransaction
ortrytostealusingoldstate
, so what I did was:First I stopped
lightningd
then copied the database to elsewhere:cp ~/.lightningd/bitcoin/lightningd.sqlite3 ~/.lightning/bitcoin/lightningd.sqlite3.bak
then I restartedlightningd
and fighted against the way-too-aggressive MPP splitting algorithm thepay
command uses to pay invoices, but finally managed to pull about 9000 satoshis to my Z Bot that lives on the terrible (but still infinitely better than Twitter DMs) "webk" flavor of the Telegram web application and which is linked to my against-bitcoin-ethos-country-censoring ZEBEDEE Wallet. The operation wasn't smooth but it didn't take more than 10 invoices andpay
commands.With the money out and safe elsewhere, I stopped the node again, moved the database back with a reckless
mv ~/.lightning/bitcoin/lightningd.sqlite3.bak ~/.lightningd/bitcoin/lightningd.sqlite3
and restarted it, but to prevent mylightningd
from being super naïve and telling LNBIG that it had an old state (I don't know if this would happen) which would cause LNBIG to close the channel in a boring way, I used the--offline
flag which apparently causes the node to not do any external connections.Finally I checked my balance using
lightning-cli listfunds
and there it was, again, the 10145 satoshis I had at the start! A fantastic money creation trick, comparable to the ones central banks execute daily.I was ready to close the channel now, but the
lightning-cli close
command had an option for specifying how many seconds I would wait for a mutual close before proceeding to a unilateral close. There is noforceclose
command like Éclair hasor anything like that. I was afraid that even if I gave LNBIG one second it would try to do boring things, so I paused to consider how could I just broadcast the commitment transaction manually, looked inside the SQLite database and thechannels
table with its millions of columns with cryptic names in the unbearable.schema
output, imagined thatlightningd
maybe wouldn't know how to proceed to take the money from theto-local
output if I managed to broadcast it manually (and in the unlikely event that LNBIG wouldn't broadcast the penalty transaction), so I decided to just accept the risk and calllightning-cli close 706327x1588x0 1
But it went well. The
--offline
flag apparently really works, as it just considered LNBIG to be offline and 1 second later I got the desired result.My happiness was complete when I saw the commitment transaction with my output for 10145 satoshis published on the central database of Bitcoin, blockstream.info.
Then I went to eat something and it seems LNBIG wasn't offline or sleeping, he was certainly looking at all the logs from his 274 nodes in a big room full of monitors, very alert and eating an apple while drinking coffee, ready to take action, for when I came back, minutes later, I could see it, again on the single source of truth for the Bitcoin blockchain, the Blockstream explorer. I've refreshed the page and there it was, a small blue link right inside the little box that showed my
to-local
output, a notice saying it had been spent -- not by mylightningd
since that would have to wait 9000 blocks, but by the same transaction that spent the other output, from which I could be very sure it was it, the glorious, mighty, unforgiving penalty transaction, splitting the earth, showing itself in all its power, and taking my 10145 satoshis to their rightful owner. -
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28GraphQL vs REST
Today I saw this: https://github.com/stickfigure/blog/wiki/How-to-(and-how-not-to)-design-REST-APIs
And it reminded me why GraphQL is so much better.
It has also reminded me why HTTP is so confusing and awful as a protocol, especially as a protocol for structured data APIs, with all its status codes and headers and bodies and querystrings and content-types -- but let's not talk about that for now.
People complain about GraphQL being great for frontend developers and bad for backend developers, but I don't know who are these people that apparently love reading guides like the one above of how to properly construct ad-hoc path routers, decide how to properly build the JSON, what to include and in which circumstance, what status codes and headers to use, all without having any idea of what the frontend or the API consumer will want to do with their data.
It is a much less stressful environment that one in which we can just actually perform the task and fit the data in a preexistent schema with types and a structure that we don't have to decide again and again while anticipating with very incomplete knowledge the usage of an extraneous person -- i.e., an environment with GraphQL, or something like GraphQL.
By the way, I know there are some people that say that these HTTP JSON APIs are not the real REST, but that is irrelevant for now.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28nostr - Notes and Other Stuff Transmitted by Relays
The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.
It doesn't rely on any trusted central server, hence it is resilient; it is based on cryptographic keys and signatures, so it is tamperproof; it does not rely on P2P techniques, therefore it works.
Very short summary of how it works, if you don't plan to read anything else:
Everybody runs a client. It can be a native client, a web client, etc. To publish something, you write a post, sign it with your key and send it to multiple relays (servers hosted by someone else, or yourself). To get updates from other people, you ask multiple relays if they know anything about these other people. Anyone can run a relay. A relay is very simple and dumb. It does nothing besides accepting posts from some people and forwarding to others. Relays don't have to be trusted. Signatures are verified on the client side.
This is needed because other solutions are broken:
The problem with Twitter
- Twitter has ads;
- Twitter uses bizarre techniques to keep you addicted;
- Twitter doesn't show an actual historical feed from people you follow;
- Twitter bans people;
- Twitter shadowbans people.
- Twitter has a lot of spam.
The problem with Mastodon and similar programs
- User identities are attached to domain names controlled by third-parties;
- Server owners can ban you, just like Twitter; Server owners can also block other servers;
- Migration between servers is an afterthought and can only be accomplished if servers cooperate. It doesn't work in an adversarial environment (all followers are lost);
- There are no clear incentives to run servers, therefore they tend to be run by enthusiasts and people who want to have their name attached to a cool domain. Then, users are subject to the despotism of a single person, which is often worse than that of a big company like Twitter, and they can't migrate out;
- Since servers tend to be run amateurishly, they are often abandoned after a while — which is effectively the same as banning everybody;
- It doesn't make sense to have a ton of servers if updates from every server will have to be painfully pushed (and saved!) to a ton of other servers. This point is exacerbated by the fact that servers tend to exist in huge numbers, therefore more data has to be passed to more places more often;
- For the specific example of video sharing, ActivityPub enthusiasts realized it would be completely impossible to transmit video from server to server the way text notes are, so they decided to keep the video hosted only from the single instance where it was posted to, which is similar to the Nostr approach.
The problem with SSB (Secure Scuttlebutt)
- It doesn't have many problems. I think it's great. In fact, I was going to use it as a basis for this, but
- its protocol is too complicated because it wasn't thought about being an open protocol at all. It was just written in JavaScript in probably a quick way to solve a specific problem and grew from that, therefore it has weird and unnecessary quirks like signing a JSON string which must strictly follow the rules of ECMA-262 6th Edition;
- It insists on having a chain of updates from a single user, which feels unnecessary to me and something that adds bloat and rigidity to the thing — each server/user needs to store all the chain of posts to be sure the new one is valid. Why? (Maybe they have a good reason);
- It is not as simple as Nostr, as it was primarily made for P2P syncing, with "pubs" being an afterthought;
- Still, it may be worth considering using SSB instead of this custom protocol and just adapting it to the client-relay server model, because reusing a standard is always better than trying to get people in a new one.
The problem with other solutions that require everybody to run their own server
- They require everybody to run their own server;
- Sometimes people can still be censored in these because domain names can be censored.
How does Nostr work?
- There are two components: clients and relays. Each user runs a client. Anyone can run a relay.
- Every user is identified by a public key. Every post is signed. Every client validates these signatures.
- Clients fetch data from relays of their choice and publish data to other relays of their choice. A relay doesn't talk to another relay, only directly to users.
- For example, to "follow" someone a user just instructs their client to query the relays it knows for posts from that public key.
- On startup, a client queries data from all relays it knows for all users it follows (for example, all updates from the last day), then displays that data to the user chronologically.
- A "post" can contain any kind of structured data, but the most used ones are going to find their way into the standard so all clients and relays can handle them seamlessly.
How does it solve the problems the networks above can't?
- Users getting banned and servers being closed
- A relay can block a user from publishing anything there, but that has no effect on them as they can still publish to other relays. Since users are identified by a public key, they don't lose their identities and their follower base when they get banned.
- Instead of requiring users to manually type new relay addresses (although this should also be supported), whenever someone you're following posts a server recommendation, the client should automatically add that to the list of relays it will query.
- If someone is using a relay to publish their data but wants to migrate to another one, they can publish a server recommendation to that previous relay and go;
- If someone gets banned from many relays such that they can't get their server recommendations broadcasted, they may still let some close friends know through other means with which relay they are publishing now. Then, these close friends can publish server recommendations to that new server, and slowly, the old follower base of the banned user will begin finding their posts again from the new relay.
-
All of the above is valid too for when a relay ceases its operations.
-
Censorship-resistance
- Each user can publish their updates to any number of relays.
-
A relay can charge a fee (the negotiation of that fee is outside of the protocol for now) from users to publish there, which ensures censorship-resistance (there will always be some Russian server willing to take your money in exchange for serving your posts).
-
Spam
-
If spam is a concern for a relay, it can require payment for publication or some other form of authentication, such as an email address or phone, and associate these internally with a pubkey that then gets to publish to that relay — or other anti-spam techniques, like hashcash or captchas. If a relay is being used as a spam vector, it can easily be unlisted by clients, which can continue to fetch updates from other relays.
-
Data storage
- For the network to stay healthy, there is no need for hundreds of active relays. In fact, it can work just fine with just a handful, given the fact that new relays can be created and spread through the network easily in case the existing relays start misbehaving. Therefore, the amount of data storage required, in general, is relatively less than Mastodon or similar software.
-
Or considering a different outcome: one in which there exist hundreds of niche relays run by amateurs, each relaying updates from a small group of users. The architecture scales just as well: data is sent from users to a single server, and from that server directly to the users who will consume that. It doesn't have to be stored by anyone else. In this situation, it is not a big burden for any single server to process updates from others, and having amateur servers is not a problem.
-
Video and other heavy content
-
It's easy for a relay to reject large content, or to charge for accepting and hosting large content. When information and incentives are clear, it's easy for the market forces to solve the problem.
-
Techniques to trick the user
- Each client can decide how to best show posts to users, so there is always the option of just consuming what you want in the manner you want — from using an AI to decide the order of the updates you'll see to just reading them in chronological order.
FAQ
- This is very simple. Why hasn't anyone done it before?
I don't know, but I imagine it has to do with the fact that people making social networks are either companies wanting to make money or P2P activists who want to make a thing completely without servers. They both fail to see the specific mix of both worlds that Nostr uses.
- How do I find people to follow?
First, you must know them and get their public key somehow, either by asking or by seeing it referenced somewhere. Once you're inside a Nostr social network you'll be able to see them interacting with other people and then you can also start following and interacting with these others.
- How do I find relays? What happens if I'm not connected to the same relays someone else is?
You won't be able to communicate with that person. But there are hints on events that can be used so that your client software (or you, manually) knows how to connect to the other person's relay and interact with them. There are other ideas on how to solve this too in the future but we can't ever promise perfect reachability, no protocol can.
- Can I know how many people are following me?
No, but you can get some estimates if relays cooperate in an extra-protocol way.
- What incentive is there for people to run relays?
The question is misleading. It assumes that relays are free dumb pipes that exist such that people can move data around through them. In this case yes, the incentives would not exist. This in fact could be said of DHT nodes in all other p2p network stacks: what incentive is there for people to run DHT nodes?
- Nostr enables you to move between server relays or use multiple relays but if these relays are just on AWS or Azure what’s the difference?
There are literally thousands of VPS providers scattered all around the globe today, there is not only AWS or Azure. AWS or Azure are exactly the providers used by single centralized service providers that need a lot of scale, and even then not just these two. For smaller relay servers any VPS will do the job very well.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28 -
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28The unit test bubble
Look at the following piece of Go code:
func NewQuery(query []rune) *Query { q := &Query{ query: &[]rune{}, complete: &[]rune{}, } _ = q.Set(query) return q } func NewQueryWithString(query string) *Query { return NewQuery([]rune(query)) }
It is taken from a GitHub project with over 2000 stars.
Now take a look at these unit tests for the same package:
``` func TestNewQuery(t *testing.T) { var assert = assert.New(t)
v := []rune(".name") q := NewQuery(v) assert.Equal(*q.query, []rune(".name")) assert.Equal(*q.complete, []rune(""))
}
func TestNewQueryWithString(t *testing.T) { var assert = assert.New(t)
q := NewQueryWithString(".name") assert.Equal(*q.query, []rune(".name")) assert.Equal(*q.complete, []rune(""))
} ```
Now be honest: what are these for? Is this part of an attack to eat all GitHub storage and head them to bankruptcy?
Also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A estrutura lógica do livro didático
Todos os livros didáticos e cursos expõem seus conteúdos a partir de uma organização lógica prévia, um esquema de todo o conteúdo que julgam relevante, tudo muito organizadinho em tópicos e subtópicos segundo a ordem lógica que mais se aproxima da ordem natural das coisas. Imagine um sumário de um manual ou livro didático.
A minha experiência é a de que esse método serve muito bem para ninguém entender nada. A organização lógica perfeita de um campo de conhecimento é o resultado final de um estudo, não o seu início. As pessoas que escrevem esses manuais e dão esses cursos, mesmo quando sabem do que estão falando (um acontecimento aparentemente raro), o fazem a partir do seu próprio ponto de vista, atingido após uma vida de dedicação ao assunto (ou então copiando outros manuais e livros didáticos, o que eu chutaria que é o método mais comum).
Para o neófito, a melhor maneira de entender algo é através de imersões em micro-tópicos, sem muita noção da posição daquele tópico na hierarquia geral da ciência.
- Revista Educativa, um exemplo de como não ensinar nada às crianças.
- Zettelkasten, a ordem surgindo do caos, ao invés de temas se encaixando numa ordem preexistentes.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Hosted Channels vs Fedimint
For those who want a comparison, here is the comparison.
I'll start by listing how they are similar and then show some advantages of one versus the other and vice-versa.
Both are open protocols
- Anyone can run a hosted channel node or a hosted channel wallet and connect to any other hosted channel node or wallet.
- Anyone can run a Fedimint federation or any Fedimint wallet can connect to any Fedimint federation.
Of course one can also block others from connecting to them and vice-versa, but there is nothing in the protocols themselves that mandate anything. There is no central committee that must approve anything.
Both are protocols for IOU management (or what some like to call custodianship)
- On any hosted channel, one side of the channel (the "host") owes money to the the other (the "client"), i.e. the later must trust that the first won't exit scam.
- On any Fedimint federation the federation signers (the "guardians") owe money to the holders of notes, i.e. the later must trust that the first won't exit scam.
This is how both can provide scalability.
Both provide scalability
See point above. But in short they provide scalability by allowing people to transact without using the Bitcoin blockchain.
Both address the inherent sheer lack of privacy that normal custodians have
Normal custodial providers have a big privacy issue, which is that the users only tell their servers "I want to pay this invoice", so the server knows who they're paying, how much and so on.
- On a hosted channel, the host doesn't know where the client is sending payments to. The client does the onion routing just like a normal Lightning node so the host only sees an amount and the next hop in the route. Since the client may be paying using MPP (i.e. splitting the payment into multiple shards that go through different channels) they can't be sure that amount is the actual amount of any payment anyway.
- On Fedimint, although the Lightning gateway can see what is being paid and for how much, given the nature of Chaumian blindly-signed notes, there is no way to know which of the users is providing the money to pay that.
On normal custodian providers, when receiving, the users ask the server: "make an invoice for me with this amount and description", so the server knows how much they've received and if there is a meaningful description, also for what purpose.
- On a hosted channel, the invoice is generated by the client and the host only knows it must forward a payment it has received from elsewhere to a given hosted channel, it doesn't see the description and it cannot know if that is the last hop or if that amount is the exact amount being received (because of MPP).
- On Fedimint, the invoice is also generated on the client and the Lightning gateway only forwards the payment. Although it is sure that that payment is the final hop and the amount is complete, given the nature of Chaumian blindly-signed notes, there is no way to know which of the users is receiving that.
Hosted channels are much simpler
While a hosted channels host can be run by just attaching a simple process to a normal Lightning node, Fedimint is made to run in a federation so there is the overhead of setting up the federation environment with other people, each running their Fedimint server and establishing connections to them.
Similarly, the cryptography involved in Fedimint makes it so in practice only the reference implementation will ever be used, as a black box.
Hosted channels, on the other hand, are just some message passing through the same Noise protocol Lightning uses, with an occasional ECDSA signature, so it is much easiler to implement.
Fedimint custodianship is safer
Of course one highly-trusted individual is better than 3 or 5 scammers, but still, 3 or 5 averagely-trusted people are still better than 1 of the same kind. For that reason, the federation model provides a better way to store money than just putting it in one place.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Precautionary Principle
The precautionary principle that people, including Nassim Nicholas Taleb, love and treat as some form of wisdom, is actually just a justification for arbitrary acts.
In a given situation for which there's no sufficient knowledge, either A or B can be seen as risky or precautionary measures, there's no way to know except if you have sufficient knowledge.
Someone could reply saying, for example, that the known risk of A is tolerable to the unknown, probably magnitudes bigger, risk of B. Unless you know better or at least have a logical explanation for the risks of B (a thing "scientists" don't have because they notoriously dislike making logical claims), in which case you do know something and is not invoking the precautionary principle anymore, just relying on your logical reasoning – and that can be discussed and questioned by others, undermining your intended usage of the label "precautionary principle" as a magic cover for your actions.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Boardthreads
This was a very badly done service for turning a Trello list into a helpdesk UI.
Surprisingly, it had more paying users than Websites For Trello, which I was working on simultaneously and dedicating much more time to it.
The Neo4j database I used for this was a very poor choice, it was probably the cause of all the bugs.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Criteria for activating Drivechain on Bitcoin
Drivechain is, in essence, just a way to give Bitcoin users the option to deposit their coins in a hashrate escrow. If Bitcoin is about coin ownership, in theory there should be no objection from anyone on users having the option to do that: my keys, my coins etc. In other words: even if you think hashrate escrows are a terrible idea and miners will steal all coins from that, you shouldn't care about what other people do with their own money.
There are only two reasonable objections that could be raised by normal Bitcoin users against Drivechain:
- Drivechain adds code complexity to
bitcoind
- Drivechain perverts miner incentives of the Bitcoin chain
If these two objections can be reasonably answered there remains no reason for not activating the Drivechain soft-fork.
1
To address 1 we can just take a look at the code once it's done (which I haven't) but from my understanding the extra validation steps needed for ensuring hashrate escrows work are very minimal and self-contained, they shouldn't affect anything else and the risks of introducing some catastrophic bug are roughly zero (or the same as the risks of any of the dozens of refactors that happen every week on Bitcoin Core).
For the BMM/BIP-301 part, again the surface is very small, but we arguably do not need that at all, since anyprevout (once that is merged) enables blind merge-mining in way that is probably better than BIP-301, and that soft-fork is also very simple, plus already loved and accepted by most of the Bitcoin community, implemented and reviewed on Bitcoin Inquisition and is live on the official Bitcoin Core signet.
2
To address 2 we must only point that BMM ensures that Bitcoin miners don't have to do any extra work to earn basically all the fees that would come from the sidechain, as competition for mining sidechain blocks would bid the fee paid to Bitcoin miners up to the maximum economical amount. It is irrelevant if there is MEV on the sidechain or not, everything that reaches the Bitcoin chain does that in form of fees paid in a single high-fee transaction paid to any Bitcoin miner, regardless of them knowing about the sidechain or not. Therefore, there are no centralization pressure or pervert mining incentives that can affect Bitcoin land.
Sometimes it's argued that Drivechain may facilitate the ocurrence of a transaction paying a fee so high it would create incentives for reorging the Bitcoin chain. There is no reason to believe Drivechain would make this more likely than an actual attack than anyone can already do today or, as has happened, some rich person typing numbers wrong on his wallet. In fact, if a drivechain is consistently paying high fees on its BMM transactions that is an incentive for Bitcoin miners to keep mining those transactions one after the other and not harm the users of sidechain by reorging Bitcoin.
Moreover, there are many factors that exist today that can be seen as centralization vectors for Bitcoin mining: arguably one of them is non-blind merge mining, of which we have a (very convoluted) example on the Stacks shitcoin, and introducing the possibility of blind merge-mining on Bitcoin would basically remove any reasonable argument for having such schemes, therefore reducing the centralizing factor of them.
- Drivechain adds code complexity to
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Ryan Fugger's Ripple
Before XRP, the shitcoin, bought it, "Ripple" was used by Ryan Fugger as the name for his project to create a peer-to-peer network of trust channels for money transfer. The basic idea is that Alice trusts Bob personally, Bob trusts Carol personally and Carol trusts David personally, therefore it is possible for Alice to send a payment to David by creating debt across A--B, B--C and C--D. Later either payments in the opposite direction (not necessarily from David to Alice, as the network can have trust relationships to multiple other peers in a complex graph) would maybe clear that debt (or not), but ultimately Bob would expect Alice to pay him in kind to settle the debt, Carol would expect Bob to pay her in kind and David would expect Carol to pay him in kind.
The system above works quite well inside a centralized trusted platform like Fugger's own Ripplepay website (even when it was supposed to be just proof-of-concept, it ended up being actually used to facilitate payments across small communities), but that cannot scale as participants would all rely on it and ultimately have to blindly trust that platform.[^trust-ripplepay]
If a truly peer-to-peer system could be designed, it would have a chance of scaling across the entire society and the ability to enable truly open payments over the internet, an unreachable goal unless you use either a credit card provider, which is bureaucratic, unsafe, expensive, taxable, not private at all and cumbersome -- or Bitcoin, which is awesome and excel in all aspects except scalability for day-to-day transactions.
The protocol can take many forms, but essentially it goes like this: 1. A finds a route (A--B--C--D) between her and D somehow; 2. A "prepares" a payment to B, tells B to do the same with C and so on (to prepare means to give B a conditional IOU that will be valid as long as the full payment completes); 3. When the chain of prepared messages reaches D, D somehow "commits" the payment. 4. After the commit, A now really does owe B and so on, and D really knows it has been effectively paid by A (in the form of debt from C) so it can ship goods to A.
The step 3 is the point in which the problem of the decentralized commit arises.
Fugger and the original Ripple community failed to solve the problem of the decentralized commit, which is required for such a system to be deployed. Not to blame them, as they've recognized the problem (unlike other people that had the same idea later[^clueless-people]) and documented many sub-optimal solutions[^decentralized-commit].
No one thinks about it in these terms, but the Bitcoin Lightning Network is itself a Ripple-like system with an embedded solution to the problem of the decentralized commit.
[^trust-ripplepay]: You may ask why is it bad to trust a central point if all this is already based on trust relationships between peers. If the platform goes malicious peers can jump out and resolve things on their own! But that's not so simple, it's not obvious when the platform will be malicious or not, it's not clear what to do if the platform deletes data or change history. Ultimately it cannot scale because even if it was very trustworthy you wouldn't want the entire global economy resting upon Ryan Fugger's webserver, nor does he want that. [^clueless-people]: See, for example, LedgerLoops, Offst and Settle. [^decentralized-commit]: The old Ripple wiki lists the "registry commit method" (which requires trust in a third-party), the "bare commit method" (which is not an atomic commit) and the "blockchain commit method" (which publishes transactions to the Bitcoin blockchain and so does not scale.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Drivechain comparison with Ethereum
Ethereum and other "smart contract platforms" capable of running turing-complete code and "developer-friendly" mindset and community have been running for years and they were able to produce a very low number of potentially useful "contracts".
What are these contracts, actually? (Considering Ethereum, but others are similar:) they are sidechains that run inside the Ethereum blockchain (and thus their verification and data storage are forced upon all Ethereum nodes). Users can peg-in to a contract by depositing money on it and peg-out by making a contract operation that sends money to a normal Ethereum address.
Now be generous and imagine these platforms are able to produce 3 really cool, useful ideas (out of many thousands of attempts): Bitcoin can copy these, turn them into 3 different sidechains, each running fixed, specific, optimized code. Bitcoin users can now opt to use these platforms by transferring coins to it – all that without damaging the nodes or the consensus protocol that has been running for years, and without forcing anyone to be aware of these chains.
The process of turning a useful idea into a sidechain doesn't come spontaneously, and can't be done by a single company (like often happens in Ethereum-land), it must be acknowledge by a rough consensus in the Bitcoin community that that specific sidechain with that specific design is a desirable thing, and ultimately approved by miners, as they're the ones that are going to be in charge of that.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Token-Curated Registries
So you want to build a TCR?
TCRs (Token Curated Registries) are a construct for maintaining registries on Ethereum. Imagine you have lots of scissor brands and you want a list with only the good scissors. You want to make sure only the good scissors make into that list and not the bad scissors. For that, people will tell you, you can just create a TCR of the best scissors!
It works like this: some people have the token, let's call it Scissor Token. Some other person, let's say it's a scissor manufacturer, wants to put his scissor on the list, this guy must acquire some Scissor Tokens and "stake" it. Holders of the Scissor Tokens are allowed to vote on "yes" or "no". If "no", the manufactures loses his tokens to the holders, if "yes" then its tokens are kept in deposit, but his scissor brand gets accepted into the registry.
Such a simple process, they say, have strong incentives for being the best possible way of curating a registry of scissors: consumers have the incentive to consult the list because of its high quality; manufacturers have the incentive to buy tokens and apply to join the list because the list is so well-curated and consumers always consult it; token holders want the registry to accept good and reject bad scissors because that good decisions will make the list good for consumers and thus their tokens more valuable, bad decisions will do the contrary. It doesn't make sense, to reject everybody just to grab their tokens, because that would create an incentive against people trying to enter the list.
Amazing! How come such a simple system of voting has such enourmous features? Now we can have lists of everything so well-curated, and for that we just need Ethereum tokens!
Now let's imagine a different proposal, of my own creation: SPCR, Single-person curated registries.
Single-person Curated Registries are equal to TCR, except they don't use Ethereum tokens, it's just a list in a text file kept by a single person. People can apply to join, and they will have to give the single person some amount of money, the single person can reject or accept the proposal and so on.
Now let's look at the incentives of SPCR: people will want to consult the registry because it is so well curated; vendors will want to enter the registry because people are consulting it; the single person will want to accept the good and reject the bad applicants because these good decisions are what will make the list valuable.
Amazing! How such a single proposal has such enourmous features! SPCR are going to take over the internet!
What TCR enthusiasts get wrong?
TCR people think they can just list a set of incentives for something to work and assume that something will work. Mix that with Ethereum hype and they think theyve found something unique and revolutionary, while in fact they're just making a poor implementation of "democracy" systems that fail almost everywhere.
The life is not about listing a set of "incentives" and then considering the problems solved. Almost everybody on the Earth has the incentive for being rich: being rich has a lot of advantages over being poor, however not all people get rich! Why are the incentives failing?
Curating lists is a hard problem, it involves a lot of knowledge about the problem that just holding a token won't give you, it involves personal preferences, politics, it involves knowing where is the real limit between "good" and "bad". The Single Person list may have a good result if the single person doing the curation is knowledgeable and honest (yes, you can game the system to accept your uncle's scissors and not their competitor that is much better, for example, without losing the entire list reputation), same thing for TCRs, but it can also fail miserably, and it can appear to be good but be in fact not so good. In all cases, the list entries will reflect the preferences of people choosing and other things that aren't taken into the incentives equation of TCR enthusiasts.
We don't need lists
The most important point to be made, although unrelated to the incentive story, is that we don't need lists. Imagine you're looking for a scissor. You don't want someone to tell if scissor A or B are "good" or "bad", or if A is "better" than B. You want to know if, for your specific situation, or for a class of situations, A will serve well, and do that considering A's price and if A is being sold near you and all that.
Scissors are the worst example ever to make this point, but I hope you get it. If you don't, try imagining the same example with schools, doctors, plumbers, food, whatever.
Recommendation systems are badly needed in our world, and TCRs don't solve these at all.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Personagens de jogos e símbolos
A sensação de "ser" um personagem em um jogo ou uma brincadeira talvez seja o mais próximo que eu tenha conseguido chegar do entendimento de um símbolo religioso.
A hóstia consagrada é, segundo a religião, o corpo de Cristo, mas nossa mente moderna só consegue concebê-la como sendo uma representação do corpo de Cristo. Da mesma forma outras culturas e outras religiões têm símbolos parecidos, inclusive nos quais o próprio participante do ritual faz o papel de um deus ou de qualquer coisa parecida.
"Faz o papel" é de novo a interpretação da mente moderna. O sujeito ali é a coisa, mas ele ao mesmo tempo que é também sabe que não é, que continua sendo ele mesmo.
Nos jogos de videogame e brincadeiras infantis em que se encarna um personagem o jogador é o personagem. não se diz, entre os jogadores, que alguém está "encenando", mas que ele é e pronto. nem há outra denominação ou outro verbo. No máximo "encarnando", mas já aí já é vocabulário jornalístico feito para facilitar a compreensão de quem está de fora do jogo.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28trustedcoin
A
lightningd
plugin that replaces a bitcoind node with trusted public explorers. Great so one can run a c-lightning node on a VPS without having to bother with an expensive bitcoind.It uses multiple explorers and alternates between them, parses blocks and compares them with block hashes taken from other explorers so if someone is trying to trick you at least your node will crash instead of assuming all is fine.
It is used on @lntxbot and Etleneum.
See also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28bolt12 problems
- clients can't programatically build new offers by changing a path or query params (services like zbd.gg or lnurl-pay.me won't work)
- impossible to use in a load-balanced custodian way -- since offers would have to be pregenerated and tied to a specific lightning node.
- the existence of fiat currency fields makes it so wallets have to fetch exchange rates from somewhere on the internet (or offer a bad user experience), using HTTP which hurts user privacy.
- the vendor field is misleading, can be phished very easily, not as safe as a domain name.
- onion messages are an improvement over fake HTLC-based payments as a way of transmitting data, for sure. but we must decide if they are (i) suitable for transmitting all kinds of data over the internet, a replacement for tor; or (ii) not something that will scale well or on which we can count on for the future. if there was proper incentivization for data transmission it could end up being (i), the holy grail of p2p communication over the internet, but that is a very hard problem to solve and not guaranteed to yield the desired scalability results. since not even hints of attempting to solve that are being made, it's safer to conclude it is (ii).
bolt12 limitations
- not flexible enough. there are some interesting fields defined in the spec, but who gets to add more fields later if necessary? very unclear.
- services can't return any actionable data to the users who paid for something. it's unclear how business can be conducted without an extra communication channel.
bolt12 illusions
- recurring payments is not really solved, it is just a spec that defines intervals. the actual implementation must still be done by each wallet and service. the recurring payment cannot be enforced, the wallet must still initiate the payment. even if the wallet is evil and is willing to initiate a payment without the user knowing it still needs to have funds, channels, be online, connected etc., so it's not as if the services could rely on the payments being delivered in time.
- people seem to think it will enable pushing payments to mobile wallets, which it does not and cannot.
- there is a confusion of contexts: it looks like offers are superior to lnurl-pay, for example, because they don't require domain names. domain names, though, are common and well-established among internet services and stores, because these services have websites, so this is not really an issue. it is an issue, though, for people that want to receive payments in their homes. for these, indeed, bolt12 offers a superior solution -- but at the same time bolt12 seems to be selling itself as a tool for merchants and service providers when it includes and highlights features as recurring payments and refunds.
- the privacy gains for the receiver that are promoted as being part of bolt12 in fact come from a separate proposal, blinded paths, which should work for all normal lightning payments and indeed are a very nice solution. they are (or at least were, and should be) independent from the bolt12 proposal. a separate proposal, which can be (and already is being) used right now, also improves privacy for the receiver very much anway, it's called trampoline routing.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28WelcomeBot
The first bot ever created for Trello.
It invited to a public board automatically anyone who commented on a card he was added to.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Sol e Terra
A Terra não gira em torno do Sol. Tudo depende do ponto de referência e não existe um ponto de referência absoluto. Só é melhor dizer que a Terra gira em torno do Sol porque há outros planetas fazendo movimentos análogos e aí fica mais fácil para todo mundo entender os movimentos tomando o Sol como ponto de referência.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A list of things artificial intelligence is not doing
If AI is so good why can't it:
- write good glue code that wraps a documented HTTP API?
- make good translations using available books and respective published translations?
- extract meaningful and relevant numbers from news articles?
- write mathematical models that fit perfectly to available data better than any human?
- play videogames without cheating (i.e. simulating human vision, attention and click speed)?
- turn pure HTML pages into pretty designs by generating CSS
- predict the weather
- calculate building foundations
- determine stock values of companies from publicly available numbers
- smartly and automatically test software to uncover bugs before releases
- predict sports matches from the ball and the players' movement on the screen
- continuously improve niche/local search indexes based on user input and and reaction to results
- control traffic lights
- predict sports matches from news articles, and teams and players' history
This was posted first on Twitter.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Rede Relâmpago
Ao se referir à Lightning Network do O que é Bitcoin?, nós, brasileiros e portugueses, devemos usar o termo "Relâmpago" ou "Rede Relâmpago". "Relâmpago" é uma palavra bonita e apropriada, e fácil de pronunciar por todos os nossos compatriotas. Chega de anglicismos desnecessários.
Exemplo de uma conversa hipotética no Brasil usando esta nomenclatura:
– Posso pagar com Relâmpago? – Opa, claro! Vou gerar um boleto aqui pra você.
Repare que é bem mais natural e fácil do que a outra alternativa:
– Posso pagar com láitenim? – Leite ninho?
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28The Lightning Network solves the problem of the decentralized commit
Before reading this, see Ripple and the problem of the decentralized commit.
The Bitcoin Lightning Network can be thought as a system similar to Ripple: there are conditional IOUs (HTLCs) that are sent in "prepare"-like messages across a route, and a secret
p
that must travel from the final receiver backwards through the route until it reaches the initial sender and possession of that secret serves to prove the payment as well as to make the IOU hold true.The difference is that if one of the parties don't send the "acknowledge" in time, the other has a trusted third-party with its own clock (that is the clock that is valid for everybody involved) to complain immediately at the timeout: the Bitcoin blockchain. If C has
p
and B isn't acknowleding it, C tells the Bitcoin blockchain and it will force the transfer of the amount from B to C.Differences (or 1 upside and 3 downside)
-
The Lightning Network differs from a "pure" Ripple network in that when we send a "prepare" message on the Lightning Network, unlike on a pure Ripple network we're not just promising we will owe something -- instead we are putting the money on the table already for the other to get if we are not responsive.
-
The feature above removes the trust element from the equation. We can now have relationships with people we don't trust, as the Bitcoin blockchain will serve as an automated escrow for our conditional payments and no one will be harmed. Therefore it is much easier to build networks and route payments if you don't always require trust relationships.
-
However it introduces the cost of the capital. A ton of capital must be made available in channels and locked in HTLCs so payments can be routed. This leads to potential issues like the ones described in https://twitter.com/joostjgr/status/1308414364911841281.
-
Another issue that comes with the necessity of using the Bitcoin blockchain as an arbiter is that it may cost a lot in fees -- much more than the value of the payment that is being disputed -- to enforce it on the blockchain.[^closing-channels-for-nothing]
Solutions
Because the downsides listed above are so real and problematic -- and much more so when attacks from malicious peers are taken into account --, some have argued that the Lightning Network must rely on at least some trust between peers, which partly negate the benefit.
The introduction of purely trust-backend channels is the next step in the reasoning: if we are trusting already, why not make channels that don't touch the blockchain and don't require peers to commit large amounts of capital?
The reason is, again, the ambiguity that comes from the problem of the decentralized commit. Therefore hosted channels can be good when trust is required only from one side, like in the final hops of payments, but they cannot work in the middle of routes without eroding trust relationships between peers (however they can be useful if employed as channels between two nodes ran by the same person).
The next solution is a revamped pure Ripple network, one that solves the problem of the decentralized commit in a different way.
[^closing-channels-for-nothing]: That is even true when, for reasons of the payment being so small that it doesn't even deserve an actual HTLC that can be enforced on the chain (as per the protocol), even then the channel between the two nodes will be closed, only to make it very clear that there was a disagreement. Leaving it online would be harmful as one of the peers could repeat the attack again and again. This is a proof that ambiguity, in case of the pure Ripple network, is a very important issue.
-
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Trelew
A CLI tool for navigating Trello boards. It used vorpal for an "immersive" experience and was pretty good.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28localchat
A server that creates instant chat rooms with Server-Sent Events and normal HTTP
POST
requests (instead of WebSockets which are an overkill most of the times).It defaults to a room named as your public IP, so if two machines in the same LAN connect they'll be in the same chat automatically -- but then you can also join someone else's LAN if you need.
This is supposed to be useful.
See also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Reasons for miners to not steal
See Drivechain for an introduction. Here we'll just have a list of reasons why miners would not steal:
- they will lose future fees from that specific drivechain: you can discount all future fees and condense them into a single present number in order to do some mathematical calculation.
- they may lose future fees from all other Drivechains, if the users assume they will steal from those too.
- Bitcoin will be devalued if they steal, because:
- Bitcoin is worth more if it has Drivechains working, because it is more useful, has more use-cases, more users. Without Drivechains it necessarily has to be worth less.
- Bitcoin has more fee revenue if has Drivechains working, which means it has a bigger chance of surviving going forward and being more censorship-resistant and resistant to State attacks, therefore it has to worth more if Drivechains work and less if they don't.
- Bitcoin is worth more if the public perception is that Bitcoin miners are friendly and doing their work peacefully instead of being a band of revolted peons that are constantly threating to use their 75% hashrate to do evil things such as:
- double-spending attacks;
- censoring of transactions for a certain group of people;
- selfish mining.
- if Bitcoin is devalued its price is bound to fall, meaning that miners will lose on
- their future mining rewards;
- their ASIC investiment;
- the same coins they are trying to steal from the drivechain.
- if a mining pool tries to steal, they will risk losing their individual miners to other pools that don't.
- whenever a steal attempt begins, the coins in the drivechain will lose value (if the steal attempt is credible their price will drop quite substantially), which means that if a coalition of miners really try to steal, there is an incentive for another coalition of miners to buy some devalued coins and then stop the steal.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Conjecture and criticism
I heard about this epistemological method conjecture and criticism in this video. Oddly, it was portrayed as something that goes against the Austrian method by Paul Sztorc, while the other guy, JW Weatherman, was championing the "praxeological" method of pure logical deduction from first principles as the basis of all economic knowledge.
It has always seemed to me that this pure logical reasoning was somewhat weird, specially in light of Carl Menger's empiricism (which is not the same empiricism from modern sciences).
Conjecture and criticism seems to fit better with Menger's method and whatever Austrians actually do. No one really reasons with pure logical deduction. What people do is spot something in the real world and try to come up with a reasonable explanation that is logically consistent. The entire logical impenetrability of every Austrian theory comes after the theory is conceived (conjected?) by a human mind, not -- like some praxeological claims would imply -- deducted as if by a computer.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28idea: a website for feedback exchange
I thought a community of people sharing feedback on mutual interests would be a good thing, so as always I broadened and generalized the idea and mixed with my old criticue-inspired idea-feedback project and turned it into a "token". You give feedback on other people's things, they give you a "point". You can then use that point to request feedback from others.
This could be made as an Etleneum contract so these points were exchanged for satoshis using the shitswap contract (yet to be written).
In this case all the Bitcoin/Lightning side of the website must be hidden until the user has properly gone through the usage flow and earned points.
If it was to be built on Etleneum then it needs to emphasize the login/password login method instead of the lnurl-auth method. And then maybe it could be used to push lnurl-auth to normal people, but with a different name.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Liquidificador
A fragilidade da comunicação humana fica clara quando alguém liga o liquidificador.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Sócrates homofóbico
Trechos de episódios da Memorabilia, ou os Ditos e Feitos Memoráveis de Sócrates, contados por Xenofonte (na edição que tem um prefácio do glorioso Pessanha) que mostram Sócrates sempre aconselhando os jovens a não praticar o homossexualismo -- nem mesmo quando encontrassem alguém que fosse belo:
— Dize-me, Xenofonte, não tinhas Critobulo na conta de jovem sábio antes que de amoroso indiscreto, homem prudente antes que insensato e temerário?
— Certamente — conveio Xenofonte.
— Pois bem, considera-o, doravante como o mais impulsivo e arrojado dos homens, capaz de desafiar o ferro e afrontar o fogo.
— Que o viste fazer — indagou Xenofonte — para acusá-lo dessa maneira?
— Pois não teve a temeridade de furtar um beijo ao filho de Alcibíades, jovem de tamanha beleza e frescor?
— Ora, isso é ato de temerário! — retrucou Xenofonte. — Estou que eu próprio bem poderia cometer semelhante temeridade.
— Desgraçado! — exclamou Sócrates. — Imaginas o que te sucederia se beijasses uma pessoa jovem e bela? Ignoras que de livre, num momento te tomarias escravo? Que pagarias caro prazeres perigosos? Que já não terias animo de perquirir o que é o belo e o bem? Que haverias de dar cabeçadas como um louco?
— Por Hércules! — retrucou Xenofonte — que terrível poder emprestas a um beijo!
— Admira-te? — perguntou Sócrates. — Não sabes que as tarântulas, que não são maiores que a moeda de meio óbolo, com o só tocar os lábios causam ao homem dores tremendas e privam-no da razão?
— Pois bem! — disse Critobulo — não usarei de coação com ninguém; se, pois, tens algo a dizer-me sobre como conquistar amigos, fala.
— Jamais — disse Sócrates — porás boca contra boca.
— Tranqüiliza-te. Não mais comprimirei os lábios a os lábios de ninguém, a menos que seja belo.
— Eis-te logo de saída, Critobulo, fazendo o contrário do que se deve. Os que são belos não suportam de bom grado essas liberdades, conquanto os tolerem os feios, convencidos de que os acham belos de alma.
Eis como se devia julgar Sócrates. Cometeu ele próprio algum mal? Merece ser tratado como perverso. Porém, se jamais deixou de ser homem de bem, será justo acusá-lo de uma depravação que não lhe cabe? Se, embora abstêmio do mal, houvesse assistido sem desaprová-los aos atos vergonhosos dos outros, estaria no direito de censurá-lo. Mas, tendo percebido que Crítias, enamorado de Eutidemo, queria gozá-lo à maneira dos que abusam do próprio corpo para satisfazer seus desejos amorosos, forcejou por demovê-lo de semelhante intento, dizendo-lhe indigno de homem livre e indecente a amigo da virtude ir como mendicante solicitar algo do objeto amado, junto ao qual cumpre sobretudo fazer-se valer, e ainda mais solicitar coisa oprobriosa. Crítias fazia ouvidos de mercador e não dava de si. Então se pretende haver Sócrates dito ante numerosa assistência e em presença de Eutidemo que Crítias lhe parecia ter tai ou qual semelhança com um porco, pois queria esfregar-se em Eutidemo como se esfregam os porcos nas pedras. Desde então Crítias se tornou inimigo jurado de Sócrates. Nomeado um dos Trinta e monoteta com Cáricles, guardou-lhe rancor e proibiu por lei o ensino da oratória. Assim atacava Sócrates. Não tendo de que acusá-lo, carregava-o com a censura que de comum se ínsimula aos filósofos e caluniava-o junto à opinião pública.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Músicas novas e conhecidas
Quando for ouvir música de fundo, escolha músicas bem conhecidas. Para ouvir músicas novas, reserve um tempo e ouça-as com total atenção.
Uma coisa similar é dirigir por caminhos conhecidos versus dirigir em lugares novos. a primeira opção te permite fazer coisas enquanto dirige "de fundo", a segunda requer atenção total.
Com músicas, tenho errado constantemente em achar que posso conhecer músicas novas ao mesmo tempo em que me dedico a outras tarefas.
See also:
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Buying versus donating
Currently (and probably it has always been the case) in the Bitcoin community there is some push towards donations as some sort of business model, or in general just a general love for the idea of donations, and I think that is very misguided.
Two examples of the push for the primacy of donations
For example, there is a general wantness of people to have some sort of "static QR code" or "static Lightning invoice" that people can put on their Twitter profiles to receive donations (sometimes they say "payments" instead of "donations" but to me there is no such a thing as a payment without a good or service being given in exchange, so I'm saying "donations") and that is a hard problem to solve considering the fact that most Lightning wallets are running on phones.
Another example is the "Podcasting 2.0" initiative that tries to integrate podcast players with Lightning wallets so they can send donations to podcast hosts that are running Lightning nodes. Their proponents call it "value for value" (or "value4value", "v4v") and if you ask they will say value4value is a "model" in which the listener gives out in satoshis to the podcast host the same amount of "value" he is getting from listening to that content.
The value4value concept makes it almost explicit the problems I see with this big emphasis on donations the Bitcoin community is making in general. In essence, the idea that the listener is capable of measuring the value it gets from the podcast then converting it into a monetary amount and then donating that is completely wrong and even nonsensical.
Why value4value is not sound
Basic (Austrian) economics teaches us that all value is ordinal, not cardinal -- i.e., it can't be measured or assigned a number to. One can only know that at some instant they prefer x over y, they cannot say x has a value of 10 and y has a value of 9. Because of that, it's a nonsense quest to try determine how much value one is getting from a podcast.
Basic (Austrian) economics also teaches us that exchanges happen when there are differences in the subjective valuations of goods, i.e., Alice can give x to Bob in exchange for y if Alice prefers y over x and Bob prefers x over y at that point. Because of that (and disregarding the previous paragraph), it's futile to expect that the podcast listener will donate exactly the amount he is getting from the podcast in "value".
Because of the two points above, it should also be clear that it is impossible to convert "value" in podcast content form into "value" in satoshis form, but I won't try to explain why that is because this is not an economics textbook.
What actually happens is that whether it's in the value4value context or not, donations are always a somewhat random and subjective amount, if they happen. If I like some content that someone is publishing for free, my decision on if and how much I will donate is never dictated by some nonsense calculation, but by calculation that is governed almost entirely by feeling and animal spirits (but one that also considers how much money I can spare, how much I like that person and how much I perceive they need).
When I go to a normal shop to buy a bottle of milk I look at the bottle of milk and I read its price, and there is one simple decision I have to make: is this bottle of milk worth more than the amount of money that's specified in the price tag? It's a single decision with only two answers: yes or no.
While when I see a free form on some free "creator" page asking me to type how much I will donate I have to decide if I will donate, when I will donate, how much I will donate, if I want this donation to be done every month or how will that work going forward? Will I keep consuming the content produced by this person? Will they keep producing? Maybe I'll just listen for free now and do this later as I'm busy, but then will I forget? Maybe I have just donated a lot to someone else and do not have much more money to spare, but now I feel guilty that the other person got all my donation money and this one didn't get anything but I can't go back and ask the other to return the money I just donated -- and so on and so forth.
Conclusions
Although the paragraphs above are confusing and do not follow a very logical presentation pattern, I hope you got from them why I think donations are much more complicated than purchases, and that repeating the "value for value" mantra doesn't help at all.
Considering that, what I wanted to say is that bitcoiners should give more attention to the other model, in which people produce goods and services and sell them. And that model can be applied successfully to "content creators", podcasters etc in many ways that are probably (I don't have any data backing my claims) better than the donation model.
Other possible monetization possibilities
For example, I've noticed that many blogs and podcasts with interesting content start to release exclusive episodes as they get big enough. These exclusive episodes are available only for "supporters". This is effectively selling access to the episodes. There is also the "crowdwall" model in which multiple people pay so that some content gets released for free.
We can count even the model in which a donation is not just a blank donation, but gives the donor the right to write something on the screen or something like that -- these are actually not just donations, but purchases of these rights.
Professional videogame streamers have come up with some other interesting ideas. For example, they crowdfund the creation of special content ("if enough people pay I will dress like a rabbit") or they sell the right to participate in the stream somehow (for example, by playing a game with the streamer in some special day).
In these models, the static QR code with which so many people dream doesn't make much sense (if you're selling a specific episode or if a payment is specific to one identifiable person, you need different QR codes or more metadata to be attached to each payment by the payer).
Addendum
I think people like the donation model very much because they only see the big and super famous people that receive donations. A very small set of people have so many followers that they can live with just donations, even though donations are very inefficient and they could earn more and even deliver better content if they were using some other model.
I imagine that a creator with a high number of followers will get a lot of people that do not donate anything, a lot that will donate a little -- probably less than they would if they were paying -- and eventually a little number of people that will donate way more than they would if they were buying. This last group is probably what makes it worthwhile to work on this donations model for these creators.
The takeaway is that the donations model is not a panacea and is not very good either.
Related:
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A Causa
o Princípios de Economia Política de Menger é o único livro que enfatiza a CAUSA o tempo todo. os cientistas todos parecem não saber, ou se esquecer sempre, que as coisas têm causa, e que o conhecimento verdadeiro é o conhecimento da causa das coisas.
a causa é uma categoria metafísica muito superior a qualquer correlação ou resultado de teste de hipótese, ela não pode ser descoberta por nenhum artifício econométrico ou reduzida à simples antecedência temporal estatística. a causa dos fenômenos não pode ser provada cientificamente, mas pode ser conhecida.
o livro de Menger conta para o leitor as causas de vários fenômenos econômicos e as interliga de forma que o mundo caótico da economia parece adquirir uma ordem no momento em que você lê. é uma sensação mágica e indescritível.
quando eu te o recomendei, queria é te imbuir com o espírito da busca pela causa das coisas. depois de ler aquilo, você está apto a perceber continuidade causal nos fenômenos mais complexos da economia atual, enxergar as causas entre toda a ação governamental e as suas várias consequências na vida humana. eu faço isso todos os dias e é a melhor sensação do mundo quando o caos das notícias do caderno de Economia do jornal -- que para o próprio jornalista que as escreveu não têm nenhum sentido (tanto é que ele escreve tudo errado) -- se incluem num sistema ordenado de causas e consequências.
provavelmente eu sempre erro em alguns ou vários pontos, mas ainda assim é maravilhoso. ou então é mais maravilhoso ainda quando eu descubro o erro e reinsiro o acerto naquela racionalização bela da ordem do mundo econômico que é a ordem de Deus.
em scrap para T.P.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28ijq
An interactive REPL for
jq
with smart helpers (for example, it automatically assigns each line of input to a variable so you can reference it later, it also always referenced the previous line automatically).See also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Método científico
o método científico não pode ser aplicado senão numa meia dúzia de casos, e no entanto ei-nos aqui, pensando nele para tudo.
"formule hipóteses e teste-as independentemente", "obtenha uma quantidade de dados estatisticamente significante", teste, colete dados, mensure.
não é que de repente todo mundo resolveu calcular desvios-padrão, mas sim que é comum, para as pessoas mais cultas, nível Freakonomics, acharem que têm que testar e coletar dados, e nunca jamais confiar na sua "intuição" ou, pior, num raciocínio que pode parecer certo, mas na verdade é enormemente enganador.
sim, é verdade que raciocínios com explicações aparentemente sensatas nos são apresentados todos os dias -- para um exemplo fácil é só imaginar um comentarista de jornal, ou até uma matéria inocente de jornal, aliás, melhor pensar num comentarista da GloboNews --, e sim, é verdade que a maioria dessas explicações é falsa.
o que está errado é achar que só o que vale é testar hipóteses. você não pode testar a explicação aparentemente sensata que o taxista te fornece sobre a crise brasileira, deve então anotá-la para testar depois? mantê-la para sempre no cabedal das teorias ainda por testar?
e a explicação das redinhas que economizam água quando instaladas na torneira? essa dá pra testar, então você vai comprar um relógio de água e deixar a torneira ligada lá 5 horas com a redinha, depois 5 horas sem a redinha? obviamente não vai funcionar se você abrir o mesmo tanto, você vai precisar de um critério melhor: a satisfação da pessoa que está lavando as mãos com o resultado final versus a quantidade de água gasta. daí você precisaria de muitas pessoas, mas satisfação é uma coisa imensurável, nem adianta tentar fazer entrevistas antes e depois com as pessoas. o certo então, é o quê? procurar um estudo científico publicado numa revista de qualidade (porque tem aquelas revistas que aceitam estudos gerados por computador, então é melhor tomar cuidado) que fala sobre redinhas? como saber se a redinha é a mesma que você comprou? e agora que você já comprou, o resultado do experimento importa? (claro: pode ser que a redinha faça gastar mais água, você nunca saberá até que faça o experimento).
por que não, ao invés de condenar todos os raciocínios como enganadores e mandar que as pessoas façam experimentos científicos, ensinar a fazer raciocínios certos?
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Lightning and its fake HTLCs
Lightning is terrible but can be very good with two tweaks.
How Lightning would work without HTLCs
In a world in which HTLCs didn't exist, Lightning channels would consist only of balances. Each commitment transaction would have two outputs: one for peer
A
, the other for peerB
, according to the current state of the channel.When a payment was being attempted to go through the channel, peers would just trust each other to update the state when necessary. For example:
- Channel
AB
's balances areA[10:10]B
(in sats); A
sends a 3sat payment throughB
toC
;A
asksB
to route the payment. ChannelAB
doesn't change at all;B
sends the payment toC
,C
accepts it;- Channel
BC
changes fromB[20:5]C
toB[17:8]C
; B
notifiesA
the payment was successful,A
acknowledges that;- Channel
AB
changes fromA[10:10]B
toA[7:13]B
.
This in the case of a success, everything is fine, no glitches, no dishonesty.
But notice that
A
could have refused to acknowledge that the payment went through, either because of a bug, or because it went offline forever, or because it is malicious. Then the channelAB
would stay asA[10:10]B
andB
would have lost 3 satoshis.How Lightning would work with HTLCs
HTLCs are introduced to remedy that situation. Now instead of commitment transactions having always only two outputs, one to each peer, now they can have HTLC outputs too. These HTLC outputs could go to either side dependending on the circumstance.
Specifically, the peer that is sending the payment can redeem the HTLC after a number of blocks have passed. The peer that is receiving the payment can redeem the HTLC if they are able to provide the preimage to the hash specified in the HTLC.
Now the flow is something like this:
- Channel
AB
's balances areA[10:10]B
; A
sends a 3sat payment throughB
toC
:A
asksB
to route the payment. Their channel changes toA[7:3:10]B
(the middle number is the HTLC).B
offers a payment toC
. Their channel changes fromB[20:5]C
toB[17:3:5]C
.C
tellsB
the preimage for that HTLC. Their channel changes fromB[17:3:5]C
toB[17:8]C
.B
tellsA
the preimage for that HTLC. Their channel changes fromA[7:3:10]B
toA[7:13]B
.
Now if
A
wants to trickB
and stop respondingB
doesn't lose money, becauseB
knows the preimage,B
just needs to publish the commitment transactionA[7:3:10]B
, which gives him 10sat and then redeem the HTLC using the preimage he got fromC
, which gives him 3 sats more.B
is fine now.In the same way, if
B
stops responding for any reason,A
won't lose the money it put in that HTLC, it can publish the commitment transaction, get 7 back, then redeem the HTLC after the certain number of blocks have passed and get the other 3 sats back.How Lightning doesn't really work
The example above about how the HTLCs work is very elegant but has a fatal flaw on it: transaction fees. Each new HTLC added increases the size of the commitment transaction and it requires yet another transaction to be redeemed. If we consider fees of 10000 satoshis that means any HTLC below that is as if it didn't existed because we can't ever redeem it anyway. In fact the Lightning protocol explicitly dictates that if HTLC output amounts are below the fee necessary to redeem them they shouldn't be created.
What happens in these cases then? Nothing, the amounts that should be in HTLCs are moved to the commitment transaction miner fee instead.
So considering a transaction fee of 10000sat for these HTLCs if one is sending Lightning payments below 10000sat that means they operate according to the unsafe protocol described in the first section above.
It is actually worse, because consider what happens in the case a channel in the middle of a route has a glitch or one of the peers is unresponsive. The other node, thinking they are operating in the trustless protocol, will proceed to publish the commitment transaction, i.e. close the channel, so they can redeem the HTLC -- only then they find out they are actually in the unsafe protocol realm and there is no HTLC to be redeemed at all and they lose not only the money, but also the channel (which costed a lot of money to open and close, in overall transaction fees).
One of the biggest features of the trustless protocol are the payment proofs. Every payment is identified by a hash and whenever the payee releases the preimage relative to that hash that means the payment was complete. The incentives are in place so all nodes in the path pass the preimage back until it reaches the payer, which can then use it as the proof he has sent the payment and the payee has received it. This feature is also lost in the unsafe protocol: if a glitch happens or someone goes offline on the preimage's way back then there is no way the preimage will reach the payer because no HTLCs are published and redeemed on the chain. The payee may have received the money but the payer will not know -- but the payee will lose the money sent anyway.
The end of HTLCs
So considering the points above you may be sad because in some cases Lightning doesn't use these magic HTLCs that give meaning to it all. But the fact is that no matter what anyone thinks, HTLCs are destined to be used less and less as time passes.
The fact that over time Bitcoin transaction fees tend to rise, and also the fact that multipart payment (MPP) are increasedly being used on Lightning for good, we can expect that soon no HTLC will ever be big enough to be actually worth redeeming and we will be at a point in which not a single HTLC is real and they're all fake.
Another thing to note is that the current unsafe protocol kicks out whenever the HTLC amount is below the Bitcoin transaction fee would be to redeem it, but this is not a reasonable algorithm. It is not reasonable to lose a channel and then pay 10000sat in fees to redeem a 10001sat HTLC. At which point does it become reasonable to do it? Probably in an amount many times above that, so it would be reasonable to even increase the threshold above which real HTLCs are made -- thus making their existence more and more rare.
These are good things, because we don't actually need HTLCs to make a functional Lightning Network.
We must embrace the unsafe protocol and make it better
So the unsafe protocol is not necessarily very bad, but the way it is being done now is, because it suffers from two big problems:
- Channels are lost all the time for no reason;
- No guarantees of the proof-of-payment ever reaching the payer exist.
The first problem we fix by just stopping the current practice of closing channels when there are no real HTLCs in them.
That, however, creates a new problem -- or actually it exarcebates the second: now that we're not closing channels, what do we do with the expired payments in them? These payments should have either been canceled or fulfilled before some block x, now we're in block x+1, our peer has returned from its offline period and one of us will have to lose the money from that payment.
That's fine because it's only 3sat and it's better to just lose 3sat than to lose both the 3sat and the channel anyway, so either one would be happy to eat the loss. Maybe we'll even split it 50/50! No, that doesn't work, because it creates an attack vector with peers becoming unresponsive on purpose on one side of the route and actually failing/fulfilling the payment on the other side and making a profit with that.
So we actually need to know who is to blame on these payments, even if we are not going to act on that imediatelly: we need some kind of arbiter that both peers can trust, such that if one peer is trying to send the preimage or the cancellation to the other and the other is unresponsive, when the unresponsive peer comes back, the arbiter can tell them they are to blame, so they can willfully eat the loss and the channel can continue. Both peers are happy this way.
If the unresponsive peer doesn't accept what the arbiter says then the peer that was operating correctly can assume the unresponsive peer is malicious and close the channel, and then blacklist it and never again open a channel with a peer they know is malicious.
Again, the differences between this scheme and the current Lightning Network are that:
a. In the current Lightning we always close channels, in this scheme we only close channels in case someone is malicious or in other worst case scenarios (the arbiter is unresponsive, for example). b. In the current Lightning we close the channels without having any clue on who is to blame for that, then we just proceed to reopen a channel with that same peer even in the case they were actively trying to harm us before.
What is missing? An arbiter.
The Bitcoin blockchain is the ideal arbiter, it works in the best possible way if we follow the trustless protocol, but as we've seen we can't use the Bitcoin blockchain because it is expensive.
Therefore we need a new arbiter. That is the hard part, but not unsolvable. Notice that we don't need an absolutely perfect arbiter, anything is better than nothing, really, even an unreliable arbiter that is offline half of the day is better than what we have today, or an arbiter that lies, an arbiter that charges some satoshis for each resolution, anything.
Here are some suggestions:
- random nodes from the network selected by an algorithm that both peers agree to, so they can't cheat by selecting themselves. The only thing these nodes have to do is to store data from one peer, try to retransmit it to the other peer and record the results for some time.
- a set of nodes preselected by the two peers when the channel is being opened -- same as above, but with more handpicked-trust involved.
- some third-party cloud storage or notification provider with guarantees of having open data in it and some public log-keeping, like Twitter, GitHub or a Nostr relay;
- peers that get paid to do the job, selected by the fact that they own some token (I know this is stepping too close to the shitcoin territory, but could be an idea) issued in a Spacechain;
- a Spacechain itself, serving only as the storage for a bunch of
OP_RETURN
s that are published and tracked by these Lightning peers whenever there is an issue (this looks wrong, but could work).
Key points
- Lightning with HTLC-based routing was a cool idea, but it wasn't ever really feasible.
- HTLCs are going to be abandoned and that's the natural course of things.
- It is actually good that HTLCs are being abandoned, but
- We must change the protocol to account for the existence of fake HTLCs and thus make the bulk of the Lightning Network usage viable again.
See also
- Channel
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Processos Antifrágeis
Há esse conceito, criado pelo genial Nassim Nicholas Taleb, que diz respeito a processos nos quais a curva de retorno em relação a uma variável aleatória é convexa, ou seja, o retorno tende a ser maior quanto mais aleatoriedade for adicionada ao processo.
Disso aí, o próprio Taleb tira uma conclusão que resolve a questão da pesquisa científica propositada contra a sorte, sobre quais levam a melhores resultados práticos e invenções. Escreve ele:
A história da sorte versus conhecimento é a seguinte: Ironicamente, temos imensamente mais evidência de resultados (descobertas úteis) ligados à sorte do que de resultados vindos da prática teleológica (de telos, “objetivo”), exceto na física — mesmo depois de descontarmos o sensacionalismo. Em alguns campos opacos e não-lineares, como a medicina ou a engenharia, as exceções teleológicas são a minoria, assim como são um pequeno número de remédios projetados. Isto nos deixa numa contradição de que chegamos até aqui graças ao puro acaso não-direcionado, mas ao mesmo tempo criamos programas de pesquisa que miram num progresso com direção definida, baseado em narrativas sobre o passado. E, o que é pior, estamos totalmente conscientes desta inconsistência.
Por outro lado, pura sorte não poderia produzir melhorias sempre. Processos de tentativa e erro (que são os que produzem as descobertas “por sorte”) têm um elemento erro, e erros, diz Taleb, causam explosões de avião, quedas de edifícios e perda de conhecimento.
A resposta, portanto, está na antifragilidade: as áreas onde a sorte vence a teleologia são as áreas onde estão em jogo sistemas complexos, onde os nexos causais são desconhecidos ou obscuros — e são as áreas onde a curva de retornos é convexa.
Vejamos a mais sombria de todas, a culinária, que depende inteiramente da heurística da tentativa e erro, já que ainda não nos foi possível projetar um prato direto de equações químicas ou descobrir, por engenharia reversa, gostos a partir de tabelas nutricionais. Pega-se o hummus, adiciona-se um ingrediente, digamos, uma pimenta, prova-se para ver se há uma melhora no gosto e guarda-se a receita, se o gosto for bom, ou descarta-se-á. Imprescindivelmente temos a opção, e não a obrigação, de guardar o resultado, o que nos deixa reter a parte superior da curva e nos impede de sermos lesados pelos retornos adversos.
A conclusão geral é que, para obter os melhores resultados na invenção de tecnologias, deve-se usar a experimentação sem exageros e cálculos quando se identificar uma área antifrágil, e usar a pesquisa rígida e cheia de provas matemáticas (ou o equivalente) quando a área for frágil.
A inovação capitalista
Um processo antifrágil importantíssimo deste mundo é a inovação capitalista (dói-me usar este termo já tão mal-gasto e mal-definido por aí). Não falo, como alguns, da invenção de novas tecnologias, mas, como outros, da invenção de novas formas de usar as coisas (qualquer coisa) para melhorar a vida de alguém, de alguma forma — e aqui incluem-se pequenas adaptações de tecnologias antigas que dão origem a novas tecnologias não muito diferentes das antigas, e incluem-se também o oferecimento de algum serviço, trabalho ou produto já existente, mas de uma nova forma, possivelmente melhor para seu provável consumidor. Este tipo de inovação é, segundo me parece, o poder mais subestimado dos mercados livres, é irreplicável em laboratórios de pesquisa tecnológica (só pode surgir mesmo na vida real, da cabeça de quem está envolvido com o problema real que a inovação soluciona), e é o que gerou idéias como o restaurante self-service, a terceirização dos serviços de construção civil ou o Google.
Esse tipo de inovação (ao contrário do sentido de inovação ligado a pesquisas caríssimas em universidades ou megaempresas, identificada pela famigerada sigla P&D) é antifrágil porque não custa muito ao indivíduo, não requer investimentos gigantescos ou qualquer coisa assim, porque é normalmente apenas uma adaptação do que ele próprio já faz.
Para a sociedade, não representa custo algum: o serviço novo é oferecido paralelamente ao serviço antigo, seus consumidores potenciais podem escolher o que mais lhes agrada, e rejeitar o outro. Se a nova solução não for satisfatória os mecanismos automáticos do mercado (o prejuízo simples) encarregam-se automaticamente de remover aquela novidade — e, automaticamente, o indivíduo que a criou pode se voltar ao seu processo antigo, ou a uma nova invenção.
Ao mesmo tempo em que cometer um erro numa tentativa de inovação é barato e não atrapalha ninguém, um acerto pode ter conseqüências que melhoram enormemente a vida de muita gente. O restaurante self-service, por exemplo, provavelmente teve sua implementação tentada por restaurantes de serviço à la carte várias vezes, em vários formatos diferentes, sem muito prejuízo para o restaurante, que podia continuar com seu serviço à la carte (no Brasil, senão o inventor dessa modalidade de restaurante ao menos um dos seus grandes expoentes, estas tentativas ocorreram durante a década de 80). Mas, quando enfim deu certo, promoveu melhoras enormes na qualidade de vida de milhares de pessoas — que podem pagar mais barato e comer apenas o que querem e quanto querem, dentro de uma gama maior de opções, o que permite que trabalhadores de todos os tipos comam melhor todos os dias, fiquem mais felizes e gastem menos.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Revista Educativa
Uma revista que traz resumos de grandes descobertas ciêntíficas e explica sua utilidade e relevância, explica os problemas e os "desafios" da sociedade moderna, faz propaganda de reciclagem e outras coisas supostamente boas ao meio-ambiente, e uma seção: "Quero ser cientista para... ajudar o mundo? Descobrir uma coisa muito boa? Escrever uma revista como esta?".
Que grande bobagem.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Veterano não é dono de bixete
"VETERANO NÃO É DONO DE BIXETE". A frase em letras garrafais chama a atenção dos transeuntes neófitos. Paira sobre um cartaz amarelo que lista várias reclamações contra os "trotes machistas", que, na opinião do responsável pelo cartaz, "não é brincadeira, é opressão".
Eis aí um bizarro exemplo de como são as coisas: primeiro todos os universitários aprovam a idéia do trote, apoiam sua realização e até mesmo desejam sofrer o trote -- com a condição de o poderem aplicar eles mesmos depois --, louvam as maravilhas do mundo universitário, onde a suprema sabedoria se esconde atrás de rituais iniciáticos fora do alcance da imaginação do homem comum e rude, do pobre e do filhinho-de-papai das faculdades privadas; em suma: fomentam os mais baixos, os mais animalescos instintos, a crueldade primordial, destroem em si mesmos e nos colegas quaisquer valores civilizatórios que tivessem sobrado ali, ficando todos indistingüíveis de macacos agressivos e tarados.
Depois vêm aí com um cartaz protestar contra os assédios -- que sem dúvida acontecem em larguíssima escala -- sofridos pelas calouras de 17 anos e que, sendo também novatas no mundo universitário, ainda conservam um pouco de discernimento e pudor.
A incompreensão do fenômeno, porém, é tão grande, que os trotes não são identificados como um problema mental, uma doença que deve ser tratada e eliminada, mas como um sintoma da opressão machista dos homens às mulheres, um produto desta civilização paternalista que, desde que Deus é chamado "o Pai" e não "a Mãe", corrompe a benéfica, pura e angélica natureza do homem primitivo e o torna esta tão torpe criatura.
Na opinião dos autores desse cartaz é preciso, pois, continuar a destruir o que resta da cultura ocidental, e então esperar que haja trotes menos opressores.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Who will build the roads?
Who will build the roads? Em Lagoa Santa, as mais novas e melhores ruas -- que na verdade acabam por formar enormes teias de bairros que se interligam -- são construídas pelos loteadores que querem as ruas para que seus lotes valham mais -- e querem que outras pessoas usem as ruas também. Também são esses mesmos loteadores que colocam os postes de luz e os encanamentos de água, não sem antes terem que se submeter a extorsões de praxe praticadas por COPASA e CEMIG.
Se ao abrir um loteamento, condomínio, prédio um indivíduo ou uma empresa consegue sem muito problema passar rua, eletricidade, água e esgoto, por que não seria possível existir livre-concorrência nesses mercados? Mesmo aquela velha estória de que é ineficiente passar cabos de luz duplicados para que companhias elétricas possam competir já me parece bobagem.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28hyperscript-go
A template rendering library similar to hyperscript for Go.
Better than writing HTML and Golang templates.
See also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28sitio
A static site generator that works with imperative code instead of declarative templates and directory structures. It assumes nothing and can be used to transform anything into HTML pages.
It uses React so it can be used to generate single-page apps too if you want -- and normal sites that work like single-page apps.
It also provides helpers for reading Markdown files, like all static site generator does.
A long time after creating this and breaking it while trying to add too many features at once I realized Gatsby also had an imperative engine underlying the default declarative interface that could be used and it was pretty similar to
sitio
. That both made me happy to have arrived at the same results of such an acclaimed tool and sad for the same reason, as Gatsby is the worse static site generator ever created considering user experience. -
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28neuron.vim
I started using this neuron thing to create an update this same zettelkasten, but the existing vim plugin had too many problems, so I forked it and ended up changing almost everything.
Since the upstream repository was somewhat abandoned, most users and people who were trying to contribute upstream migrate to my fork too.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Flowi.es
At the time I thought Workflowy had the ideal UI for everything. I wanted to implement my custom app maker on it, but ended up doing this: a platform for enhancing Workflowy with extra features:
- An email reminder based on dates input in items
- A website generator, similar to Websites For Trello, also based on Classless Templates
Also, I didn't remember this was also based on CouchDB and had some couchapp functionalities.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Xampu
Depois de quatro anos e meio sem usar xampu, e com o cabelo razoavelmente grande, dá pra perceber a enorme diferença entre não passar nada e passar L'Oréal Elsève, ou entre passar este e Seda Ceramidas Cocriações.
A diferença mais notável no primeiro caso é a de que o cabelo deixa de ter uma oleosidade natural que mantém os cachos juntos e passa a ser só uma massa amorfa de fios secos desgrenhados, um jamais tocando o outro. No segundo caso os cabelos não mais não se tocam, mas mantém-se embaraçados. Passar o condicionador para "hidratar" faz com que o cabelo fique pesado e mole, caindo para os lados.
Além do fato de que os xampus vêm sempre com as mesmas recomendações no verso ("para melhores resultados, utilize nossa linha completa"), o mais estranho é que as pessoas fazem juízos sobre os cabelos serem "secos" ou "oleosos" sendo que elas jamais os viram em um estado "natural" ou pelo menos mais próximo do natural, pelo contrário, estão sempre aplicando sobre eles um fluido secador, o xampu, e depois um fluido molhador, o condicionador, e cada um deles podendo ter efeitos diferentes sobre cada cabelo, o que deveria invalidar total e cabalmente todo juízo sobre oleosidade.
Por outro lado, embora existam, aqui e ali, discussões sobre a qualidade dos xampus e sobre qual é mais adequado a cada cabelo (embora, como deve ter ficado claro no parágrafo acima, estas discussões são totalmente desprovidas de qualquer base na realidade), não se discute a qualidade da água. A água que cada pessoa usa em seu banho deve ter um influência no mínimo igual à do xampu (ou não-xampu).
No final das contas, as pessoas passam a vida inteira usando o xampu errado, sem saber o que estão fazendo, chegando a conclusões baseadas em nada sobre os próprios cabelos e o dos outros, sem considerar os dados corretos -- aliás, sem nem cogitar que pode existir algum dado além da percepção mais imediata e o feeling de cabelereiro de cada um --, ou então trocando de xampu a cada vez que o cabelo fica de um jeito diferente, fooled by randomness.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28IPFS problems: Too much immutability
Content-addressing is unusable with an index or database that describes each piece of content. Since IPFS is fully content-addressable, nothing can be done with it unless you have a non-IPFS index or database, or an internal protocol for dynamic and updateable links.
The IPFS conceit made then go with the with the second option, which proved to be a failure. They even incentivized the creation of a database powered by IPFS, which couldn't be more misguided.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Cultura Inglesa e aprendizado extra-escolar
Em 2005 a Cultura Inglesa me classificou como nível 2 em proficiência de inglês, numa escala de 1 a 14 ou coisa parecida. De modo que eu precisaria de 6 anos de aulas com eles pra ficar bom. 2 anos depois, sem fazer nenhuma aula ou ter qualquer tipo de treinamento intensivo eu era capaz de compreender textos técnicos em inglês sem nenhuma dificuldade. Mais 2 anos e eu era capaz de compreender qualquer coisa e me expressar com razoável qualidade.
Tudo isso pra documentar mais um exemplo, que poderia passar despercebido, de aprendizado de tipo escolar que se deu fora de uma escola.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Gold is not useless
If there's something all common people believe about gold is that it is useless[^1]. Austrian economists and libertarians in general that argue against central banks or defend a primitive gold standard are often charged with that accusation: that gold is useless, it has no use in the industry, it serves no purpose besides ornamental, so it is a silly commodity, a luxurious one, and that it would be almost immoral to have such a thing in a so central position in an economy such as the position of money.
I've seen libertarians in general argue such things as: "it is used in some dental operations", which means people make dental prosthesis of gold, something that fits in same category of jewelry, I would say.
There's also the argument of electronic connectors. That's something that appears to be true, but wouldn't suffice the anti-gold arguments. The fact remains that, besides its uses as money -- because gold is still considered to be a form money even now that it doesn't have that position formally in any country (otherwise it wouldn't be considered as an "investment" or "value store" everywhere) -- gold is used mainly for ornamental purposes[^2].
All that is a hassle for libertarians in general. Even the Mises Regression Theory wouldn't solve that problem of people skeptical of gold due to its immoral nature. That problem is solved once you read what is written in the chapter 17 from Richard Cantillon's Essay on Economic Theory^3 (page 103):
Gold and silver are capable of serving not only the same purpose as tin and copper, but also most of the purposes of lead and iron. They have this further advantage over other metals in that they are not consumed by fire and are so durable that they may be considered permanent. It is not surprising, therefore, that the men who found the other metals useful, valued gold and silver even before they were used in exchange.
So gold is indeed useful. Everybody should already know that. You can even do forks and spoons with gold. You can do furniture with gold, and many other useful stuff. As soon as you grasp this, gold is useful again. It is an useful commodity.
Answering the next question becomes easy: why isn't anyone making gold forks anywhere? The questioner already knows the answer: because it is too expensive for that.
And now the Regression Theory comes with its full force: why is it expensive? Because it has gained a lot of value in the process of becoming money. The value of gold as money is much greater than as a metal used in fork production.
[^1]: see http://www.salon.com/2014/02/02/ignore_sean_hannity_gold_is_useless_partner/ or all answers on https://www.quora.com/Why-is-gold-considered-so-precious-and-why-does-it-have-such-high-prices. [^2]: this https://en.wikipedia.org/wiki/Gold#Modern_applications section on the Wikipedia page for gold is revealing.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28The problem with DIDs
Decentralized Identifiers are supposedly a standard that will allow anyone (or anything) to have an online identity. The DID is a URI like
did:<method>:<data>
in which<method>
determines how to interpret the<data>
. The data is generally a public key in some cryptographic system or shitcoin blockchain, or a naked key, or a DNS-backed web address.Some of the DID proponents argue that this is for maximum interoperability, since any new system can be supported under the same standard, i.e. supposedly an application could "support DIDs" (as some would say) and that would allow anyone to just paste their DID string there and that would refer to something.
There are a gazillion of different DID "methods", most of them are probably barely used. What does it mean for an application to "support" DIDs, then? For the interoperability argument to make any sense that must mean that the application must understand all the "methods" -- which involves understanding all cryptographic protocols and reading and interpreting data from a gazillion different blockchains and also understanding the specifics of each method, since the data of each blockchain or website and so on must also be interpreted according to the rules of the method.
It must be clear from the paragraph above that the DID goal is is unimplementable and therefore will either fail horribly by lack of adoption; or it will have to be changed to something else (for example everybody will start accepting just
did:key
and ignore others and that will be the standard); or it will become a centralized thing with all supporting applications using a single set of libraries that have built-in support for all methods by calling centralized servers that return the final product of processing the DID data for each method.See also:
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Scala is such a great language
Scala is amazing. The type system has the perfect balance between flexibility and powerfulness.
match
statements are great. You can write imperative code that looks very nice and expressive (and I haven't tried writing purely functional things yet). Everything is easy to write and cheap and neovim integration works great.But Java is not great. And the fact that Scala is a JVM language doesn't help because over the years people have written stuff that depends on Java libraries -- and these Java libraries are not as safe as the Scala libraries, they contain reflection, slowness, runtime errors, all kinds of horrors.
Scala is also very tightly associated with Akka, the actor framework, and Akka is a giant collection of anti-patterns. Untyped stuff, reflection, dependency on JVM, basically a lot of javisms. I just arrived and I don't know anything about the Scala history or ecosystem or community, but I have the impression that Akka has prevent more adoption of Scala from decent people that aren't Java programmers.
But luckily there is a solution -- or two solutions: ScalaJS is a great thing that exists. It transpiles Scala code into JavaScript and it runs on NodeJS or in a browser!
Scala Native is a much better deal, though, it compiles to LLVM and then to binary code and you can have single binaries that run directly without a JVM -- not that the single JARs are that bad though, they are great and everybody has Java so I'll take that anytime over C libraries or NPM-distributed software, but direct executables even better. Scala Native just needs a little more love and some libraries and it will be the greatest thing in a couple of years.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A estrutura paradigmática da ciência
N'A estrutura das revoluções científicas, Thomas Kuhn descreve como surge uma ciência: um monte de gente fica tentando descobrir como uma coisa funciona a partir da sua própria experiência e escreve livros descrevendo isso. Cada um fala uma coisa completamente diferente, várias escolas de pensamento surgem e se combatem, até que por algum motivo uma mudança qualitativa aparece e faz com que todos concordem com uma base comum -- exceto é claro os que não concordam e esses são sumariamente expulsos do convívio dos demais --, os vários grupos deixam de existir ou se reformulam para que suas teses específicas passem a ter como base aquele novo paradigma, e então todo mundo passa a se comunicar por artigos que pressupõem várias coisas que eles têm em comum, e não mais por livros que partem dos menores princípios e tentam explicar tudo.
É um belo paradigma para compreender como a ciência funciona, e explica o estado real das coisas muito melhor do que o vômito ideológico dos cientistas mirins da internet que repetem asneiras sobre o "método científico".
mas o problema que me ocorreu foi: quem garante que esse paradigma representa realmente um avanço? Será que o desejo de concordar e se sentir incluído não foi o que fez com que todos os envolvidos o aceitassem? Não digo nem que essa nova descoberta esteja errada, mas ela -- e sua aceitação como novo paradigma -- criam um recorte da realidade dentro do qual aquela nova ciência que surge estará fadada a operar dali em diante, mas quem disse que esse recorte é mesmo o melhor lugar para que todos operem?
Talvez uma idéia melhor seria que as pessoas avaliassem aquele novo paradigma, mas não mergulhassem de cabeça nele.
Uma hipótese alternativa do porquê esse recorte e surgimento da ciência acontece: ela é mais fácil de ser abarcada pela burocracia universitária e empregar mentes medíocres na "pesquisa" uma coisa pequena e sem importância que já está ali dada pelo próprio conceito da ciência e não será nenhuma descoberta nova.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28The "Drivechain will replace altcoins" argument
The argument that Drivechain will replace shitcoins is not that people will sell their shitcoins or that the existing shitcoins will instantly vanish. The argument is about a change at the margin that eventually ends up killing the shitcoins or reducing them to their original insignificance.
What does "at the margin" mean? For example, when the price of the coconut drops a little in relation to bananas, does that mean that everybody will stop buying bananas and will buy only coconuts now? No. Does it mean there will be zero increase in the amount of coconuts sold? Also no. What happens is that there is a small number of people who would have preferred to buy coconuts if only they were a little less expensive but end up buying bananas instead. When the price of coconut drops these people buy coconuts and don't buy bananas.
The argument is that the same thing will happen when Drivechain is activated: there are some people today (yes, believe me) that would have preferred to work within the Bitcoin ecosystem but end up working on shitcoins. In a world with Drivechain these people would be working on the Bitcoin ecosystem, for the benefit of Bitcoin and the Bitcoiners.
Why would they prefer Bitcoin? Because Bitcoin has a bigger network-effect. When these people come, they increase Bitocin's network-effect even more, and if they don't go to the shitcoins they reduce the shitcoins' network-effect. Those changes in network-effect contribute to bringing others who were a little further from the margin and the thing compounds until the shitcoins are worthless.
Who are these people at the margin? I don't know, but they certainly exist. I would guess the Stark people are one famous example, but there are many others. In the past, examples included Roger Ver, Zooko Wilcox, Riccardo Spagni and Vitalik Buterin. And before you start screaming that these people are shitcoiners (which they are) imagine how much bigger Bitcoin could have been today if they and their entire communities (yes, I know, of awful people) were using and working for Bitcoin today. Remember that phrase about Bitcoin being for enemies?
But everything that has been invented in the altcoin world is awful, we don't need any of that!
You and me should not be the ones judging what is good and what is not for others, but both you and me and others will benefit if these things can be done in a way that increases Bitcoin network-effect and pays fees to Bitcoin miners.
Also, there is a much stronger point you may have not considered: if you believe all altcoiners are scammers that means we have only seen the things that were invented by scammers, since all honest people that had good ideas decided to not implement them as the only way to do it would be to create a scammy shitcoin. One example is Bitcoin Hivemind.
If it is possible to do these ideas without creating shitcoins we may start to see new things that are actually good.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Webvatar
Like Gravatar, but using profile images from websites tagged with "microformats-2" tags, like people from the indiewebcamp movement liked. It falled back to favicon, gravatar and procedural avatar generators.
No one really used this, despite people saying they liked it. Since I was desperate to getting some of my programs appreciated by someone I even bought a domain. It was sad, but an enriching experience.
See also
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A biblioteca infinita
Agora esqueci o nome do conto de Jorge Luis Borges em que a tal biblioteca é descrita, ou seus detalhes específicos. Eu tinha lido o conto e nunca havia percebido que ele matava a questão da aleatoriedade ser capaz de produzir coisas valiosas. Precisei mesmo da Wikipédia me dizer isso.
Alguns anos atrás levantei essa questão para um grupo de amigos sem saber que era uma questão tão batida e baixa. No meu exemplo era um cachorro andando sobre letras desenhadas e não um macaco numa máquina de escrever. A minha conclusão da discussão foi que não importa o que o cachorro escrevesse, sem uma inteligência capaz de compreender aquilo nada passaria de letras aleatórias.
Borges resolve tudo imaginando uma biblioteca que contém tudo o que o cachorro havia escrito durante todo o infinito em que fez o experimento, e portanto contém todo o conhecimento sobre tudo e todas as obras literárias possíveis -- mas entre cada página ou frase muito boa ou pelo menos legívei há toneladas de livros completamente aleatórios e uma pessoa pode passar a vida dentro dessa biblioteca que contém tanto conhecimento importante e mesmo assim não aprender nada porque nunca vai achar os livros certos.
Everything would be in its blind volumes. Everything: the detailed history of the future, Aeschylus' The Egyptians, the exact number of times that the waters of the Ganges have reflected the flight of a falcon, the secret and true nature of Rome, the encyclopedia Novalis would have constructed, my dreams and half-dreams at dawn on August 14, 1934, the proof of Pierre Fermat's theorem, the unwritten chapters of Edwin Drood, those same chapters translated into the language spoken by the Garamantes, the paradoxes Berkeley invented concerning Time but didn't publish, Urizen's books of iron, the premature epiphanies of Stephen Dedalus, which would be meaningless before a cycle of a thousand years, the Gnostic Gospel of Basilides, the song the sirens sang, the complete catalog of the Library, the proof of the inaccuracy of that catalog. Everything: but for every sensible line or accurate fact there would be millions of meaningless cacophonies, verbal farragoes, and babblings. Everything: but all the generations of mankind could pass before the dizzying shelves – shelves that obliterate the day and on which chaos lies – ever reward them with a tolerable page.
Tenho a impressão de que a publicação gigantesca de artigos, posts, livros e tudo o mais está transformando o mundo nessa biblioteca. Há tanta coisa pra ler que é difícil achar o que presta. As pessoas precisam parar de escrever.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Per Bylund's insight
The firm doesn't exist because, like Coase said, it is inefficient to operate in a fully open-market and production processes need some bubbles of central planning.
Instead, what happens is that a firm is created because an entrepreneur is doing a new thing (and here I imagine that doing an old thing in a new context also counts as doing a new thing, but I didn't read his book), and for that new thing there is no market, there are no specialized workers offering the services needed, nor other businesses offering the higher-order goods that entrepreneur wants, so he must do all by himself.
So the entrepreneur goes and hires workers and buys materials more generic than he wanted and commands these to build what he wants exactly. It is less efficient than if he could buy the precise services and goods he wanted and combine those to yield the product he envisaged, but it accomplishes the goal.
Later, when that specific market evolves, it's natural that specialized workers and producers of the specific factors begin to appear, and the market gets decentralized.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Obra aqui do lado
Tem quase um ano que estão fazendo uma obra aqui do lado e eu não ganhei nenhuma indenização. Numa sociedade sem Estado isso jamais teria acontecido.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28idea: Patreon, but simple, and without subscription
Basically instead of a subscription and becoming member of something, you just get a forum for your inner circle and people get lnurl-pay codes they can use to donate. Some amount of donations is required to remain in the group (like x per month), but if you donate more than that on the beginning you can stay until your credits expire.
Every time someone donates a notice is posted in the group page.
Perhaps that could be an @lntxbot feature.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28On "zk-rollups" applied to Bitcoin
ZK rollups make no sense in bitcoin because there is no "cheap calldata". all data is already ~~cheap~~ expensive calldata.
There could be an onchain zk verification that allows succinct signatures maybe, but never a rollup.
What happens is: you can have one UTXO that contains multiple balances on it and in each transaction you can recreate that UTXOs but alter its state using a zk to compress all internal transactions that took place.
The blockchain must be aware of all these new things, so it is in no way "L2".
And you must have an entity responsible for that UTXO and for conjuring the state changes and zk proofs.
But on bitcoin you also must keep the data necessary to rebuild the proofs somewhere else, I'm not sure how can the third party responsible for that UTXO ensure that happens.
I think such a construct is similar to a credit card corporation: one central party upon which everybody depends, zero interoperability with external entities, every vendor must have an account on each credit card company to be able to charge customers, therefore it is not clear that such a thing is more desirable than solutions that are truly open and interoperable like Lightning, which may have its defects but at least fosters a much better environment, bringing together different conflicting parties, custodians, anyone.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Custom spreadsheets
The idea was to use it to make an app that would serve as custom database for everything and interact with the spreadsheet so people could play and calculate with their values after they were created by the custom app, something like an MS Access integrated with Excel?
My first attempt that worked (I believe there was an attempt before but I have probably deleted it from everywhere) was this
react-microspreadsheet
thing (at the time calledreact-spreadsheet
before I donated the npm name to someone who asked):This was a very good spreadsheet component that did many things current "react spreadsheet" components out there don't do. It had formulas; support for that handle thing that you pulled with the mouse and it autofilled cells with a pattern; it had keyboard navigation with Ctrl, Shift, Ctrl+Shift; it had that thing through which you copy-pasted formulas and they would change their parameters depending on where you pasted them (implemented in a very poor manner because I was using and thinking about Excel in baby mode at the time).
Then I tried to make it into "a small sheet you can share" kind of app through assemblymade.com, and eventually as I tried to add more things bugs began to appear.
Then there was
cycle6-spreadsheet
:If I remember well this was very similar to the other one, although made almost 2 years after. Despite having the same initial goal of the other (the multi-app custom database thing) it only yielded:
- Sidesheet, a Chrome extension that opened a spreadsheet on the side of the screen that you could use to make calculations and so on. It worked, but had too many bugs that probably caused me to give up entirely.
I'm not sure which of the two spreadsheets above powers http://sheets.alhur.es.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Eltoo
Read the paper, it's actually nice and small. You can read only everything up to section 4.2 and it will be enough. Done.
Ok, you don't want to. Or you tried but still want to read here.
Eltoo is a way of keeping payment channel state that works better than the original scheme used in Lightning. Since Lightning is a bunch of different protocols glued together, it can It replace just the part the previously dealed with keeping the payment channel.
Eltoo works like this: A and B want a payment channel, so they create a multisig transaction with deposits from both -- or from just one, doesn't matter. That transaction is only spendable if both cooperate. So if one of them is unresponsive or non-cooperative the other must have a way to get his funds back, so they also create an update transaction but don't publish it to the blockchain. That update transaction spends to a settlement transaction that then distributes the money back to A and B as their balances say.
If they are cooperative they can change the balances of the channel by just creating new update transactions and settlement transactions and number them like 1, 2, 3, 4 etc.
Solid arrows means a transaction is presigned to spend only that previous other transaction; dotted arrows mean it's a floating transaction that can spend any of the previous.
Why do they need and update and a settlement transaction?
Because if B publishes update2 (in which his balances were greater) A needs some time to publish update4 (the latest, which holds correct state of balances).
Each update transaction can be spent by any newer update transaction immediately or by its own specific settlement transaction only after some time -- or some blocks.
Hopefully you got that.
How do they close the channel?
If they're cooperative they can just agree to spend the funding transaction, that first multisig transaction I mentioned, to whatever destinations they want. If one party isn't cooperating the other can just publish the latest update transaction, wait a while, then publish its settlement transaction.
How is this better than the previous way of keeping channel states?
Eltoo is better because nodes only have to keep the last set of update and settlement transactions. Before they had to keep all intermediate state updates.
If it is so better why didn't they do it first?
Because they didn't have the idea. And also because they needed an update to the Bitcoin protocol that allowed the presigned update transactions to spend any of the previous update transactions. This protocol update is called
SIGHASH_NOINPUT
[^anyprevout], you've seen this name out there. By marking a transaction withSIGHASH_NOINPUT
it enters a mystical state and becomes a floating transaction that can be bound to any other transaction as long as its unlocking script matches the locking script.Why can't update2 bind itself to update4 and spend that?
Good question. It can. But then it can't anymore, because Eltoo uses
OP_CHECKLOCKTIMEVERIFY
to ensure that doesn't actually check not a locktime, but a sequence. It's all arcane stuff.And then Eltoo update transactions are numbered and their lock/unlock scripts will only match if a transaction is being spent by another one that's greater than it.
Do Eltoo channels expire?
No.
What is that "on-chain protocol" they talk about in the paper?
That's just an example to guide you through how the off-chain protocol works. Read carefully or don't read it at all. The off-chain mechanics is different from the on-chain mechanics. Repeating: the on-chain protocol is useless in the real world, it's just a didactic tool.
[^anyprevout]: Later
SIGHASH_NOINPUT
was modified to fit better with Taproot and Schnorr signatures and renamed toSIGHASH_ANYPREVOUT
. -
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Truthcoin as a spacechain
To be clear, the term "spacechain" here refers only to the general concept of blindly merge-mined (BMM) chains without a native money-token, not including the "spacecoins".
The basic idea is that for Truthcoin/Hivemind to work we need
- Balances of Votecoin tokens, i.e. a way to keep track of who owns how much of the oracle corporation;
- Bitcoin tokens to be used for buying and selling prediction market shares, i.e. money to gamble;
- A blockchain, i.e. some timestamping service that emits blocks ordered with transactions and can keep track of internal state and change the state -- including the balances of the Votecoin tokens and of the Bitcoin tokens that are assigned to individual prediction markets according to predefined rules;
A spacechain, i.e. a blindly merge-mined chain, gives us 1 and 3. We can just write any logic for that and that should be very easy. It doesn't give us 2, and it also has the problem of how the spacechain users can pay the spacechain miners (which is why the spacecoins were envisioned in the first place, but we don't have spacecoins here).
But remember we have votecoins already. Votecoins (VTC) should represent a share in the oracle corporation, which means they entitle their holders to some revenue -- even though they also burden their holders with the duty to vote in event outcomes (at the risk of losing part of their own votecoin balance) --, and they can be exchanged, so we can assume they will have some value.
So we could in theory use these valuable tokens to pay the spacechain miners. That wouldn't be great because it pervert their original purpose and wouldn't solve the problem 2 from above -- unless we also used the votecoins to bet in which case they wouldn't be just another shitcoin in the planet with no network effect competing against Bitcoin and would just cause harm to humanity.
What we can do instead is to create a native mechanism for issuing virtual Bitcoin tokens (vBTC) in this chain, collaterized by votecoins, then we can use these vBTC to both gamble (solve problem 2) and pay miners (fix the hole in the spacechain BMM design).
For example, considering the VTC to be worth 0.001 BTC, any VTC holder could put 0.005 VTC and get 0.001 vBTC, then use to gamble or sell to others who want to gamble. The VTC holder still technically owns the VTC and can and must still participate in the oracle decisions. They just have to pay the BTC back before they can claim their VTC back if they want to send it elsewhere.
They stand to gain by selling vBTC if there is a premium for vBTC over BTC (i.e. people want to gamble) and then rebuying vBTC back once that premium goes away or reverts itself.
For this scheme to work the chain must know the exchange rate between VTC and BTC, which can be provided by the oracle corporation itself.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28A flexibilidade da doutrina socialista
Os fatos da revolução russa mostram que Lênin e seus amigos bolcheviques não eram só psicopatas assassinos: eles realmente acreditavam que estavam fazendo o certo.
Talvez depois de um tempo o foco deles tenha mudado mais para o lado de se preocuparem menos com a vida e o bem-estar dos outros do que com eles mesmos, mas não houve uma mudança fundamental.
Ao mesmo tempo, a doutrina socialista na qual eles acreditavam era enormemente flexível, assim como a dos esquerdistas de hoje. É a mesma doutrina: uma coleção de slogans que pode ser adaptada para apoiar ou ir contra qualquer outra tese ou ação.
Me parece que a justificativa que eles encontraram para fazer tantas coisas claramente ruins vem dessas mesma flexibilidade. Os atos cruéis estavam todos justificados pela mesma coleção de slogans socialistas de sempre, apenas adaptados às circunstâncias.
Será que uma doutrina mais sólida se prestaria a essas atrocidades? Se concluirmos que a flexibilidade vem da mente e não da doutrina em si, sim, mas não acho que venha daí, porque é sempre o socialismo que é flexível, nunca nenhuma outra doutrina. Ou, na verdade, o socialismo é tão flexível que ele envolve e integra qualquer outra doutrina que seja minimamente compatível.
Talvez a flexibilidade esteja mesmo na mente, mas existe alguma relação entre a mente que desconhece a coerência e a lógica e a mente que se deixa atrair pelos slogans socialistas.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Família e propriedade
A idéia tradicional de família está associada a propriedades imobiliárias fixas, passadas de geração a geração.
Com propriedades sendo partidas, desfeitas, vendidas e divididas entre os filhos a idéia de família -- um nome associado a um lugar -- torna-se vaga e perde-se no ar.
Acho que isso não vale apenas para a nobreza medieval, mas mesmo para as famílias plebéias, e não valeu quase nunca para as sociedades do novo mundo. Acho que até seria compatível com a compra e venda de terras, que seriam compreendidas como uma família mudando de lugar, mas não com a divisão igualitária das propriedades da família entre vários filhos e assim sucessivamente.
Nunca antes tinha-me ocorrido este excelente e quase-óbvio insight que está escrito em "A Democracia na América", de Alexis de Tocqueville.
-
@ 3bf0c63f:aefa459d
2024-01-14 13:55:28Splitpages
The simplest possible service: it splitted PDF pages in half.
Created specially to solve the problem of those scanned books that come with two pages side-by-side as if they were a single page and are much harder to read on Kindle because of that.
It required me to learn about Heroku Buildpacks though, and fork or contribute to a Heroku Buildpack that embedded a mupdf binary.