-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-25 16:45:27
# worst code ever
```js
for (const lesson of processedLessons) {
let savedLesson;
if (lesson.unpublished) {
const validationResult = validateEvent(lesson.unpublished);
if (validationResult !== true) {
console.error('Invalid event:', validationResult);
showToast('error', 'Error', `Invalid event: ${validationResult}`);
return;
}
const published = await lesson.unpublished.publish();
savedLesson = await handlePostResource(lesson.unpublished);
if (published && savedLesson) {
const deleted = await axios.delete(`/api/drafts/${lesson.d}`);
if (deleted && deleted.status === 204) {
const savedLesson = await handlePostLesson(lesson);
if (savedLesson) {
createdLessons.push(savedLesson);
}
}
}
} else {
const savedLesson = await handlePostLesson(lesson);
if (savedLesson) {
createdLessons.push(savedLesson);
}
}
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:57:19
asdasdasdsad
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:54:44
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/clGgymry998&pp=ygUcZmFyIGNyeSAzIHppZ2d5J3MgbW9kIHJldmlldw%3D%3D" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:52:38
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/JAQuukInxFg&pp=ygUcZmFyIGNyeSAzIHppZ2d5J3MgbW9kIHJldmlldw%3D%3D" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:33:51
# test
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:29:20
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/Nn2uIoUUf7Q&pp=ygUcZmFyIGNyeSAzIHppZ2d5J3MgbW9kIHJldmlldw%3D%3D" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:26:03
# hello draft
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:25:25
```sql
model Lesson {
id String @id @default(uuid())
courseId String?
course Course? @relation(fields: [courseId], references: [id])
resourceId String?
resource Resource? @relation(fields: [resourceId], references: [id])
draftId String?
draft Draft? @relation(fields: [draftId], references: [id])
index Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:11:52
```sql
model Lesson {
id String @id @default(uuid())
courseId String?
course Course? @relation(fields: [courseId], references: [id])
resourceId String?
resource Resource? @relation(fields: [resourceId], references: [id])
draftId String?
draft Draft? @relation(fields: [draftId], references: [id])
index Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:07:08
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/Xy4LfL2gxKY" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 23:02:46
```js
<h1 className='text-4xl mt-6'>{draft?.title}</h1>
<p className='text-xl mt-6'>{draft?.summary}</p>
{draft?.additionalLinks && draft.additionalLinks.length > 0 && (
<div className='mt-6'>
<h3 className='text-lg font-semibold mb-2'>Additional Resources:</h3>
<ul className='list-disc list-inside'>
{draft.additionalLinks.map((link, index) => (
<li key={index}>
<a href={link} target="_blank" rel="noopener noreferrer" className='text-blue-500 hover:underline'>
{new URL(link).hostname}
</a>
</li>
))}
</ul>
</div>
)}
<div className='flex flex-row w-full mt-6 items-center'>
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 22:00:14
```js
import React, { useState, useEffect, useCallback } from "react";
import axios from "axios";
import { InputText } from "primereact/inputtext";
import { InputNumber } from "primereact/inputnumber";
import { InputSwitch } from "primereact/inputswitch";
import { Button } from "primereact/button";
import { useRouter } from "next/router";;
import { useSession } from "next-auth/react";
import { useToast } from "@/hooks/useToast";
import { useNDKContext } from "@/context/NDKContext";
import { NDKEvent } from "@nostr-dev-kit/ndk";
import dynamic from 'next/dynamic';
const MDEditor = dynamic(
() => import("@uiw/react-md-editor"),
{
ssr: false,
}
);
import 'primeicons/primeicons.css';
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 21:59:48
```js
import React, { useState, useEffect, useCallback } from "react";
import axios from "axios";
import { InputText } from "primereact/inputtext";
import { InputNumber } from "primereact/inputnumber";
import { InputSwitch } from "primereact/inputswitch";
import { Button } from "primereact/button";
import { useRouter } from "next/router";;
import { useSession } from "next-auth/react";
import { useToast } from "@/hooks/useToast";
import { useNDKContext } from "@/context/NDKContext";
import { NDKEvent } from "@nostr-dev-kit/ndk";
import dynamic from 'next/dynamic';
const MDEditor = dynamic(
() => import("@uiw/react-md-editor"),
{
ssr: false,
}
);
import 'primeicons/primeicons.css';
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 21:27:00
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/div>" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ dd664d5e:5633d319
2024-08-24 07:57:16
# We can talk about something else, now.
Making boosts/quotes the primary way new users find a variety of topics is a fundamental flaw. We don't need boosts (which merely results in the main trending list trending even harder, as people feel safer boosting something that is already popular), and hashtags have become the mess they naturally will become.
## We need topical forums and relay-based community boards.
This would actively encourage those of us who want to write on OtherTopics to write more on them, as we would have some chance of the material being found by those interested in it. And it would spare us having to win some general popularity contest, just to be able to converse about golfing, Hinduism, or veganism.
Scrollable "timeline" feeds, even with AI assistance (like DVMs), don't accomplish this as well, as they eliminate the ability to skim the top-level and selectively read. You have to scroll, scroll, scroll.
It would also reduce the overloading of the original posts with videos, which is starting to give Nostr a Tik-Tok vibe. There's nothing wrong with that, per se, and we should probably have clients like that, but it makes life hard for anyone who wants to have a deeper discussion. People scrolling have trouble even "seeing" a text-based OP, but using the written word is a true signal to the other people, that you are capable of carrying a conversation through text.
## Examples for other styles of client
(I am including the Communities in Nostrudel and Satellite, even though they don't yet work, effectively.)
Some of the things that set these clients apart, is that:
1. they are topic-first or thread-first, not person-first,
2. they sometimes allow voting (I suppose we could rank by zaps),
3. they often allow the user to override the default order and simply look at whatever is newest, most popular, or where their friends are currently active (i.e. they allow for easy sorting and filtering),
4. they cap the depth of threads to one or two levels, keep the indentation tiny, or offer a "flat" view,
5. they are primarily text-based (Reddit broke with this and now their main pages look really spammy),
6. they allow you to see all of the entries in the thread, at once, and simply actualize to display the entries that pop up in-between,
7. they often have some indication of what you have already read (this is application data) and allow you to sort for "stuff I haven't looked at, yet".
https://i.nostr.build/uCx5YKMOsjhKBU5c.png
https://i.nostr.build/hMkm2oKpos0pWaV9.png
https://i.nostr.build/mGQONMw5RC8XKtph.png
https://i.nostr.build/TCSkG1bPuMOL0jja.webp
https://i.nostr.build/3fLjCSNdtefiZmAH.png
https://i.nostr.build/BHgo7EKTK5FRIsVl.png
-
![](/static/nostr-icon-purple-64x64.png)
@ 91687725:a0de48ea
2024-08-24 05:40:14
こんにちは。Kateです。
最近ちょっとお休みしていますが、日本でビットコインを専門に扱う[Diamond Hands Magazine](https://diamondhandscommunity.substack.com/)に寄稿したりしてます。
私がビットコインと出会ったのは2011年、まだビットコイン利用者はとても少なかった時代です。たまたま身内にビットコイン界隈の人がいました。もしかしたら今でいうビト妻だったかも?
まだビットコインが1ドル以下でおもちゃみたいな存在だった頃に知ったわけですが、その後勢いづいて、100ドル、1000ドルと価値が上がっていきました。
それを見て、ビットコインを少しずつ買って貯めておけば、将来リタイヤの蓄えになるかもと思ってお小遣い程度のビットコインを積立してました。でも、アクシデントで失くしちゃったんですよね。
その後、身内のごたごたで自分の生活が天地がひっくり返るように一変し、気がつけばカナダでただお金がないアジア系移民シングルマザー、しかも周りに家族が誰もいないという、非常にマイノリティな立場になりました。
人生、何事も経験。一度ビットコインを失くし、傷心もあり、数年はビットコインから離れました。でも気がつけばビットコインは冬の時代を終えて、また元気になっていたんですね。自分は海外でひとり子育てに追われ、なんとか生きてた感じですが!
ビットコインが500ドルくらいになっていた時に困窮していた私は、ふとペーパーウォレットと呼ばれた当時の携帯可能ウォレット?に0.5btc 残っていたのを発見して速攻換金しましたね。悔やまれます。
その後、2017年頃、カナダで当時大手の割と使い勝手のいい取引所があることを知って、再度ビットコイン貯蓄にチャレンジしました。2年ほどで、ほぼ1ビットコインと10ETHくらいあったんですけどね、今度は取引所の代表者が行方不明になり、またもやビットコインを失くしました。
ふつうだったら、もうやめますよね。2回もなくしたら。
けれど、自分はかつてインターネットが始まったころのワクワクを経験していました。90年代半ば、新宿にできたばかりのインターネットカフェで、GIFがかろうじて表示できるグレーのブラウザ画面と対面しました。世界を変える技術を体験した時の感動は今でも忘れられません。
(こう書くと立派なオバサンなのがバレちゃいますね。ビットコインネイティブ世代の中では年長者)
それから15年以上たって、初めてサトシナカモトのホワイトペーパーを読んだ時に、同じ衝撃を受けたのです。初めて実用化されたインターネット上で世界の誰とでも送り合えるマネー。その可能性は無限∞。
そのビットコインの進化を、実際に買ってみたり、使ってみたり、なくしたりしつつ、より深く知ろうと付き合ってきた自分は、いつの間にかビットコインを通して世の中のいろいろを見て考えるようになりました。
ビットコインが生まれ、実験段階を経て、すでに15年が経ちます。けれども、ビットコインは今でも多くの人から最も誤解されている技術・発明のように見えます。ここまで来たら、自分が生きている間に、ビットコインが世界とどう関わっていくのか見届けたいと思います!
そして、私自身がビットコインを知ることで発見した世界や新しい価値観を、誰かに伝えられたらいいなと願って、このブログをスタートすることにしました。
今回は自己紹介という形になりましたが、私がビットコインを通して学んだことや気づいたことをこれから少しづつアップしてみます!
週1くらいのペースで投稿が目標です。よろしくお願いします。
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 00:10:45
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/858xjX2VN_I" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-24 00:08:51
```js
import React, {useEffect} from "react";
import Image from "next/image";
import { useImageProxy } from "@/hooks/useImageProxy";
import { formatUnixTimestamp } from "@/utils/time";
import { Button } from "primereact/button";
const ContentDropdownItem = ({ content, onSelect }) => {
const { returnImageProxy } = useImageProxy();
return (
<div className="w-full border-t-2 border-gray-700 py-4">
<div className="flex flex-row gap-4 p-2">
<Image
alt="content thumbnail"
src={returnImageProxy(content?.image)}
width={50}
height={50}
className="w-[100px] h-[100px] object-cover object-center border-round"
/>
<div className="flex-1 max-w-[80vw]">
<div className="text-lg text-900 font-bold">{content.title}</div>
<div className="w-full text-sm text-600 text-wrap">{content.summary}</div>
<div className="text-sm pt-6 text-gray-500">
{content.published_at ? `Published: ${formatUnixTimestamp(content.published_at)}` : "not yet published"}
</div>
</div>
<div className="flex flex-col justify-end">
<Button label="Select" onClick={() => onSelect(content)} />
</div>
</div>
</div>
);
};
export default ContentDropdownItem;
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 35f3a26c:92ddf231
2024-08-23 20:45:37
#### What is Bitaxe?
![](https://m.stacker.news/47758)
Bitaxe is an open source ASIC (Application-Specific Integrated Circuit) Bitcoin miner that has been making waves in the cryptocurrency community. This innovative project aims to empower miners at every level with powerful, efficient, and **low-cost** mining solutions.
It is a fully open source ASIC Bitcoin miner developed by Skot9000, an advocate for open-source innovation in the Bitcoin space.
With all software and hardware specs available on GitHub, this project aims to provide miners with a transparent and accessible platform for Bitcoin mining.
![](https://m.stacker.news/47759)
#### **Pros**
1. **Open Source**:
The Bitaxe is fully open source, allowing users to access and modify its source code, hardware designs, and build gerbers for PCB ordering.
2. **Low Cost**:
Bitaxe offers low-cost solutions for miners, making it an attractive option for those looking to enter the world of Bitcoin mining without breaking the bank.
3. **Efficient**:
The Bitaxe series is designed to be power-efficient, utilizing either the Bitmain BM1387 or BM1397 ASICs for SHA256 hashing.
#### **Cons**
1. **Technical Complexity**: Being an open-source project, users are required to be technically savvy to set up and maintain the miner, which could pose challenges for those without experience.
3. **Bricking Potential**:
Like any complex technology, there is a risk of bricking (rendering the device unusable) the Bitaxe if not handled properly.
#### **Summary**
The Bitaxe represents an exciting development in the world of Bitcoin mining, offering a low cost, efficient, and open-source solution for miners. While it may present some challenges for users who are new to the technology or lack technical expertise, the potential benefits far outweigh these drawbacks. As the project continues to evolve and gain traction, we can expect to see further improvements in performance, accessibility, and innovation within the Bitcoin mining landscape.
#### Where can I get more information
Go to their Github page:
https://github.com/skot/bitaxe
originally posted at https://stacker.news/items/659572
-
![](/static/nostr-icon-purple-64x64.png)
@ f8e6c643:03328ca9
2024-08-23 16:15:50
Quality, authentic, original human artistic expression is always in demand. It has always been in demand, and it will continue to be in demand even beyond the age of AI. The internet today calls it “content.” It is how we seek to encapsulate and communicate ideas more richly, and it comes in various forms including written, audio, and visual.
Anyone who creates content in any form knows that it is time consuming and costly to create and produce good content, especially to do so consistently. However, because of digital distribution methods, once released that content that was so costly to create is suddenly infinitely RE-producible with perfect fidelity for very little cost. The conundrum for artists/creators is that even though the demand for their work exists, and even though that work is costly to create, each final product they produce is infinite in supply as soon as they release it in digital form. Infinity has no value.
Starting with the presumption that demand exists for art, and that it is reasonable for an artist to want to afford things like food, housing, and clothes, how do you make the work of creating content economically sustainable for those creating it? We find value in scarcity, and the scarce resources in the equation of content creation are ultimately the time, talent, and skill of the person doing the creating.
People often want what a particular artist can produce. Perhaps it’s the artist’s skill, style, and precision; or perhaps it’s the artist’s particular interpretation and personality they find valuable. The skill, time, and talent/personality employed to create artistic expressions are valuable, and their supply cannot be easily reproduced/replicated even though the individual manifestations of them (the works of art) can be. This is, ultimately, what creators must figure out how to monetize if they are to make their work economically sustainable.
So how much is an artist’s skill worth? How much is their time or their talent worth? How do you put a price tag on personality? Probably nobody, especially the artist, can really answer that objectively. However, with #value4value the consumers of an artist’s content can subjectively and individually decide for themselves how much it is worth to them.
Nostr and Bitcoin give creators of every type of content the opportunity to directly own and control the distribution and monetization of their time, skill, and talent, more so than any other service or platform on the Internet. The #value4value approach to monetizing that content allows consumers to immediately have access to a creator’s work, and to individually place a subjective value on what it provides to them. The approach allows artists to focus on the work of creating art and building a reputation and relationship with their audience instead of worrying about how to control access to their work. And by using Nostr and Bitcoin, this approach allows artists to be free of the arbitrary rules and manipulation they face on other corporate ad-driven platforms.
If you are a digital content creator, I think #value4value is worth giving a chance. The alternatives are increasingly less promising.
-
![](/static/nostr-icon-purple-64x64.png)
@ e5272de9:a16a102f
2024-08-22 22:16:43
One of the highlights for me at the first day of nostriga [nostriga](https://nostr.world) was a [panel discussion on web of trust](https://www.youtube.com/live/Zv766SV840k?t=8265) with [@Stuart Bowman](nostr:npub1lunaq893u4hmtpvqxpk8hfmtkqmm7ggutdtnc4hyuux2skr4ttcqr827lj), [@Pip the social graph guy](nostr:npub176p7sup477k5738qhxx0hk2n0cty2k5je5uvalzvkvwmw4tltmeqw7vgup), [@PABLOF7z](nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft), [@hzrd149](nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr), and [@ODELL](nostr:npub1qny3tkh0acurzla8x3zy4nhrjz5zd8l9sy9jys09umwng00manysew95gx). This to me is one of the most important topics in all of freedom tech, so I'd like to write up a few thoughts I had while they're still fresh on my mind, most of which revolve around the calculation of trust scores. Apologies if it's a bit long winded, don't seem to have the time to make it shorter.
## What do we use for raw data?
There has been and on again, off again discussion during my time working in nostr over the sources of data that we should be using to calculate trust. In my mind we can think of the raw data as existing on a spectrum between two extremes. On one extreme, we have what I call *proxy indicators* of trust: follows, mutes, zaps, reactions, etc. People don't create this content with trust scores in mind, but we can and do use them as imperfect proxy indicators nontheless. And on the other extreme we have what I call *explicit trust attestations*, exemplified by the [proposed NIP-77](https://github.com/nostr-protocol/nips/pull/1208), authored by [Lez](nostr:npub1elta7cneng3w8p9y4dw633qzdjr4kyvaparuyuttyrx6e8xp7xnq32cume), the heart and soul of which is that a fully explicit contextual trust attestation should have 3 fields: a context, a score, and a confidence. You fill in these fields, you say what you mean, and you mean what you say, leaving as little room for interpretation as possible. And then there is data that's in between these two extremes. A five star rating for a host on a couchsurfing platform or a vendor on an ecommerce site? A "superfollow" option in addition to a follow? These lie somewhere on the spectrum between proxy indicators on one end and explicit attestations of trust on the other.
During the panel today, Pablo and pippellia expressed the opinion that explicit trust attestations are not the way to go. Two reasons that I recall: first, that no one wants to put an exact number to trust; and second, that no one will update those numbers even if their assessment changes. These critiques have some merit to them. But I believe they miss the bigger picture.
# The bigger picture
In the real world, there are two ways I can communicate trust: I can SHOW you, or I can TELL you. I can *demonstrate trust through the actions that I take*, such as following someone, or I can just straight up tell you that I trust someone in some context.
So here's the question: on nostr, which is the correct method to communicate trust? Proxy indicators, or explicit attestations? Do we SHOW or do we TELL?
![](https://image.nostr.build/57acb261efc52bce2c88325bf9998be19faab5748fb4f99fb7c3dd6e26dbc738.png)
My view is that we don't have to pick. We have to use all relevant and available raw data across the entire spectrum from one extreme to the other.
![](https://image.nostr.build/8ad6ff044f13b8c79dd795c236f8f4b1fa95903ba1cca7e3f976de30de26990e.png)
Each of these two options has its advantages and its disadvantages. The advantage of proxy indicators is that users issue them freely and easily, the result being that we are awash in a sea of data. The primary disadvantage of proxy indicators is that they often don't mean what we want them to mean. If Alice follows Bob, does that mean she trusts him? Maybe. Or maybe not. More often not. And what about context? Do we have any way of knowing?
So we use proxy indicators as a trust indicators because ... if it's the best or maybe even the only data we have, what else are we gonna do?
To do better, I argue that we need to give users more options when it comes to issuing explicit indicators of trust. But of course they're not going to do that without a reason. So to give them a reason, we have to figure out *ahead of time* how we're going to use the data once it's available. We have to know how to incorporate explicit trust indicators into our web of trust calculations. For the sake of argument, let's assume that we have a large dataset of proxy trust indicators (SHOW ME data) plus a small but nontrivial dataset with explicit trust attestations (TELL ME data). What we want to do is to pool *all available relevant data together* when we calculate trust scores. But how exactly do we do that? Which brings me to my next topic.
## The calculation of trust scores
How are we even calculating the "web of trust scores" that we see today? Wikifreedia, Coracle, and a growing list of other clients have such scores. I wish I had seen more discussion in today's panel about HOW these calculation are performed. To the best of my knowledge, most clients use the same or a similar method: fetch my follows; fetch Bob's followers; calculate the set of users who are in both sets; and count up how many you get. Sometimes adjustments are made, usually a ding based on mutes. But usually, that's it. That's the WoT score.
I'll call this the "legacy WoT score" since it is basically the state of the art in nostr. The legacy WoT score can be a useful way to eliminate bots and bad actors. But it has a few disadvantages: it is, arguably, a bit of a popularity contest. It cannot see more than two hops away on your social graph. It's not very useful to new users who haven't yet built up their follows. And it's not clear how to use it to differentiate trust in different contexts.
It seems strange to me that so many clients use this single method to calculate WoT scores, but with relatively little discussion on the merits of this method as opposed to other methods. Or whether other methods even exist, for that matter.
Indeed, I believe there is another method to calculate trust scores that in most circumstances will turn out to be much more meaningful and useful. For the sake of this article, I will call this the "Grapevine WoT score" to distinguish it from the legacy WoT score. (Elsewhere I have used the phrase "influence score" in place of "Grapevine WoT score.")
The Grapevine method is (currently) based on follows and mutes, but calculated using a method entirely distinct from the legacy method, detailed [here](https://brainstorm.ninja/#/grapevine/influenceScore) (where it is called simply the "influence score"). The Grapevine method has several advantages over the legacy method, but one in particular on the topic of SHOW versus TELL: the Grapevine method can take multiple distinct classes of data following distinct formats and pool them together, synthesizing and distilling them into a single Grapevine WoT score. By choosing different datasets, different scores corresponding to different contexts can be generated.
## The future
So here's my prediction on how the future will play out.
1. The Grapevine method of trust score calculation is going to rely -- at first -- primarily on proxy indicators of trust (follows, mutes, zaps, reactions, etc) -- SHOW ME data -- because that’s the data that’s available to us in large quantities.
2. These contextual Grapevine scores will turn out to be surprisingly useful.
3. *People will learn to game the scores by changing their behavior.*
5. Consumers of trust data will gradually discover that SHOW ME data is becoming less and less reliable.
6. Authors of raw trust data will gradually learn that if they want their voices to be heard, they will need to communicate trust more explicitly. In ways that are harder to game. They will begin to move the needle ever so gradually towards TELL ME data.
7. Over time, larger datasets of TELL ME data will be available for input into Grapevine WoT scores.
8. As SHOW ME data becomes less reliable, and TELL ME data becomes more available, contextual Grapevine WoT scores will become more fine grained in terms of context and more reliable.
Of course, none of this will happen unless and until we start calculating Grapevine WoT scores and putting them to good use. To that end, several of us are working on the generation of these scores at [brainSToRm](https://brainstorm.ninja). Right now, it's a slog to download the data to the browser. But we're working on improving the UX. And if you make it through the slog, you can export a NIP-51 list of the top-scoring pubkeys, minus the ones you're already following, and use them at clients like Amethyst or Coracle to generate a feed of content coming from the most highly "trusted" users whom you're not already following. A feed that is CUSTOMIZED by YOUR Grapevine.
So there you have it, my defense of explicit trust attestations.
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-22 22:06:11
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/E2sc9PK2RWg" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-22 22:06:00
```js
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(uuid())
pubkey String @unique
username String? @unique
avatar String?
purchased Purchase[]
courses Course[]
resources Resource[]
courseDrafts CourseDraft[]
drafts Draft[]
role Role? @relation(fields: [roleId], references: [id])
roleId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Role {
id String @id @default(uuid())
subscribed Boolean @default(false)
users User[]
}
model Purchase {
id String @id @default(uuid())
user User @relation(fields: [userId], references: [id])
userId String
course Course? @relation(fields: [courseId], references: [id])
courseId String?
resource Resource? @relation(fields: [resourceId], references: [id])
resourceId String?
amountPaid Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Course {
id String @id
userId String
user User @relation(fields: [userId], references: [id])
price Int @default(0)
resources Resource[]
purchases Purchase[]
noteId String? @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
courseDraft CourseDraft?
}
model Resource {
id String @id // Client generates UUID
userId String
user User @relation(fields: [userId], references: [id])
course Course? @relation(fields: [courseId], references: [id])
courseId String?
courseDraft CourseDraft? @relation(fields: [courseDraftId], references: [id])
courseDraftId String?
price Int @default(0)
purchases Purchase[]
noteId String? @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Draft {
id String @id @default(uuid())
userId String
user User @relation(fields: [userId], references: [id])
type String
title String
summary String
content String
image String?
price Int? @default(0)
topics String[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
courseDraft CourseDraft? @relation(fields: [courseDraftId], references: [id])
courseDraftId String?
}
model CourseDraft {
id String @id @default(uuid())
userId String
user User @relation(fields: [userId], references: [id])
resources Resource[]
drafts Draft[]
title String
summary String
image String?
price Int? @default(0)
topics String[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
course Course? @relation(fields: [courseId], references: [id])
courseId String? @unique
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-21 21:37:35
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/NR_2KJZi3Ac" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-21 21:37:35
# hello world
-
![](/static/nostr-icon-purple-64x64.png)
@ a005da43:e6bf3b09
2024-08-21 19:56:24
fdsafdsafdsafdsa
originally posted at https://stacker.news/items/459392
-
![](/static/nostr-icon-purple-64x64.png)
@ a005da43:e6bf3b09
2024-08-21 19:55:23
fsdafdsafdsa
originally posted at https://stacker.news/items/459391
-
![](/static/nostr-icon-purple-64x64.png)
@ a005da43:e6bf3b09
2024-08-21 19:48:24
fsdafdsafdsa
originally posted at https://stacker.news/items/459390
-
![](/static/nostr-icon-purple-64x64.png)
@ a005da43:e6bf3b09
2024-08-21 19:47:26
fsdafdsafdsa
originally posted at https://stacker.news/items/459389
-
![](/static/nostr-icon-purple-64x64.png)
@ e968e50b:db2a803a
2024-08-21 19:15:09
[STACKERMAN](https://stackerman.onrender.com/)
![](https://m.stacker.news/47337)
Hey, I just did this [tutorial](https://zbd.dev/courses/build-bitcoin-game) that ZBD made to teach you how to integrate their api into games. This one is obviously just me trying a little harder to get sued by sn. Soon though...I'm going to see if I can actually make a pro game! Woot!
In the meantime, [tear down that paywall](https://www.youtube.com/watch?v=WX00QkvK-mQ) and get some sats playing [STACKERMAN](https://stackerman.onrender.com/). You can play as a rootin' tootin' cowboy or a node runnin' educatin' swearin' up a storm space wizard. Of course, the npcs are the feds.
![](https://m.stacker.news/47340)
Tag me if the account runs out of sats and I'll try to top it off. I'm hoping that the paywall can cover the payouts though. Also note that you need at least 10 sats to cash out.
originally posted at https://stacker.news/items/657266
-
![](/static/nostr-icon-purple-64x64.png)
@ ec09d831:42c80ce4
2024-08-21 17:27:14
## Nostr Nedir?
Nostr, “**N**otes and **O**ther **S**tuff **T**ransmitted by **R**elays” (Notlar ve Röle ile İletilen Diğer Şeyler) anlamına gelir. HTTP veya TCP-IP gibi, Nostr da bir “protokoldür”; herkesin üzerine bir şeyler inşa edebileceği açık bir standarttır. Nostr’ın kendisi kaydolduğunuz bir uygulama veya hizmet değildir. Nostr basitlik ve elverişlilik amacıyla tasarlanmıştır ve web üzerinde sansüre dirençli ve küresel olarak desentralize (dağıtık) yayıncılık ve iletişim imkânı sağlar. Bunu biraz açalım:
### Basitlik
Protokol, çok basit ve esnek olan “Event” nesnelerine (bunlar düz JSON formatında aktarılır) dayanır ve anahtarlar ve imzalama için standart açık anahtarlı kriptografi (public-key cryptography) kullanır. Bu, röleleri çalıştırmayı ve istemciler oluşturmayı kolaylaştırır ve protokolün zaman içinde genişletilebilmesini sağlar.
### Esneklik
Nostr, veri taşımak veya depolamak için tek bir yerde toplanmış az sayıdaki güvenilir sunucuya bağımlı olmadığından ötürü çok dayanıklıdır. Protokol, rölelerin kaybolacağını varsayar ve kullanıcıların zaman içinde değiştirebilecekleri rastgele sayıda röleye bağlanmasına ve yayın yapmasına olanak tanır. Bu esneklik gönderilerinizin üzerinde hiçbir kısıtlama ve sansür olmamasını da sağlar. Bir keresinde 15 bin harflik bir makaleyi bile görsel materyaller ve köprü linklerle süsleyerek paylaşabilmiştim.
### Doğrulanabilirlik
Nostr hesapları açık anahtar kriptografisine dayandığından, mesajların gerçekten söz konusu kullanıcı tarafından gönderildiğini doğrulamak kolaydır. Bu sayede bot ve troll kalabalığı da yoktur ve küçük bir ihtimal de olsa Nostr'a gelirlerse bunları ortadan kaldırmak gayet kolaydır.
### Anahtarları Anlamak
Her Nostr hesabı bir açık/özel anahtar (public/private key) çiftine dayanır. Bunu anlamanın basit bir yolu, açık anahtarınızın kullanıcı adınız ve özel anahtarınızın ise parolanız olduğunu düşünmektir. Parolaların aksine, özel anahtarınız kaybolduğunda sıfırlanamaz veya değiştirilemezlerdir. Anlaşılır olmak adına tekrar söyleyeyim: Özel anahtarınızı kaybederseniz Nostr hesabınız kaybolur. Başka bir kişi özel anahtarınıza erişim sağlarsa, hesabınızın kontrolünü ele geçirebilir. Özel anahtarınızı bir şifre yöneticisi (1Password’ü veya Brave Tarayıcı’yı öneririm) veya Alby gibi bir tarayıcı uzantısında güvenle sakladığınızdan emin olun.
### Protokol vs İstemci
Nostr’un kendisi sadece bir protokoldür, yani mesajları ve yayınları internet üzerinde dolaştırmak için üzerinde anlaşılmış bir prosedürdür; Facebook, Twitter, Instagram, YouTube gibi sansürcü, merkeziyetçi, spam ve reklam dolu boktan bir “platform” değildir. Bu yüzden Nostr’a (protokole) bir istemci aracılığıyla erişmeniz gerekir. Bu istemciler web, masaüstü veya mobil uygulamalar şeklinde olabilir. Bazı Nostr istemcileri özel anahtarınızı yapıştırarak oturum açmanıza izin verir. Web’de bu genellikle önerilmez, zira rahatsız edici ve güvensizdir. Bunun yerine, tarayıcınızda özel anahtarları güvenli bir şekilde yönetmek ve Event’leri kriptografik olarak imzalamak için özel olarak tasarlanmış bir yazılım parçası olan bir imzalama uzantısı kullanmanızı öneririm. Bu konuda Alby, Nostr için yerleşik desteğe sahip popüler bir imzalama uzantısı ve Bitcoin Lightning Network cüzdanıdır. Yeni kullanıcılar için harika bir seçenektir. Alby’nin kurulumunu aşağıda gerekli olduğu yerlerde istemciye özel kılavuzda ele alacağım.
İşte birkaç farklı istemci ve kullanılabildikleri işletim sistemleri:
[Amethyst](https://play.google.com/store/apps/details?id=com.vitorpamplona.amethyst) (Android) [Benim favorim.]
[Primal](https://primal.net/) (Web, iOS, Android) [Mobil cihazlarda yerleşik Bitcoin Lightning Network cüzdanı ile kullanıcı dostu istemci.]
[Snort](https://snort.social/) (Web) [Temiz ve hızlı web istemcisi.]
[Coracle](https://coracle.social/) (Web) [Röle navigasyonuna odaklanan bir istemci.]
[Habla](https://habla.news/) (Web) [Kolay blog yaratımı.]
[Highlighter](https://highlighter.com/) (Web) [Blog yaratımı ve bloglarda gezerken işaretleme-alıntılama için uygun arayüze sahip istemci.]
[Iris](https://iris.to/) (Web) [Ücretsiz NIP-05 doğrulama sağlayan istemci.]
[Damus](https://damus.io/) (iOS) [Apple cihazlarına özel aplikasyon istemci.]
Amethyst Android istemcisi ile Nostr kullanmaya başlamak için adım adım kılavuz
#### Adım 1: Uygulama yükleme
* Android telefonların aplikasyon mağazası olan Google Play Store’dan Amethyst uygulamasını yükleyin: https://play.google.com/store/apps/details?id=com.vitorpamplona.amethyst
* Uygulamayı açtığınızda, yeni bir hesap oluşturma veya daha önce oluşturduğunuz bir özel anahtarla giriş yapma seçeneğiniz olacaktır.
* Alby uzantısı veya başka bir istemci aracılığıyla zaten bir özel anahtar oluşturduysanız, kullanım koşullarını okuyup kabul edebilir, (npub/nsec) bilgilerinizi girebilir ve “Login” (Giriş Yap) düğmesine tıklayabilirsiniz.
* Eğer bunlar yoksa, “Generate a new key” (Yeni bir anahtar oluştur) seçeneğine tıklayın.
#### Adım 2: Yeni bir hesap oluşturma ve onun ayarlarını yapma
* “Terms of Use” (Kullanım Koşulları) bölümünü okuyun ve kutuyu işaretleyin.
* “Generate a new key” (Yeni bir anahtar oluştur) seçeneğine tıklayın.
* Tebrikler, az önce yeni bir Nostr kimliği oluşturdunuz!
* Ana ekrana yönlendirilecek ve “Feed is empty. Refresh” (Akış boş, yenileyin) mesajıyla karşılaşacaksınız, çünkü henüz başka bir hesabı takip etmiyorsunuz. Bunu daha sonra halledeceğiz.
* Son bir aşırı önemli adım kaldı. Özel anahtarınızı güvenli bir yerde saklamalısınız. Bunu yapmak için, şu anda profil resminiz olarak görünen sol üst köşedeki garip görünümlü robot simgesine tıklayın. Bir kenar çubuğu açılacaktır.
* “Backup Keys” (Yedek Anahtarlar) kısmına gidin ve “Copy my secret key” (Gizli anahtarımı kopyala) seçeneğine tıklayın.
* “Nsec” ibaresiyle başlayan gizli anahtarınız artık akıllı telefonunuzun panosundadır, bunu ÇOK güvenli bir yerde veya bir .txt uzantılı belgede yapıştırıp saklamak en iyisidir.
* Şimdi hesabınızı oluşturmaya devam edebilirsiniz. Ana ekranın sol üst köşesindeki profil resminize geri dönün ve “Profile” (Profil) bölümüne gidin. Buradan, “Follow” (Takip Et) seçeneğinin solundaki üç çizgi ve kalemin bulunduğu simgeye tıklayın. Profil ayarlarınızı buradan yapabilirsiniz.
* “Display Name” (Görüntülenecek Ad) bölümüne yazacağınız şey nick’iniz olacaktır.
* “About me” küçük bir biyografi bölümüdür ve harf sınırı yoktur.
* “Avatar URL” ve “Banner URL” kutularının içinde, solda görsel yükleme simgeleri vardır. Burada profil resminiz ve banner’ınız hakkında ne yapabileceğinizi bilirsiniz.
* “Nostr Address” ve “LN Address” kutuları için şöyle bir süreç işliyor: Eğer bir Alby hesabı edinebildiyseniz (şu an üye alımı sadece Alby geliştiricilerine getalby.com üzerinden yollanacak bir mektubun ardından gelebilecek davetiye kodu sayesinde mümkün) “@getalby.com” uzantılı adresinizi bu kutuların ikisini de yazmalısınızdır. Bu sayede hem hesabınızın size özgün ve gerçek olduğu (diğer bir deyişle, bot olmadığınız) anlaşılmış olur hem de gönderilerinize beğeni veya bağış maksatlı yollanan Bitcoin Satoshi’lerinin birikmesi için (ve sizin de başkalarına yollayabilmeniz, yani Zap yapabilmeniz için) bir Lightning Network sıcak cüzdanı adresi tesis etmiş olursunuz. Alby hesabı edinme konusunda -ki bence Alby çok önemli- yardımcı olmamı isterseniz iletişime geçmekten çekinmeyin.
* Tamamdır, hesabınız artık hazır, şimdi akışınızı dolduralım ve diğer insanları takip edelim: Sağ üst köşedeki büyüteç simgeli arama butonuna tıklayın ve tanıdığınız kişilerin hesaplarını arayın ya da sol alttaki ev simgesine tıklayarak gideceğiniz ana ekrandaki “All Follows” butonuna tıklayın ve “Global”i seçin. Şimdi bağlı rölelerinize gönderilen tüm notları göreceksinizdir. Eğer bunalmış hissediyorsanız, endişelenmeyin, zamanla burada yeni birçok ilginç Nostr kullanıcısı bulabileceksinizdir. Sadece bir deneyin.
#### Adım 3: Röleler ve Geniş Çaplı Erişim/Yayın
Yeni röleler ekleyerek erişiminizi ve görünürlüğünüzü artırabilirsiniz. Bunun için yapmanız gereken aşağıda listeleyeceğim röleleri hesabınıza entegre etmektir. Röle entegrasyonu için öncelikle sol üstteki profil resminize tıkladığınızda açılan menüde “Relays” bölümüne giriyorsunuz. Burada, en aşağıda “Add Relay” yazan kutucuğa oluşturduğum listedeki röle adreslerini tek tek girip “Add” butonuna tıklıyorsunuz. İstediğiniz kadar röle ekleyebilirsiniz, tamamen size kalmış. Bu iş bitince mutlaka sağ üstteki “Save” butonuna tıklayın.
Ayrıca kişisel bilgisayarınızdan Coracle adlı Nostr istemcisine girerek de rölelere kolaylıkla bağlanabilirsiniz. Tek yapmanız gereken Coracle’da Nostr hesabınıza Nsec anahtarınızla giriş yapmak ve sol kenar menüdeki “Relays” bölümünü açıp listelendiğini gördüğünüz her bir rölenin sağındaki “Join” butonuna tıklamaktır.
Röle listesi:
140.f7z.io
astral.ninja
bevo.nostr1.com
bitcoiner.social
brb.io
carnivore-diet-relay.denizenid.com
eu.purplerelay.com
expensive-relay.fiatjaf.com
feeds.nostr.band/popular
fiatjaf.com
n.wingu.se
nos.lol
nostr-pub.semisol.dev
nostr-relay.wlvs.space
nostr.21l.st
nostr.band
nostr.bitcoiner.social
nostr.blipme.app
nostr.kollider.xyz
nostr.liberty.fans
nostr.mutinywallet.com
nostr.orangepill.dev
nostr.pleb.network
nostr.plebchain.org
nostr.relayer.se
nostr.satoshi.fun
nostr.walletofsatoshi.com
nostr.yuv.al
nostr.zbd.gg
nostr.zebedee.cloud
nostr.zerofiat.world
nostr1.tunnelsats.com
nostream.denizenid.com
nostria.space
offchain.pub
purplepag.es
pyramid.fiatjaf.com
relay.0xchat.com
relay.benthecarman.com
relay.bitcoinpark.com
relay.current.fyi
relay.damus.io
relay.f7z.io
relay.geyser.fund
relay.mutinywallet.com
relay.nostr.band
relay.nostr.bg
relay.nostr.net
relay.nostr3.io
relay.nostrati.com
relay.nostrplebs.com
relay.orangepill.dev
relay.plebstr.com
relay.primal.net
relay.snort.band
relay.snort.social
relay.utxo.one
relayable.org
relayer.fiatjaf.com
satstacker.cloud
snort.social
soloco.nl
sound-money-relay.denizenid.com
![](https://image.nostr.build/4cf5a48eefa5b552642e8f0bb1e4effd7085af876ce311dd8ed6f3a0df5735c0.jpg)
**Önemli:** Özel anahtarınız yerel olarak (mobil cihazınızda veya bilgisayarlarınızda) saklanır ve Amethyst sunucuları veya Snort, Iris, Primal, Coracle gibi diğer tüm Nostr istemcileri tarafından hiçbir şekilde toplanmaz veya saklanmaz, zira Nostr’ın olayı budur, yani desentralizasyon protokolü.
Zamanla internetin kurtarıcısı olacak bu öze dönüş gücüne sahip sosyal ağda beni ve arkadaşlarımı takip etmeyi ve bizim takip ettiğimiz kişilerden kimleri bulabileceğinizi kurcalamayı unutmayın:
Kaan: nostr:npub1asyasvv6vhkuk44ttczsz2v0xvp3c6ze9xqrg9n97n6mkskgpnjqmdugs9
Satoshi Nakamoto Enstitüsü Türkiye: nostr:npub1fdv8r32dqehlkxfnq3uld67vq8t46jw5jvzkk0h6rl4hyvd8g76qf7ujf6
Ludwig von Mises Enstitüsü Türkiye: nostr:npub1gfytsf2p5kw2c42032fkt845x8gh00e027nwnn3pr5880yy954qq4wqlqm
Efe Bitcoin: nostr:npub193h05grv6ykgqc94memmlppqe2wlclukpfl8g5750w8gr3002zasl7ngwj
Şükrü Day: nostr:npub1gw3zhc5r5a7jfgl6yx8qv0nc9kset5ddkrka229c3tym5xltehlq58m7mm
Emir Yorulmaz: nostr:npub1mmfakwg4s36235wlav6qpe03cgr038gujn2hnsvwk2ne49gzqslqc6xvtp
Hasan Tahsin: nostr:npub19zc3ja6jme9ul84sfmgyf5z96a07m6x9dp2jngl5zhwryku9aynsy89q3u
Ufuk: nostr:npub19mz7c6jesdczvlumhpzqekqh9v93w0whup73mu3x2v6jv97lfujq79nqu3
Furkan Arda: nostr:npub1z43kexnw7wxd22ystexyhgf0s7lzsqzfaxv5xvlk9sgspkfzdyps039jv6
Kaancap: nostr:npub14t06hns8wmymynccmcer7sp6y3eql7pjyzwcp0u5rk88sv7vt2rqrl4wte
Yankı Guapmann: nostr:npub19z5m92x8jlltva7zj47z9ydxle8ddkw8y3k5e8xnrphu724v9lys5wxt3p
Arda Uludağ: nostr:npub1puclr9p6yhel2duzask9wfdah0ux5cppw22uz62c0w9cdj3nv0wseuvedh
Musab Babayiğit: nostr:npub1euf7xgdws7n62nwv03fhu82ak24xrka7hedathyuyq9hmhcjxs7sfvwjsn
Kadir: nostr:npub18589me8hqqmt5ect7hjz5k6d2srxzere0uc975gq7hldp9v3qpkslxjn7p
Çınar: nostr:npub12mwsgqaejk98xcsv8k7rf3yat2t2kzu0zzma6jp39rphqx5hajsq4khdeg
Nur Parrhesia: nostr:npub16nnuyfrxguumqdt8xerkkhtgjyxa7qyvfnz4r4ameanqp4aggarqm877qw
Ömer Agâh: nostr:npub1eeze28u72zfa8hl8kfkfnl4jwfe07zsrukug237rsjre7wnvzlrsl49u8h
Korporatist Mağduru: nostr:npub1337wmdvjtxrne5fxrqtc7re8rtj88wnnnsfg562jg39sx2k9p5lqwcjsfh
Alfred: nostr:npub1mdyegp38ahjcpje7ugzmt4ylugrk3hfmwm9tqq72jhdg3ykc4ahs8svgs8
Sefa Uzuner: nostr:npub1ce0khypkfrjxga6umfd82fhtg9xldm583mys4pkvg8zex20gls9s9qrrgj
![](https://image.nostr.build/26007a84e5980f27a4fb421cf1806877558814111caec26e066ca9c40841442c.png)
-
![](/static/nostr-icon-purple-64x64.png)
@ 6ad3e2a3:c90b7740
2024-08-21 16:33:27
When I used to pick NFL games against the spread for [RotoWire](https://www.rotowire.com/), I would joke after a bad week that my picks were perfect, but it was the games that got themselves wrong.
I’ve touched on this concept quite a bit here too — [But My Process Was Good](https://www.chrisliss.com/p/but-my-process-was-good) and [Why Blake Snell Should Win The NL Cy Young Award This Year](https://www.realmansports.com/p/why-blake-snell-should-win-the-nl) both highlight the category error of speciously applying tools of prediction toward the past. Tldr: the past is in no need of predicting because it already happened.
The error stems in part from mistaking the map for the territory — once the forecasts are substituted for reality itself, the future has already happened, so to speak — it’s right there on the spread sheet! — so it is no different than the past which has also already happened. So any tool that can be applied to the future can equally be applied to the past.
This is how we get [Sam Harris arguing that mRNA shot mandates were correct](https://x.com/KanekoaTheGreat/status/1615951624882782209?s=20) because covid *could have been* more deadly (and implicitly that the shots could have been safe and effective.) It’s one thing to model a possible future (with the requisite humility your forecasts might be off base), and quite another to force your failed model onto past events as though they were still in any doubt.
If this is confusing, that’s because a lot of us have been so trained to think this way we don’t even notice we’re doing it. Examples are legion where we identify what we deem an optimal process to achieve a desired result, then substitute that process for that result.
If the local police department believes it needs to arrest 50 people per month to reduce violent crime and incentivizes its officers to make those arrests, pretty soon arrests will be the goal, and people will get arrested for more and more non-violent offenses to make the quota.
If mass-vaccination is believed to be the key to good public health policy, then authorities will incentivize uptake, disincentivize bodily autonomy and not care one bit whether a person had prior immunity from the virus already, if the injection actually stops the spread or has myriad serious side effects. If the result (public health) were still the goal, the idea of forcing someone with natural immunity to inject himself with an experimental technology [would be ludicrous](https://x.com/goddeketal/status/1708104013936222641?s=20). But once the goal shifted to the process (mass vaccination), it made perfect sense.
Once we substitute the process by which we achieve something for the achievement itself (which might temporarily be sound, if you’re, say, training for a marathon), we create distortions in our thought processes and policies.
But I want to go back to where the bait and switch of process and result gets most absurd, and that’s when it comes to time. In this case, you’re not arresting jaywalkers to make your quota, you’re lamenting that had jaywalking correlated better with domestic violence, your policy would have been the correct one.
In other words, you’re not only substituting the process for the result in a forward-looking way, you are doing so even though you now have complete access to the result because it has already happened. And yet you are still grasping via your spread sheet for some other reality that might have been!
You do not need to forecast events that have already happened. The probability of the Chiefs winning the Super Bowl last year is 100 percent. We no longer need your tools to tell us how much to bet on them. The game is over, and whatever we believed the probability to have been before the fact is irrelevant.
That’s why I wrote about [Blake Snell’s Cy Young Award case](https://www.realmansports.com/p/why-blake-snell-should-win-the-nl) — despite Snell allowing 42 percent fewer runs on his watch than Spencer Strider — people are still arguing for Strider because the way Strider pitched *portended* fewer runs allowed than Snell. It is not enough for them that the results (runs allowed) are already in. They argue that because Strider’s profile forecasts a better result than Snell’s, Strider should win. Or, put differently, had we simulated 1000 seasons for each, Strider’s would on average be better. They are upset Snell got “lucky” as though reality must be stripped of all the effects for which we can’t attribute to particular causes and normalized in order to fit our model.
. . .
Mistaking the past for the future is one form of this category error, but it can also happen in reverse wherein one mistakes the future for the past. You see it when people treat future events at fait accompli and proceed as such. The notion of talking past the sale, e.g., if the car salesman says: “You’ll love this car and be thanking yourself for saving so much money on gas!” he’s treating your possible future agreement on a price as something that’s already happened.
People also do this to avoid responsibility, pretending as though there’s nothing one can do about some injustice or that it’s too late to make amends for wrongdoing. They think and talk about the future as though it’s the past.
When our dog Oscar got poisoned from a particular kind of caterpillar ([Largata do Pinheiro](https://www.setubalambiente.pt/lagarta-do-pinheiro/)) last winter, we brought him to the hospital with his tongue swelling so much it was stuck outside his mouth. The hospital treated him for a day, saying they could only wait and see, and he might lose his tongue (to necrosis) and have to get put down.
We could have taken their approach of it not being in our hands, but instead we convinced them to let us break him out and took him to our holistic vet who sedated him, drained his salivary gland, massaged the tongue extensively with ozone and anti-bacterial herbs and sent him home with us that evening.
[Oscar](https://njump.me/nevent1qqst6clec39drun4k97xyqy4ln06t9uc9g09fpa5fg5zruee3hvw8mszyzyujjulkrquksyekd5dkv6hdzv2n5zjstv3thywa844gtl4qplksqcyqqqqqqgpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3vamnwvaz7tmzw33ju6mvv4hxgct6w5hxxmmdqyxhwumn8ghj7mn0wvhxcmmvqyt8wumn8ghj7un9d3shjtnwdaehgu3wvfskueqt46763) who is passed out on the sofa next to me as I type this, only lost about 10 percent of the tongue, but otherwise made a full recovery.
. . .
I’m not sure why people so easily mistake cause for effect, process for results, future for past and vice-versa. If I had to speculate I’d say when our emotions get involved, we go from logical thinking to association, and associations work in both directions — effects and causes are associated without regard for which is which.
The modus operandi of most advertising (and propaganda) is to seed associations in your mind between things it wants you to associate — it’s certainly not to convince you rationally which is a much more difficult task. Maybe the influencers, marketers and propagandists have simply found an angle they can exploit. Once those associations take hold, they can be powerful, and often no amount of rational argument will un-cement them.
But I think that’s only part of the story. The other part is how most of us have been educated, and that's to focus on process not results. To be “process-oriented” not stuck in “results-based thinking.” This is a mark of erudition, of belonging to a certain class of people who have mastered this lesson. The class who trusts in modelers, forecasters and data-scientists waiting at the ready to be of service to The Science, even if it means treating the future as though it’s already happened and the past as though it can be re-forecast according to their models, conjugating reality, as it were, in the wrong tense.
-
![](/static/nostr-icon-purple-64x64.png)
@ 5d4b6c8d:8a1c1ee3
2024-08-21 15:29:03
I had something of an epiphany recently about needing to work for a cause I believe in, rather than just fiat mining. I was up all night thinking about the right fit and what my value proposition is.
You all have helped me realize that there's real interest in my perspective (thank you), so that's part of the proposition.
I was also reflecting on how limited the presence of most prominent libertarians is in the bitcoin ecosystem, despite the immense interest in their insights. That made me realize I can make at least a two-fold impact for a libertarian/free-market organization: my own content and integrating them into the bitcoin community.
This is the first draft of a letter I'm planning on sending to the Libertarian Institute, which is run by the great Scott Horton. I'd love your feedback on this letter. The aim of it is simply to pique their interest and generate a follow up conversation.
As it happens, the Libertarian Institute is based in Austin, so perhaps this will enable me to drop in on the SN HQ occasionally.
----------
Dear Libertarian Institute,
I'm reaching out to express my interest in joining your amazing institute. I’ve been following Scott’s work since 2007 and deeply admired the late Will Grigg’s articles. I believe I can add to the impressive scholarship you're already doing, while also helping you reach an audience that is very interested in your work and opening new fundraising opportunities.
I finished my economics PhD during the pandemic. Like most new graduates, I took what work was available, but now I’m looking to dedicate myself to spreading libertarianism and sound economics full-time. Some of my interests are economic geography (voting with your feet, jurisdictional arbitrage, secession, etc), political polarization, parallel institutions, bitcoin, and climate science. My academic training and research in those areas would give the Libertarian Institute another person to dissect the relentless stream of propaganda that comes out on those and other topics.
For my own sanity, I've been writing about libertarianism and economics at Stacker News, on the side, for the past couple of years. The positive reception to Rothbardian libertarianism and economics there has made me realize that our ideological camp is missing out on some low-hanging fruit. This site is part of the bitcoin ecosystem, where demand for Austro-libertarian thought is very high, but our scholars have a very limited presence.
I’ve found bitcoiners to be eager and willing to donate to those who are adding value in their spaces. I can help the Libertarian Institute establish itself as one of the intellectual pillars in this emerging libertarian community, both through my own contributions and by making your existing scholarship more visible there, as well as setting up the necessary technology to receive bitcoin donations and interact with their social media spaces.
I wish you all the very best. Thank you for your work. Hopefully, I'll have a chance to continue this discussion with you soon.
Sincerely,
Undisciplined (not how I plan to sign the real letter)
originally posted at https://stacker.news/items/657036
-
![](/static/nostr-icon-purple-64x64.png)
@ 25191283:a4823315
2024-08-21 13:37:49
This is Olive Grove Eggs, a brand new site from Huevos del Olivar that's just getting started. Things will be up and running here shortly, but you can [subscribe](#/portal/) in the meantime if you'd like to stay up to date and receive emails when new content is published!
-
![](/static/nostr-icon-purple-64x64.png)
@ eed76ece:afa98124
2024-08-21 09:28:39
เราขายส่ง ผลิต นำเข้า ส่งออก:
เสื้อเชิ้ตผู้ชาย 100% Cotton
ผ้าซารองชายหาด ไซส์เต็ม ไม่มีชายระบาย
หมวกเบสบอล 100% Cotton สไตล์แผง สายปรับได้
ปริมาณสั่งซื้อขั้นต่ำ 72 ชิ้น สินค้าคละประเภท
การขนส่งทางอากาศระหว่างประเทศ
DHL, FedEx, United Parcel Service
ตัวแทน ตัวแทนจำหน่าย ผู้จัดจำหน่าย ผู้นำเข้า ผู้ส่งออก ผู้ขายต่อ ผู้ค้า ผู้ค้าส่ง โดยเฉพาะใน
กัมพูชา: พนมเปญ เสียมเรียบ
ลาว: ตาโลตเซา เวียงจันทน์
ประเทศไทย: กรุงเทพฯ เชียงใหม่ พัทยา
สหรัฐอาหรับเอมิเรตส์ ดูไบ
เวียดนาม: ดานัง ฮานอย
กรุณาถามหาฉัน ริช
LINE @ Globalmerchant
https://globalmerchant.io/pages/thailand
originally posted at https://stacker.news/items/656681
-
![](/static/nostr-icon-purple-64x64.png)
@ eed76ece:afa98124
2024-08-21 09:10:52
Ho Aloha Brand
Men's 100% Rayon Shirts.
Harmon code: 6205.30
Origin: Bangladesh.
Individually packed in clear re-sealable plastic bags.
Unit price prox 20,000 SATS each F.O.B. Honolulu.
Shipped DAP, via DHL, FedEx, Yamato Transport, United Parcel Service.
Payment: Discuss.
Link to website: https://www.hoalohawear.com
Agents, Importers, Re-Sellers, Wholesalers contact: Rich
originally posted at https://stacker.news/items/656675
-
![](/static/nostr-icon-purple-64x64.png)
@ eed76ece:afa98124
2024-08-21 08:53:52
The two top best selling Hawaiian print hats back in stock.
100% Cotton.
Adjustable strap on back.
Adult size.
Origin: China.
Individually packed in clear re-sealable plastic bags.
Unit price prox 6,300 SATS each C.I.F. destination.
Based on MOQ specials.
Shipping, price includes air shipping Worldwide via DHL, FedEx, United Parcel Service.
Payment: Preferred Payment: Bitcoin.
Link to website: https://globalmerchant.io/products/assorted-hawaiian-themed-hats
Agents, Importers, Re-Sellers, Wholesalers contact: Rich
originally posted at https://stacker.news/items/656651
-
![](/static/nostr-icon-purple-64x64.png)
@ eed76ece:afa98124
2024-08-21 08:38:28
Beach Sarongs 100% printed polyester.
Full Size.
Origin: India.
Individually packed in clear re-sealable plastic bags. 12 pieces per master pack. Both inner and outer packages have barcodes, ready for your point of sale system.
Unit price prox. 6,300 SATS each C.I.F. destination.
Shipping, price includes air shipping Worldwide via DHL, FedEx, United Parcel Service.
Ships from Honolulu.
Payment: Preferred Payment: Bitcoin.
Link to website: https://globalmerchant.io/collections/sarongs
Agents, Importers, Re-Sellers, Wholesalers contact: Rich
originally posted at https://stacker.news/items/656644
-
![](/static/nostr-icon-purple-64x64.png)
@ eed76ece:afa98124
2024-08-21 08:28:31
These best sellers back in stock.
Men's 100% Cotton shirts, woven, NOT knitted.
Short sleeve, Coconut shell buttons, matching pocket, side splits.
Origin: India.
Individually packed in clear re-sealable plastic bags.
Size Range available: Small-3X.
Unit price 17,000 SATS each C.I.F. destination.
Shipping, price includes air shipping Worldwide via DHL, FedEx, United Parcel Service.
Payment: Preferred Payment: Bitcoin.
Link to website: https://globalmerchant.io/collections/mens-cotton-shirts
Agents, Importers, Re-Sellers, Wholesalers contact: Rich
originally posted at https://stacker.news/items/656637
-
![](/static/nostr-icon-purple-64x64.png)
@ eed76ece:afa98124
2024-08-21 08:26:44
These best sellers back in stock.
Men's 100% Cotton shirts, woven, NOT knitted.
Short sleeve, Coconut shell buttons, matching pocket, side splits.
Origin: India.
Individually packed in clear re-sealable plastic bags.
Size Range available: Small-3X.
Unit price 17,000 SATS each C.I.F. destination.
Shipping, price includes air shipping Worldwide via DHL, FedEx, United Parcel Service.
Payment: Preferred Payment: Bitcoin.
Link to website: https://globalmerchant.io/collections/mens-cotton-shirts
Agents, Importers, Re-Sellers, Wholesalers contact: Rich
originally posted at https://stacker.news/items/656636
-
![](/static/nostr-icon-purple-64x64.png)
@ 9dd283b1:cf9b6beb
2024-08-21 07:01:29
Yesterday, my daughter and I decided to play Monopoly, but instead of using Monopoly money, I thought it would be fun to use sats instead! Here’s how it went.
Preparation:
Here’s how I set up the game:
1 Zeus wallet connected to my node, with an open channel to WoS.
2 WoS wallets (1 for me and 1 for my daughter), each with a 0 balance to start.
Originally, I considered using Blink wallets, but the problem with Blink is that it displays the balance in EUR in a large font, while the sats balance is smaller. This isn’t ideal when you're playing Monopoly and want to treat 1 sat = 1 Monopoly dollar. So, we switched to WoS, where the sats balance is prominently displayed, with the EUR balance in a smaller font underneath.
In our version of Monopoly, each player starts with 1500 Monopoly dollars and earns 200 when passing GO. It was easy to follow this system using sats.
I installed WoS on my daughter’s phone and transferred 1500 sats from my Zeus wallet to her WoS wallet. I did the same for myself, so we both had a 1500 sat starting balance. I used Zeus as the "bank" and WoS as my player wallet on the same phone, but if you have an extra device or don’t trust the bank, you can separate them.
And yes, I know you can go fully non-custodial by setting up LNBits with Umbrel and using Blue Wallet on separate devices for each family member. However, that takes longer to set up, requires VPN connections for everyone, and seemed unnecessary for our casual game. In my setup, only the bank needed a VPN, which was simple and only took about 5 minutes.
Game:
The game got fun pretty quickly! Every time my daughter passed GO, she showed me her QR code with a sly smile, and the bank paid out her 200 sats with zero fees. Players also paid each other with zero fees.
Twice, WoS randomly charged a 1-sat fee when transferring from WoS to Zeus—once from my wallet and once from my daughter’s. To keep things fair, I had the bank reimburse those 2 sats.
We did run into one small issue: I needed to pay my daughter 200 sats for landing on her hotel, but since I only had exactly 200 sats left, WoS wouldn’t let me send it, even though it was a WoS-to-WoS transaction.
Conclusion:
At the (unofficial) end of the game—since it was getting late—my daughter had 2810 sats, and I had 1650 sats. At this point, each stop was costing between 300 and 600 sats, so I suppose the real end was near!
Overall, it was a smooth experience, and my daughter got quite comfortable with sending and receiving bitcoin, even though it was her first time doing so. She did show more interest in the EUR balance, but I’m sure she’ll come to appreciate the sats balance soon enough!
I highly recommend this as a fun way to introduce people to the Bitcoin Lightning Network. Most people already have a Monopoly game at home, and if you have a couple of spare devices, you can easily install WoS for everyone. (Perhaps not in the U.S. right now, but I’m not entirely sure on that front.)
Would definitely recommend trying it out!
![](https://m.stacker.news/47222)
originally posted at https://stacker.news/items/656614
-
![](/static/nostr-icon-purple-64x64.png)
@ b0510a0c:12716ced
2024-08-21 06:03:43
# On April 24, 2012, Erik Voorhees changed everything about Bitcoin with the launch of Satoshi Dice:
a game that captivated users and intensified debates about Bitcoin's evolution and the network's ability to handle an increasing volume of transactions.
At that time, Satoshi Dice allowed thousands of players to bet on digital dice rolls, leading to a **MASSIVE** influx of transactions that filled the blocks of the blockchain.
![](https://m.stacker.news/47060)
## 📈 Success of Satoshi Dice:
Satoshi Dice achieved phenomenal success, attracting millions of users with its simplicity.
Players flocked in, bets piled up, and blocks filled up.
![](https://m.stacker.news/47066)
Erik Voorhees effectively leveraged Bitcoin's microtransactions, quickly saturating the blocks with these. This was a testament to the game's popularity, but also a source of tension within the community.
Within months, Satoshi Dice became the most popular service on the Bitcoin network, boosting its usage and virality.
Players appreciated the "provable fairness" aspect of the game, where they could verify the transparency and fairness of each bet.
## 🚫 Criticism and Controversy:
However, this success was not without criticism.
Many Bitcoin enthusiasts viewed the massive influx of transactions generated by the game unfavorably.
For them, these sometimes trivial transactions "spammed" the blockchain, clogging the blocks and increasing transaction fees for all users. Does this sound familiar?
The network, designed to handle about seven transactions per second, quickly reached its maximum capacity, causing validation delays and "high" fees.
![](https://m.stacker.news/47067)
## ⚔️ BlockSize Wars:
The BlockSize wars, which took place mainly between 2016 and 2017, were a technical and ideological conflict centered on block size and scalability solutions.
While Satoshi Dice was not the sole cause, the game significantly contributed to the emergence of this event by helping to popularize Bitcoin among new users and generating substantial transaction volume.
As Bitcoin adoption grew, the network faced intense pressure, leading to block saturation and rising transaction fees.
On one side, some advocated for increasing block size to allow more transactions, leading to the creation of Bitcoin Cash in August 2017. On the other, proponents of solutions like SegWit pushed for improvements without compromising decentralization.
## 🔧 Adoption of SegWit:
Erik Voorhees expressed his support for the SegWit2x proposal, which aimed to improve network scalability by combining the implementation of SegWit with an increase in block size.
Segregated Witness (SegWit) was adopted in August 2017, allowing transaction data to be separated from signatures. This reorganization not only increased transaction processing capacity but also paved the way for the development of the Lightning Network, a layer 2 solution enabling instant and low-cost transactions.
SegWit was a crucial response to the challenges posed by network congestion, which had been exacerbated by Bitcoin's growing adoption and the emergence of popular applications like Satoshi Dice.
## ⚡ SegWit and Lightning:
The adoption of SegWit helped resolve blockchain congestion issues, while the Lightning Network, a layer 2 solution, facilitated fast and low-cost transactions.
Together, these innovations not only addressed technical challenges but also renewed enthusiasm for games and other applications on Bitcoin, paving the way for a new wave of development.
![](https://m.stacker.news/47068)
## 🎲 Nostr Dice:
Today, as we reflect on the impact of Satoshi Dice, a new project emerges: nostr:npub1nstrdc6z4y9xadyj4z2zfecu6zt05uvlmd08ea0vchcvfrjvv7yq8lns84
This modern clone of the original game is built on Nostr, a decentralized communication protocol, and Lightning, paying homage to the past while offering an enhanced gaming experience that does not impact layer 1 congestion!
From a game that caused Bitcoin congestion to its rebirth on Lightning, which it helped to bring about, the circle is complete!
![](https://m.stacker.news/47069)
-
![](/static/nostr-icon-purple-64x64.png)
@ 35f3a26c:92ddf231
2024-08-20 18:13:02
https://image.nostr.build/1a5dd126fa56c5c188962ec7e278e28b710fdd93b701d673432c18dc2ab1b15c.jpg
How disappointing to observe Bitcoiners still using mainly YouTube to distribute their own content or content of interest for the community...
It would be nice if more Bitcoiners , specially the ones with channels start sharing as well in Odysee or other platforms less centralized and totalitarian...
#BTC
#Bitcoin
#Odysee
#YouTubeSucks
#Nostr
originally posted at https://stacker.news/items/656117
-
![](/static/nostr-icon-purple-64x64.png)
@ d830ee7b:4e61cd62
2024-08-20 17:15:54
Alright folks, it's showtime! The **Thailand Bitcoin Conference 2024 (#TBC2024)** is about to kick off, and as one of the organizers, yours truly, Jakk Goodday, co-founder of Right Shift, is beyond stoked. This isn't just another conference, it's the culmination of our passion, dedication, and vision for a brighter future, brought to life by a vibrant community of Bitcoin enthusiasts in Thailand.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724172694166-YAKIHONNES3.png)
### Get ready to rumble!
Picture this: you step into a bustling hall at **True Digital Park** in the heart of **Bangkok.** The air is buzzing with anticipation as over 500 passionate Bitcoiners, from seasoned veterans to eager newcomers, gather to connect and exchange ideas. The lights dim, the stage comes alive, and a lineup of captivating speakers, both local and international, take the spotlight, ready to ignite the spark of inspiration.
TBC2024 is more than just talks and presentations. It's about forging genuine connections, engaging in lively discussions, sharing laughter, and making new friends. It's about experiencing the Thai Bitcoin scene firsthand, with a bustling marketplace showcasing innovative Bitcoin-powered businesses and delectable local treats. And let's not forget the epic after-party, where the music will pulse, the drinks will flow, and the community will come alive in a celebration of the Bitcoin spirit.
### What's on the agenda?
We've got a jam-packed program spread across two days, with three stages catering to all levels of Bitcoin enthusiasts.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724172737406-YAKIHONNES3.jpg)
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724173047676-YAKIHONNES3.png)
**Day 1: Echoes of Hope** will delve into Bitcoin's potential to tackle social and economic challenges. Get ready for thought-provoking talks by industry leaders like **Dr. Wichit Saiklao** and **Dr. Big**, also **Piriya** who will challenge your understanding of money and the economy. Hear inspiring stories from **Jimmy Kostro** about how Bitcoin is empowering communities, and gain insights from content creators like **Pong SUPERTOMMO, Tip_NZ**, and **Isora Hata** on navigating the digital landscape. We'll even explore the intersection of Bitcoin and morality with **Mu'aawiyah Tucker**. And more.. And to ensure everyone's on the same page, we'll have **real-time Thai-English subtitles** on the big screen!
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724172761532-YAKIHONNES3.jpg)
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724174066846-YAKIHONNES3.png)
**Day 2: Unlocking the Future** will focus on real-world Bitcoin applications and their impact. Witness how Bitcoin is transforming industries and empowering individuals with **Kgothatso Ngako's** showcase of **Machankura**, a Bitcoin platform that doesn't require internet access. Be inspired by **Captain Sidd's** tales of Bitcoin-fueled adventures, and gain a new perspective on human rights with **Alex Li** from the **Human Rights Foundation**. We'll also have insightful discussions on building the Bitcoin community in Thailand and the rise of Asian Bitcoin communities. The day will culminate with a powerful closing message from **Piriya, Khing**, and **Jingjo** from **Right Shift**, reminding us how Bitcoin is fixing our broken monetary system.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724173107783-YAKIHONNES3.png)
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724173113805-YAKIHONNES3.png)
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724174122077-YAKIHONNES3.png)
### More stages, more fun!
The excitement doesn't stop at the Main Stage. TBC2024 offers two additional stages that cater to every level of Bitcoin enthusiast.
* **Advanced Stage**: For developers, tech enthusiasts, or anyone who wants to explore the cutting-edge of Bitcoin technology. Get ready to roll up your sleeves and dive deep into the technical intricacies of Bitcoin with hands-on workshops and interactive sessions.
* **Beginner Stage**: New to Bitcoin? No worries! The Beginner Stage is designed to gently guide you through the fundamentals of Bitcoin. We'll cover everything from setting up your first Bitcoin wallet to making your first Lightning transaction.
Whether you're a tech-savvy coder or a curious beginner, TBC2024 has something for everyone. Come join us and immerse yourself in the world of Bitcoin. Let's learn, explore, and build the future together.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724172788395-YAKIHONNES3.jpg)
### Siamstr vibes: Where connections spark and friendships flourish
TBC2024 isn't just a conference, it's a full-on community gathering, warm and welcoming. Get ready for laughter, lively conversations, and new friendships that'll make you feel right at home.
* **Experience the Siamstr Spirit**: The Thai Bitcoin community on Nostr is known for its tight-knit, friendly vibe. You'll meet a diverse crowd, all united by their love for Bitcoin.
* **Cutting-Edge Marketplace**: Get ready for a lightning-fast marketplace showcasing the coolest products and services from Thai entrepreneurs who accept Bitcoin Lightning payments!
* **Exclusive Dinner Party**: Join us for an unforgettable dinner in a relaxed atmosphere. Rub shoulders with speakers, Bitcoin OGs, and fellow enthusiasts, and listen to exclusive "Chit Talk" sessions on hot topics revealed only at the event. Then, let loose at the after-party, with a mini-concert and plenty of craft beer from Chit Beer to keep the good times rolling.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/d830ee7b7c30a364b1244b779afbb4f156733ffb8c87235086e26b0b4e61cd62/files/1724173158812-YAKIHONNES3.jpg)
TBC2024 is more than just a conference; it's an experience that will let you feel the true power of the Bitcoin community. Come be a part of Siamstr and make some unforgettable memories!
### Join the Movement
So, whether you're a seasoned Bitcoiner or simply Bitcoin-curious, TBC2024 is the place to be. Come join us in Bangkok and experience the magic of the Siamstr community. Let's build a brighter future, together.
See you there!
**Jakk Goodday**
#TBC2024 #Bitcoin #Siamstr
14-15 September 2024
**Get Digital Ticket** [here](https://www.eventpop.me/e/17031/tbc2024)
Reserve your seat with [Bitcoin Lightning payment here.](https://rightshift.to/product/tbc2024-event-ticket/)
-
![](/static/nostr-icon-purple-64x64.png)
@ 20986fb8:cdac21b3
2024-08-20 14:19:59
Welcome to YakiHonne, where we’re excited to introduce you to our innovative Smart Widgets! These interactive components allow you to create dynamic and engaging campaigns directly within social feeds, all without needing any coding skills. Whether you’re new to Smart Widgets or looking to refine your approach, this guide will walk you through the process.
### Step 1: Log In
Start by logging into your YakiHonne account. This is your gateway to creating and managing Smart Widgets. If you don’t have an account yet, sign up easily on our website.
### Step 2: Create Smart Widgets
Once you’re logged in, it’s time to get creative. Head over to the “Post” section and select “Smart Widget.” Here, you have two options:
**Option 1: Create from Scratch**
If you have a specific idea in mind, you can create your Smart Widget from a blank canvas:
• Click on “Create Blank Widget.”
• Begin designing by adding your unique content, interactive features, and any elements that match your campaign’s needs.
• Customize the appearance and functionality to fit your brand or message.
**Option 2: Choose a Template**
If you’re not sure where to start or want some inspiration, using a template is a great option:
• Select “Templates” from the options available.
• Browse through a variety of pre-designed templates.
• Choose one that fits your campaign’s goal, and customize it to make it your own.
**Option 3: Clone a Community Widget**
If you want to explore what others are doing, you can clone a widget shared by the community:
• Click on “Smart Widgets” to see what the community has shared.
• Browse through the community’s shared Smart Widgets.
• Find a widget you like, and click “Clone.”
• Modify the copied widget to create your unique Smart Widget.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1723815035344-YAKIHONNES3.png)
### Step 3: Explore Smart Widgets Features
Your Smart Widgets can do much more than just display content. Let’s dive into the features you can integrate:
• User Engagement Tools: Add polls, surveys, or quizzes to interact with your audience.
• BitcoinFi Integration: Enable features that support Bitcoin transactions, like tipping or payment gateways.
• Governance Options: Incorporate voting systems to allow users to participate in decision-making processes.
• Product Growth: Use widgets to drive user growth through referral programs or viral marketing techniques.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1723815056292-YAKIHONNES3.jpeg)
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1723815061683-YAKIHONNES3.jpeg)
These features are designed to enhance interaction and make your Smart Widget stand out. Feel free to experiment with different combinations to see what works best for your campaign.
### Step 4: Publish Your Smart Widgets
After you’ve created and customized your Smart Widget, it’s time to share it with the world:
• Preview your widget to ensure everything looks and works as intended.
• Click “Post my Smart Widget” to publish it.
• Your widget is now live and ready for others to interact with in their social feeds.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1723815081484-YAKIHONNES3.png)
### Step 5: Add Smart Widgets to Notes
To maximize the impact of your Smart Widget, you can integrate it into your Notes:
• Go to the “Notes” section on your dashboard.
• Select “Add Smart Widget” and choose the widget you’ve just created.
• Publish the note, and now your audience can engage with your Smart Widget directly through the note.
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/20986fb83e775d96d188ca5c9df10ce6d613e0eb7e5768a0f0b12b37cdac21b3/files/1723815092233-YAKIHONNES3.png)
### Tips for Success
* Experiment with Features: Don’t hesitate to try out different combinations of features to find what works best for your audience.
* Engage Your Audience: The more interactive and engaging your Smart Widget is, the better the results.
* Monitor Performance: After publishing, keep an eye on how your Smart Widget is performing. Adjust and optimize based on user feedback and engagement metrics.
### User Guideline Video Resources
[Create from Scratch](https://drive.google.com/drive/folders/1-vBaL31-lDB2d7LQtnONeQ9xmF_4Pm4Y)
[Choose a Template](https://drive.google.com/drive/folders/1-vBaL31-lDB2d7LQtnONeQ9xmF_4Pm4Y)
[Clone a Community Widget](https://drive.google.com/drive/folders/1-vBaL31-lDB2d7LQtnONeQ9xmF_4Pm4Y)
[Full tutorial video ](https://drive.google.com/drive/folders/1-vBaL31-lDB2d7LQtnONeQ9xmF_4Pm4Y)
### Conclusion
Creating and using Smart Widgets on YakiHonne is a powerful way to engage with your audience, promote your brand, and drive meaningful interactions. With no coding required, the possibilities are endless. Start exploring today, and see how Smart Widgets can take your campaigns to the next level!
Happy creating!
-
![](/static/nostr-icon-purple-64x64.png)
@ 805b34f7:3620fac3
2024-08-20 09:35:18
I grew up thinking adulthood would be boring.
I thought by age 45 you'd hurt too bad to do anything fun. I thought you'd just go to a job somewhere and work all day and come back home for a couple hours, just to go do it again. Growing up, I even thought 25 year olds were old and boring.
Thankfully, all those models are destroyed.
I'm 31 today, and my refusal to be bored has led to an interesting life so far. One that my 18 year old self would mostly approve of. Which is quite the measure of success according to Taleb.
*“For I have a single definition of success: you look in the mirror every evening, and wonder if you disappoint the person you were at 18, right before the age when people start getting corrupted by life."*
I wonder what's next. What other magic I can pull outta my hat. What kind of luck I can stir up. I have 2 north stars. Fun and Family.
**FUN**
Turns out the fun part isn't just endless surf trips. It isn't just partying with friends. Fun needs a mission.
Surf trips that go too long get boring. I learned that in 2018 when I did my first extended travel to the Canary Islands and Indonesia.
I was surfing my ass off in Indo. ABSOLUTELY SCORING EVERYDAY. But, I felt empty inside. I started to crave work while sitting on the island. I was excited to get back to work.
Work at that time was the occasional modeling/commercial gig and moving fridges to college dorms in the summer (my survival gig for like 6 years).
In 2017, I graduated with a master's degree in Organizational Psychology. I had all the “credentials” to have a successful “career” but out of fear of being bored/lack of real world experience I never pursued a standard career.
I also found Bitcoin that summer, which greatly altered my worldview/gave me hope for a brighter future.
From age 24 - 28 I lived never knowing where my next pay check would come from. I tried living in LA and Mexico City, but never quite found my tribe or anything worthwhile to work on. I even lived in my truck for a month in LA just to do a "fear setting" exercise I heard Tim Ferriss talk about.
I gave myself my own curriculum during that time. Exploring my interests in health and went further down the Bitcoin rabbit hole with my spare time.
In hindsight, I wouldn't trade this time of “wandering” for anything. This time prepared me for the things I'm working on today.
In the fall of 2021, I drove to Costa Rica with a vision of creating a new life somehow. I'd been there a few times and figured that's where I'd be if I had unlimited resources. I asked myself the question, "What would I be doing if I was a billionaire?". The answer? Working on something important while surfing everyday with cool people.
After bumming around for a bit, I ended up finding my tribe and consistent work for the first time in my life. I helped out with Paul Saladino's social media team, where I learned skills and furthered my knowledge about health.
During this time, I went to a ton of Bitcoin conferences with no agenda, except to meet more of my "tribe". The decision to do this brought incredible returns to my life.
*“Never settle. When you refuse to settle for less than the best… the best tends to track you down” - Dr. Jack Kruse*
Today I'm working on two important missions. Making an “ethical” social media with Primal and building a “healthier” computer with Daylight computer from which I'm writing this article. These two missions are greater than anything I could fathom building myself and I'm extremely grateful for these opportunities.
**Family**
I believe strongly that it's impossible to truly understand life until you create it on your own. Might not be true for everybody, but I believe I'm hardwired this way.
I met Laura during the first month of getting a stable income in Costa Rica. It was the first time that I had a mission while talking to a girl.
I was thinking long-term the day I met her and knew that this time would be different. We didn't have much. In fact, when she met me, I just graduated from camping everyday to living in a broken house in the most beautiful location in Santa Teresa. So what there was a skunk living in our sink, we could walk to the beach in 3 minutes! I knew she was a keeper for putting up with that.
Here's a snapshot of a morning in the life of the skunk house - https://www.instagram.com/reel/CcqatvJlbFH/?utm_source=ig_web_copy_link&igsh=MzRlODBiNWFlZA==
Our relationship has been incredibly rewarding, often challenging, and I can't wait for our future together.
She pushes me to seek more and the responsibility of another person of my life gives it a ton of meaning. And I'm sure this will do a little 100x once we have kids.
Woman are hard wired to seek security and I wonder where I'd be without her push and constant testing. This constant testing is the sign of a great woman.
I'm honestly terrified to have kids, but pursuing a family seems to be the most meaningful pursuit available to man. There's no way you'll ever be bored with kids!
We get married in 50 days. Will this be the best day of our lives? Can't wait. And just found out yesterday that our wedding will be featured in the New York Times.
PV
Writing feels good. It's great to puke out some words on a screen and reflect every now and again. There's always something to learn from someone. See you on NOSTR!
-
![](/static/nostr-icon-purple-64x64.png)
@ 35f3a26c:92ddf231
2024-08-20 00:34:08
#### What is Peer Thinking?
https://image.nostr.build/f9c206fad2b7580af8c5236e831b6801683d9199ce26e6628ba0964fe64b1903.png
The cognitive and emotional processes that occur when individuals are influenced by their peers.
#### The psychology behind it:
The psychology behind peer influence encompasses various factors, including:
1. Social belonging and acceptance,
2. Identity formation,
3. The dynamics of group behavior
#### Is it being used to control us?
https://image.nostr.build/cf90335bbf59e3395dc4324d123cd3a058ca716cf6172f079eb1d78547008147.jpg
IMO, yes, at the core of it is the basic human need for belonging. Social belonging is a critical component since it is craved by most, specially but not only by the youngest, those with power across the world know this very well, therefore, thinking that they will not use it to control the population in order to profit from it or change public opinion would be irrational.
The media is used to brain wash the population creating something that most will consider "the norm", thus, the majority will try to conform to that norm in order to belong. That include manipulating the population to take an experimental drug (even if it could be very dangerous due to its unknown effects) or to accept as a norm a behavior that few years back would have been considered inappropriate.
#### Cognitive Dissonance
https://image.nostr.build/60f24a810be1dd6badb36d70c5a691d4361207590dea1a8e64e09a75a252cfbf.jpg
This is a term that we should get familiar with. It is a psychological state where conflicting beliefs or behaviors create discomfort.
***Example:***
A kid in high school that has a good loving family but all his close friends are on drugs (legal ones) and they keep telling him he is an idiot for not using as well. Now his is that state of conflict believes, on one side his best friends, all tell him is okay, on the other hand his family that loves him has explained him at length the dangers and issues that the drugs will have in his life. To resolve the dissonance he has three options, one, join the group and start taking drugs with the rest, two try to rationalize it, considering to take drugs just occasionally to belong but not to make it a habit, three lose his friends (and here it comes again the peer thinking to bite). Extrapolate to many other cases.
> As an anecdote
Recently, on a friend's reunion, one of the guest was complaining about one of his daughters, she was quite confused asking him why so many of her classmates were bisexual, she was wondering if something was wrong with her since she was not; a 13 year old girl; the father was having a hard time explaining her that the majority are saying so just to feel as part of what the school was teaching to be the norm, it was not cool to be straight, the tally was 37% of the class. Consider that, statistically, the number of people, “worldwide” identifying as bisexual are between 3% and 5% (less than 1% in less accepting countries), that number used to be less than 2% less than a decade ago. But 37% is far from the statistical norm, indicating a peer thinking behavior but not the reality of their sexual preferences. Once again, extrapolate to any ideology, religion, gender identity, political agenda that a country desires to push forward for whatever reason, adding that to the official school program and to federal mandatory training programs would do the trick.
A powerful tool, that can be used for good or bad.
#### What are the strategies to counter negative peer thinking?
https://image.nostr.build/4b70949b8af76ed53a5be5507f41f1d1c960dc3592f199eab78e2d25688975c5.jpg
Reading the literature about the subject, few strategies are recommended:
1. *Self-Awareness*: teaching ourselves and our children to recognize when we are being influenced by peers
2. *Being selective with your friends*: peers with similar values will reinforce positive behaviors
3. *Learning to be assertive*: teaching ourselves and our children to communicate assertively our boundaries will empower us and them to resist unwanted pressure to adopt negative behaviors.
4. *Less judging more talking*: this applies to our children and partners, judging less and listening more will make our beloved ones more open to discuss social pressures.
***What do you think?***
***What strategies you use as counter measures?***
originally posted at https://stacker.news/items/655270
-
![](/static/nostr-icon-purple-64x64.png)
@ 6bae33c8:607272e8
2024-08-19 23:42:07
I posted my round by round draft targets yesterday, but have a few more thoughts that didn’t make it into that piece:
I’m warming up to Bijan Robinson with a top-three pick. This interview with Kay Adams (even though it’s just the usual talk) got my attention. Robinson is so relaxed, so even-keeled and yet he’s studying Christian McCaffrey’s every carry like a fanatic. Not that it’s going out on a thin limb as he routinely goes that early, but I had previously been wedded to taking a receiver (now that McCaffrey already has a calf injury.)
I said to Alan Seslowsky that Mike Williams was on my do-not-draft list because he’s so injury prone, but I double-checked and he hasn’t been that bad other than last year. Maybe I had him the year he did a lot early and then fell off steeply despite not missing many games. Maybe he was on the injury report a lot. I don’t know. But he’s actually not a bad value in Round 11 — he’s always been good when healthy, and the Jets are not deep.
I said yesterday I don’t have a strong preference in the first round, and the Robinson note aside, that’s still mostly true. I like all the receivers, and I’m fine with Breece Hall and Jonathan Taylor too. Of course, that doesn’t mean all of them will be fine — at least a couple almost surely will not — only that I can’t tell which ones. As important as it is to know your leans and act on them, it’s equally important to realize when you don’t have one and let ADP and positional need dictate your options.
I took Anthony Richardson in Beat Chris Liss 2, and while I don’t regret it as he really could be the QB1, I think the play in the Primetime will be to wait forever on QB and get some combo of Trevor Lawrence/Kurt Cousins/Justin Herbert/Matthew Stafford/Justin Fields, or even Daniel Jones. There’s just so much depth with upside. You could even take three QBs late.
The “hero” RB build (where you take a star RB in Rounds 1 or 2) and lots of receivers around them, before getting your RB2 candidates later is popular now, and you can see why. There aren’t that many top backs, so getting one is a big edge, and then you still catch up at receiver against all the teams that took a TE or top QB early. I just think this is mostly an on-paper exercise, and by mid-season the best teams usually have 4-5 surviving good players at all positions combined and have to cobble it to together with short-term fill-ins and waiver wire, i.e., build is overrated.
Both my drafts so far were from early (1 and 3), and I wouldn’t mind having one league from the back, getting Jonathan Taylor and say Puka Nacua. It would be cool to get Cooper Kupp in Round 3 too, but lately he’s moved up out of that range.
I stacked C.J. Stroud and Stefon Diggs in BCL1, but didn’t stack anyone in BCL2. Stacking is one of those things that’s great if no one else is doing it, but loses value the more it’s done. If you have Travis Kelce and Patrick Mahomes, but so do 25 percent of the Mahomes’ owners, is that really better than having Anthony Richardson and a random TE1 (in my case Brock Bowers). Sure there’s no correlation, but only 1 in 12 Richardson teams should be expected to have Bowers (even fewer if the Colts had a good TE as many would have paired them.) So yes, if Mahomes goes off, there’s a better chance he takes Kelce with him, but you still have to beat out 3x more teams with your same set up than I do if Richardson goes off, and Bowers happens to as well. Sure, the correlation makes your scenario more likely, but likely enough to compensate for its commonality?
-
![](/static/nostr-icon-purple-64x64.png)
@ 5e4e1309:1164206e
2024-08-19 20:00:48
Opinion about Freewallet Multi Crypto Wallet (iphone)
<!--HEADER END-->
The FRWT wallet is gone from Google Play, but Freewallet, the original scam, is still a major threat. We must continue to report and warn others about this dangerous app.
<!--FOOTER START-->
#WalletScrutiny #nostrOpinion
[Join the conversation!](https://walletscrutiny.com/iphone/mw.org.freewallet.app)
-
![](/static/nostr-icon-purple-64x64.png)
@ 6389be64:ef439d32
2024-08-19 19:11:13
In today's episode, I delve into silent payments in Bitcoin, introduced through BIP 352 to enhance privacy. I discuss its benefits, drawbacks, and impact, plus updates on BitVM 2, BTrust, and more.
- Silent Payments Explained
- US "Officials" to Redefine "Money"
- BitVM2 on the Horizen
- Trump Taps Bitcoiner For Transition Team
- Ark Protocol is ALIVE!
Listen on @fountain
--> https://fountain.fm/episode/oi8mInXrys0GD1SRdEyH <--
originally posted at https://stacker.news/items/654973
-
![](/static/nostr-icon-purple-64x64.png)
@ 0861144c:e68a1caf
2024-08-19 16:09:54
After finishing a podcast about unpopular ideas regarding Bitcoin and previously writing this reflection on [why Stacker News works](https://stacker.news/items/622904), I have to admit that I kept thinking about my own response.
And… join me in this reflection.
### What does it mean if you don't have Bitcoin to spend?
It means you've been buying Bitcoin, you've stored it securely in a way that makes you feel safe. After that, you go on with your life. Now, you want to buy a coffee—let's assume you want to buy a coffee.
**Do you have Bitcoin to buy it?** While it's true that in our circle, we promote the use of Lightning Network, during my conversations with people who use cryptocurrencies[^1], most aren't inclined to spend their Bitcoin.
![](https://m.stacker.news/46943)
[^1]: Most people don't use Lightning Network, at least when I encounter lots of bitcoiners who started recently, didn't know either about it.
### What does "inclined" mean in this context?
It's the same as having a wallet or purse from which you take out your cash to pay for what you want. Following this analogy, most Bitcoiners have their satoshis secured in a safe, away from devices.
#### So, where are the Bitcoins ready to spend?
There's another reflection. The Bitcoins ready to spend are mostly moving [in custodial wallets or with additional centralized integrations](https://stacker.news/items/154820); put more simply, the reason Wallet of Satoshi, Binance, Coinbase are successful—in my opinion—is because you need some data, and they take care of the nodes, routes, channels... all you need to do is provide some info about yourself, and you're good to go. The same goes for exchanges. In exchange for information, they offer you a myriad of services so you can use your Bitcoins, pay for everything.
### So...
That's one main reason why custodial projects get more attention than self-custodial ones. I'm not making judgments about whether this is right or wrong; I'm analyzing the scenarios for why the most... significant developments happen in that realm. If I want to extend this to others, we could also say that mining has been subject to this too. Bitmain and other companies have closed their patents, making the study or documentation of their machines inaccessible[^2]. In that case, yes, there are Bitcoins ready to spend[^3].
[^2]: That's why we find innovative when Nerdminer or BitAxe pulls out their product.
[^3]: Kudos to BTCPayServer in this case for make the coolest software to spend my bitcoins.
Honestly, I don't have a conclusion. This morning, I was reflecting on this myself. I've supported various projects with sats and will continue to do so, but in the interest of making Bitcoin a more...usable currency, we must consider that simply holding and not spending, we're not creating a friendly environment for merchants and people interested in commerce to use their Bitcoins, but we must keep pushing forward.
In the end, I’m super bullish on Bitcoin. No doubts at all.
**On the other hand, am I seeing a different panorama than you?**
originally posted at https://stacker.news/items/654755
-
![](/static/nostr-icon-purple-64x64.png)
@ b7d75df9:90a50e09
2024-08-19 14:25:02
test
originally posted at https://stacker.news/items/459389
-
![](/static/nostr-icon-purple-64x64.png)
@ 57d1a264:69f1fee1
2024-08-19 12:41:49
| OLD LOGO | NEW LOGO|
|---|---|
|![](https://m.stacker.news/46842)|![](https://m.stacker.news/46843)|
- - -
LifPay is a not well know yet custodial web and mobile app that had since inception focus on deliverring some really interestingg features, as the sale of digital goods, multiple account management and nostr integration to name few.
It recently update its design proposing an interesting switch from the original orange details to some green/purple alternatives.
NEW LANDING PAGE
![](https://m.stacker.news/46844)
OLD APP SCREENS
![](https://m.stacker.news/46845)
NEW APP SCREENS
![](https://m.stacker.news/46846)
TRY LIFPAY!
... and let us know your thoughts!
https://lifpay.me/
originally posted at https://stacker.news/items/654432
-
![](/static/nostr-icon-purple-64x64.png)
@ 06830f6c:34da40c5
2024-08-19 11:59:16
EXPOSEEEEE
The Hidden Truth Behind M-PESA and Bitcoin: Why Off-Ramp Services Can Send Money to Mobile Numbers But Fail with Paybill and Buy Goods
In the fast-evolving world of digital finance, Kenya’s M-PESA stands as a pioneering model, allowing millions to send money, pay bills, and buy goods with ease. At the same time, Bitcoin has gained traction globally, offering decentralized financial freedom. But when these two worlds collide, particularly in the realm of Bitcoin off-ramps, some serious limitations become apparent. Specifically, while Bitcoin off-ramp services can easily send money to M-PESA mobile numbers, they hit a brick wall when it comes to Paybill and Buy Goods services. Let’s break down exactly why this happens, backed by the facts.
### **Mobile Number Transfers: Simple, Universal, and Accessible**
M-PESA’s mobile number transfers are the simplest form of transaction in its ecosystem. They involve sending money directly to a recipient’s mobile number, which serves as a unique identifier within the M-PESA system. This process is straightforward and doesn’t require complex integrations or verifications beyond the basic identity checks M-PESA already has in place.
**Why Bitcoin Off-Ramps Can Handle This:**
1. **Simple Integration with M-PESA’s API:**
- Safaricom provides APIs that allow external services to interact with M-PESA’s system, particularly for mobile number transfers. Bitcoin off-ramp services can integrate these APIs to convert Bitcoin into Kenyan Shillings and send it directly to a user’s M-PESA mobile number. The process is as simple as any other mobile number transfer within M-PESA’s ecosystem, making it accessible for Bitcoin services.
2. **Minimal Regulatory Barriers:**
- Sending money to a mobile number is a low-risk transaction from a regulatory standpoint. Bitcoin off-ramps are primarily concerned with converting crypto to fiat, and this transaction doesn’t require the extensive compliance checks needed for more complex services like Paybill or Buy Goods. The relatively simple nature of mobile number transfers allows these off-ramps to operate smoothly without running afoul of strict financial regulations.
3. **Broad Market Appeal:**
- Bitcoin off-ramp services are designed to offer users a quick and easy way to convert their Bitcoin into usable local currency. The ability to send money to a mobile number meets a widespread demand, particularly in countries like Kenya, where M-PESA is ubiquitous. This feature makes Bitcoin off-ramps practical and appealing to users who want to access their funds without delay.
### **Paybill and Buy Goods: The Complexities of M-PESA’s Advanced Services**
Unlike simple mobile number transfers, Paybill and Buy Goods transactions are more complex and require deeper integration into M-PESA’s system. These services are used by businesses to collect payments and by consumers to pay for goods and services. Each transaction involves more than just moving money; it requires precise account mapping, real-time processing, and stringent compliance with financial regulations.
**Why Bitcoin Off-Ramps Can’t Handle This:**
1. **Complex Integration Requirements:**
- **Paybill**: To use Paybill, a payment must be linked to a specific business account within M-PESA. For example, when you pay an electricity bill using Paybill, your payment isn’t just sent to the utility company; it’s mapped to your unique account with them. This mapping requires direct access to M-PESA’s backend systems, something that Bitcoin off-ramps lack. Without this access, it’s impossible for them to ensure that the payment is correctly attributed to the right account.
- **Buy Goods**: Buy Goods transactions are similarly complex. They involve paying a specific merchant via a till number, with the funds instantly credited to the merchant’s M-PESA account. These transactions need to be processed securely and in real-time, which requires a level of integration and trust that Bitcoin off-ramps simply don’t have. Safaricom maintains tight control over this process to ensure the security and reliability of each transaction, further limiting external access.
2. **Regulatory Compliance and Risk:**
- The regulatory environment surrounding Paybill and Buy Goods services is stringent. These transactions are subject to strict financial oversight to prevent money laundering, fraud, and other financial crimes. Bitcoin off-ramps, which operate in the less regulated world of cryptocurrency, are not equipped to meet these regulatory standards. The additional compliance requirements would be too burdensome for these services, making it impractical for them to offer Paybill or Buy Goods functionality.
3. **Safaricom’s Strategic Control:**
- Safaricom has a vested interest in keeping Paybill and Buy Goods services within its own ecosystem. By controlling access to these services, Safaricom ensures that businesses and consumers remain dependent on M-PESA for their financial transactions. This control allows Safaricom to maintain its dominant position in the Kenyan market. Bitcoin off-ramps, on the other hand, represent a potential threat to this dominance by offering an alternative way to move money. By restricting access to Paybill and Buy Goods, Safaricom can stifle competition and keep the lion’s share of the market.
### **The Hard Truth for Bitcoin Users in Kenya**
For Kenyan users who earn or hold Bitcoin, the inability to use Bitcoin off-ramps for Paybill or Buy Goods transactions is a significant limitation. While they can easily convert their Bitcoin to Kenyan Shillings and send it to an M-PESA mobile number, they cannot use those funds directly to pay bills or purchase goods through M-PESA’s advanced services. This forces users to either keep their funds within the M-PESA system or seek out other, potentially less convenient, methods of payment.
**The Bottom Line: A System Designed for Control**
The reason Bitcoin off-ramps can’t handle Paybill and Buy Goods transactions boils down to control. Safaricom’s tight grip on these services ensures that they remain an integral part of the M-PESA ecosystem, with all the regulatory, technical, and financial complexities that come with them. While Bitcoin off-ramps offer a valuable service by enabling users to convert and transfer their crypto to mobile numbers, they are blocked from fully participating in Kenya’s digital economy due to these entrenched barriers.
In the end, while Bitcoin off-ramps offer a glimpse of financial freedom, the reality is that in Kenya, the most critical transactions are still tightly controlled by Safaricom. For now, Paybill and Buy Goods remain the exclusive domain of M-PESA, keeping the gates of Kenya’s digital economy firmly closed to external challengers.
#bitbiashara
-
![](/static/nostr-icon-purple-64x64.png)
@ fa984bd7:58018f52
2024-08-19 08:23:31
-
![](/static/nostr-icon-purple-64x64.png)
@ 79be667e:16f81798
2024-08-19 08:12:39
-
![](/static/nostr-icon-purple-64x64.png)
@ 9cb3545c:2ff47bca
2024-08-19 01:24:16
Hey there! So you’ve got a whopping 50+ Lightning Channels and you’re not keen on them Force Closing? Well, buckle up! This guide will be an additional resource as you navigate through daunting process.
In this post, we will go over some extra tips and tricks not covered in the official guide. While this guide does have some steps that are not covered by Umbrel, its main objective is to provide confidence in the process (not a replacement process), coming from someone who’s been there and done that, and some how came out with all Lightning Channels still running! **I highly recommend reading this post fully before starting the migration process.**
Before we dive in, [here](https://community.umbrel.com/t/how-to-update-from-umbrelos-0-5-to-umbrelos-1-1-on-linux-devices/16704#how-to-update-from-umbrelos-05-on-a-linux-device-3) is the Official Guide from the Umbrel team on how to update UmbrelOS from 0.5.4 to 1.x.x. Reference the steps all the time, and follow them carefully.
**With that out of the way. Here are some extra TIPs to fill in some gaps I encountered as I went through the process.**
## The Order of Steps
### Tip #1:
In the Official Umbrel Guide, the Umbrel team asks you to start by backing up your data. As a lightning Node Runner, I recommend against this. Because the Bash script will stop all Umbrel Services and your node will remain offline while you prepare a Bootable USB Stick. So definitely don't start with the backup, first get the bootable stick sorted out, then move on to backups.
## Creating the Bootable USB Stick
### TIP #2:
After many failed attempts to create a bootable USB stick from the link umbrel provides in their official guide. I ended up getting the ISO directly from Umbrels team through their Discord Channel. Unfortunately, I wont be able to share this link here. but just in case the umbrelOS-amd64-usb-installer.iso.xz didnt work for you as well, this could be an alternative route.
### TIP #3:
Since Umbrel is an actual full OS now. You might need to handle some BIOS quirks. The umbrelOS Kernal is not signed. So if you have Secure Boot turned on in the BIOS, your PC will try to protect you, and block you from booting into you USB Stick. Turn off Secure Boot and you should be able to bypass this issue. I also had to turn on Legacy Option ROMs as well.
![Enable Legacy Option ROMs](https://i2.wp.com/www.404techsupport.com/wp-content/uploads/2013/03/uefi-2.jpg)
### Tip #4:
Test your Bootable USB Stick on a secondary device before you go on trying to update your node. Since turning the node off and on is a hassle, its just easier to be certain the the Bootable Stick is ready before even attempting to upgrade your node.
**If all is good, you are ready to get back to the guide and walk through the steps.**
## Preparing the Hardware
### Tip #5:
In the official guide they as you to connect a Keyboard and Screen. This is of course needed. I would highly suggest you connect a mouse as well. My Bios was very stubborn and didn't comply with just a keyboard as I attempted to re-order Boot Sequences.
## The Migration Process
### Tip #6:
Remember, this is 10 times easier if you are not running a lightning node, but on a lightning node, the Channel.db file is being updated constantly. Once you start the backup process, the script will shutdown umbrel services and start copying. **you can''t turn your node back on after this stage. If you do, assume the backup you created through the Bash script is obsolete. and you will have to redo the backup process again.** If you really know what you are doing, you probably can surgically copy/paste the LND folder. But its easier not to do this.
But not to worry, if you start the process just keep going (especially if you checked all the TIPs I cover above). I say this out of experience, because after I started the first backup process, it took me about an hour to backup my SSD, but then the Bootable USB stick threw so many errors I gave up, and turned on the node again. Then later re-attempted the process from scratch. This time, since my external SSD was already full, it took 3.5 hours to backup all the files again.
### Tip #7:
This will take time, so just trust the migration process and wait for the files to get copied. you are probably copying more than a terabyte worth of data back and forth over USB, Leverage USB 3 if you have it.
### Tip #8:
If you have a custom name for your umbrel node. Meaning you do not access it by using umbrel.local, this will be reset to the default umbrel.local after the migration. I am not sure if this could be switched again to a custom name, but for now, this won't cause any issues.
### Tip #9:
During the last steps of the Migration process, and once Umbrel has copied the backup back into the SSD, it will finish the process with downloading your apps, and restarting. Don't freak out :D
### Tip #10:
I honestly don't have a tenth tip, but thought it would make this list look nicer with one. So my last tip for you is to relax and enjoy the process. And feel free to tag me if you faced any issues. Hopefully it will be something i experienced and will be able to help.
# Have Fun, and Good Luck!
-
![](/static/nostr-icon-purple-64x64.png)
@ 5d4b6c8d:8a1c1ee3
2024-08-19 01:21:22
I was reflecting on Arnold Kling's description of the three main political tribes (Progressives, Conservatives, Libertarians) and how Bitcoin serves each of them. I'm going to give each group a charitable hearing, which means I'm talking about the good faith actors in each of these tribes. I have no illusions about there being bad faith power seeking sociopaths in each group.
Full disclosure: I have not read Kling's book The Three Languages of Politics, so this is only based on listening to him discuss these ideas with Russ Roberts on Econ Talk and perhaps hearing it come up in other conversations.
# Libertarians
In Kling's taxonomy, Libertarians frame issues around a liberty vs coercion distinction (can confirm). It's pretty easy to see the appeal of bitcoin to this group (and not just because it's the group I'm in).
The state and other criminals can't take your bitcoin from you without your consent and they can't stop you from transacting with it.
There's another element of bitcoin that appeals to Libertarians greatly. Using Bitcoin directly undermines the coercive state, reducing it's capacity to coerce innocent people.
# Progressives
Kling describes Progressives as framing things as oppressor vs oppressed. At first blush this sounds similar to Libertarians, but Progressives don't see violations of property rights as the dividing line. Progressives are concerned about the plight of the "little guy" and not only in cases of outright coercion.
What likely appeals to Progressives is that Bitcoin is open to all. Disenfranchised people, who may be blocked out of formal financial institutions, have just as much access to Bitcoin as everyone else.
That Bitcoin also allows ordinary people to preserve their savings without relying on and enriching corrupt bankers should be quite appealing.
# Conservatives
The Conservative framing is civilization vs barbarism, according to Kling. There's a lot to unpack there and I'm not going try to be comprehensive about it. One way to think about this distinction is that a civilization has formal institutional structures for dealing with disputes that are rooted in their societies traditions, rather than resorting to unseemly ad hoc solutions (again, there's a lot to unpack here).
I found conservatives the most difficult to think about. Those of you who are familiar with The Righteous Mind will likely be able to guess why.
Where I think the main appeal is for conservatives is that the state, in general, and fiat, in particular, undermine many of the traditional institutions of society. Bitcoin undermines their ability to undermine the organic institutions of civil society. There's a whole treatise to be written on this topic, but suffice to say conservatives believe that the state undermines and crowds out churches, fraternal societies, charities, the family, and cultural tradition, while the high time preference induced by fiat leads to all manner of antisocial behaviors like drug abuse, casual sex, and gambling.
# Wrapping up
Let me know what you think about this. Did I miss something obvious? Did I mischaracterize anything/anyone?
Only hold as much fiat as you're willing to lose.
originally posted at https://stacker.news/items/653982
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 23:09:48
# test
teslgnslknsdlgnvlsdkvgnleihvlwevnlwkvlwekvnldskvnld
dsvmdslvdslvndsklvndslkvnsd
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 23:06:24
```js
import React, { useEffect, useState } from 'react';
import dynamic from 'next/dynamic';
import { Button } from 'primereact/button';
import { Dialog } from 'primereact/dialog';
import { initializeBitcoinConnect } from './BitcoinConnect';
import { LightningAddress } from '@getalby/lightning-tools';
import { useToast } from '@/hooks/useToast';
import { useSession } from 'next-auth/react';
import axios from 'axios';
const Payment = dynamic(
() => import('@getalby/bitcoin-connect-react').then((mod) => mod.Payment),
{ ssr: false }
);
const ResourcePaymentButton = ({ lnAddress, amount, onSuccess, onError, resourceId }) => {
const [invoice, setInvoice] = useState(null);
const [userId, setUserId] = useState(null);
const { showToast } = useToast();
const { data: session } = useSession();
const [dialogVisible, setDialogVisible] = useState(false);
useEffect(() => {
if (session?.user) {
setUserId(session.user.id);
}
}, [session]);
useEffect(() => {
initializeBitcoinConnect();
}, []);
useEffect(() => {
const fetchInvoice = async () => {
try {
const ln = new LightningAddress(lnAddress);
await ln.fetch();
const invoice = await ln.requestInvoice({ satoshi: amount });
setInvoice(invoice);
} catch (error) {
console.error('Error fetching invoice:', error);
showToast('error', 'Invoice Error', 'Failed to fetch the invoice.');
if (onError) onError(error);
}
};
fetchInvoice();
}, [lnAddress, amount, onError, showToast]);
const handlePaymentSuccess = async (response) => {
try {
const purchaseData = {
userId: userId,
resourceId: resourceId,
amountPaid: parseInt(amount, 10)
};
const result = await axios.post('/api/purchase/resource', purchaseData);
if (result.status === 200) {
showToast('success', 'Payment Successful', `Paid ${amount} sats and updated user purchases`);
if (onSuccess) onSuccess(response);
} else {
throw new Error('Failed to update user purchases');
}
} catch (error) {
console.error('Error updating user purchases:', error);
showToast('error', 'Purchase Update Failed', 'Payment was successful, but failed to update user purchases.');
if (onError) onError(error);
}
setDialogVisible(false);
};
return (
<>
<Button
label={`${amount} sats`}
icon="pi pi-wallet"
onClick={() => setDialogVisible(true)}
disabled={!invoice}
severity='primary'
rounded
className="text-[#f8f8ff] text-sm"
/>
<Dialog
visible={dialogVisible}
onHide={() => setDialogVisible(false)}
header="Make Payment"
style={{ width: '50vw' }}
>
{invoice ? (
<Payment
invoice={invoice.paymentRequest}
onPaid={handlePaymentSuccess}
paymentMethods='all'
title={`Pay ${amount} sats`}
/>
) : (
<p>Loading payment details...</p>
)}
</Dialog>
</>
);
};
export default ResourcePaymentButton;
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 23:02:09
```js
import React, { useEffect, useState, useCallback, useRef } from 'react';
import { useRouter } from 'next/router';
import { useImageProxy } from '@/hooks/useImageProxy';
import { Tag } from 'primereact/tag';
import { Button } from 'primereact/button';
import Image from 'next/image';
import dynamic from 'next/dynamic';
import axios from 'axios';
import { nip04, nip19 } from 'nostr-tools';
import { v4 as uuidv4 } from 'uuid';
import { useSession } from 'next-auth/react';
import { useNDKContext } from "@/context/NDKContext";
import { NDKEvent } from "@nostr-dev-kit/ndk";
import { findKind0Fields } from '@/utils/nostr';
import { useToast } from '@/hooks/useToast';
import 'primeicons/primeicons.css';
const MDDisplay = dynamic(() => import("@uiw/react-markdown-preview"), { ssr: false });
// ... keep the validateEvent function as is ...
export default function DraftCourseDetails({ processedEvent, draftId, lessons }) {
// ... keep state declarations and hooks as is ...
const fetchAuthor = useCallback(async (pubkey) => {
if (!pubkey) return;
const author = await ndk.getUser({ pubkey });
const profile = await author.fetchProfile();
const fields = await findKind0Fields(profile);
if (fields) setAuthor(fields);
}, [ndk]);
useEffect(() => {
if (processedEvent) fetchAuthor(processedEvent?.user?.pubkey);
}, [fetchAuthor, processedEvent]);
useEffect(() => {
if (session) setUser(session.user);
}, [session]);
const handleDelete = async () => {
try {
await axios.delete(`/api/courses/drafts/${processedEvent.id}`);
showToast('success', 'Success', 'Draft Course deleted successfully');
router.push('/');
} catch (error) {
showToast('error', 'Error', 'Failed to delete draft course');
}
};
const handlePostResource = async (resource) => {
// ... keep this function as is ...
};
const createCourseEvent = (courseId, title, summary, coverImage, lessons, price) => {
const event = new NDKEvent(ndk);
event.kind = 30004;
event.content = "";
event.tags = [
['d', courseId],
['name', title],
['picture', coverImage],
['image', coverImage],
['description', summary],
['l', "Education"],
['price', price.toString()],
...lessons.map((lesson) => ['a', `${lesson.kind}:${lesson.pubkey}:${lesson.d}`]),
];
return event;
};
const handleSubmit = async (e) => {
e.preventDefault();
const newCourseId = uuidv4();
try {
if (!ndk.signer) await addSigner();
// Process lessons
await Promise.all(processedLessons.map(async (lesson) => {
const unpublished = lesson?.unpublished;
if (unpublished && Object.keys(unpublished).length > 0) {
const validationResult = validateEvent(unpublished);
if (validationResult !== true) {
throw new Error(`Invalid event: ${validationResult}`);
}
const published = await unpublished.publish();
const saved = await handlePostResource(unpublished);
if (published && saved) {
await axios.delete(`/api/drafts/${lesson?.d}`);
}
}
}));
// Create and publish course
const courseEvent = createCourseEvent(newCourseId, processedEvent.title, processedEvent.summary, processedEvent.image, processedLessons, processedEvent.price);
const published = await courseEvent.publish();
if (!published) {
throw new Error('Failed to publish course');
}
// Save course to db
await axios.post('/api/courses', {
id: newCourseId,
resources: {
connect: processedLessons.map(lesson => ({ id: lesson?.d }))
},
noteId: courseEvent.id,
user: {
connect: { id: user.id }
},
price: processedEvent?.price || 0
});
// Update resources with course id
await Promise.all(processedLessons.map(lesson =>
axios.put(`/api/resources/${lesson?.d}`, { courseId: newCourseId })
));
// Delete draft
await axios.delete(`/api/courses/drafts/${processedEvent.id}`);
showToast('success', 'Success', 'Course created successfully');
router.push(`/course/${courseEvent.id}`);
} catch (error) {
console.error('Error creating course:', error);
showToast('error', 'Error', error.message || 'Failed to create course. Please try again.');
}
};
useEffect(() => {
const buildEvent = async (draft) => {
// ... keep this function as is ...
};
const buildDraftEvent = async (lesson) => {
const { unsignedEvent } = await buildEvent(lesson);
return unsignedEvent;
};
const processLessons = async () => {
if (!hasRunEffect.current && lessons.length > 0 && user && author) {
hasRunEffect.current = true;
const processedLessons = await Promise.all(lessons.map(async (lesson) => {
const isDraft = !lesson?.pubkey;
if (isDraft) {
const unsignedEvent = await buildDraftEvent(lesson);
return {
d: lesson?.id,
kind: lesson?.price ? 30402 : 30023,
pubkey: unsignedEvent.pubkey,
unpublished: unsignedEvent
};
} else {
return {
d: lesson?.d,
kind: lesson?.price ? 30402 : 30023,
pubkey: lesson.pubkey
};
}
}));
setProcessedLessons(processedLessons);
}
};
processLessons();
}, [lessons, user, author, ndk]);
// ... keep the return statement (JSX) as is ...
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 22:46:53
```json
{"id":"7bcd1b31-7312-4ac7-bd98-26135ae3532c","userId":"cc89e769-1cf7-4c9f-9558-cacc07ec9233","price":0,"noteId":"naddr1qvzqqqr4gupzpr9kpcs4v7y8nndqhm6dtvlurfw9jfwj4k6a33860d7s8d0jm6h2qqjrwcnrvsckyve395mnxvfj956xzceh943xgwfc95ervvfnx4sk2ve4xvexxpvjj4y","courseId":"a02d8514-2f56-4ab9-9f1a-16fba4d07614"}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 22:40:34
aslkjfaslkf
'aslfkaslfkas
# sd;lfsd;
# wlf
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 22:25:11
# laskhfldf aslfk
## aslkfaldkflda
aslfkadlkfda
- ASdjasdkaskd
- as.dkaslkds
- mdfdf
- jvldkdsv
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 22:20:04
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/CZ4Md2kUpaA" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 6bae33c8:607272e8
2024-08-18 21:31:21
Having recovered from my 27-hour trip to a remote area of Argentina at the foot of the Andes, I figured I’d bust out my round by round draft targets.
For point of reference (as to my location), here’s a shot of the snow-capped mountains outside my window (it’s winter here in the Southern Hemisphere):
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/6bae33c8bc26a5c573912af4b96b6ef690258ea3735ba90ca05d9b7a607272e8/files/1724016533629-YAKIHONNES3.jpg)
Keep in mind this is all subject to context and I’d absolutely hold my nose and draft someone off this list if it were a player of need, or he fell below ADP. (Also, I’ll probably change my mind on a few of these guys.)
For point of reference, here’s the NFFC ADP for the RotoWire Online Championship over last three days:
![image](https://yakihonne.s3.ap-east-1.amazonaws.com/6bae33c8bc26a5c573912af4b96b6ef690258ea3735ba90ca05d9b7a607272e8/files/1724016548959-YAKIHONNES3.png)
**Round 1**: Obviously, it depends where you pick, but there are only two players I’m avoiding, and one is McCaffrey (of whom I already have a share), but I don’t like the calf injury, however minor they say it is. Sure, if he drops to nine or whatever I would gamble, but he won’t. The other is Marvin Harrison sight unseen. I’d gamble on Gibbs (also has an injury, but he’s much younger than McCaffrey) or Puka Nacua (also with a knee issue) ahead of him.
Bottom line, I’m fine with any of these guys and not really targeting anyone per se. I know that sounds a little odd, but I just don’t have that much of a preference between them.
**Round 2**: I mentioned Gibbs and Nacua, I’m fine with Harrison if he slips to pick 15 or so, and I like De’Von Achane, Travis Etienne and Jaylen Waddle at the second half of the round. I’m out on Davante Adams (age, team context), Olave (nothing special) and probably Kyren Williams (too small for his role.) I could be talked into Cooper Kupp, though I liked him better when he was going in Round 3.
**Round 3**: DJ Moore and DeVonta Smith seem just as good as the second round receivers to me, Isiah Pacheco is the best of the remaining running back options by far, and Stefon Diggs is the WR1 in Houston in my opinion. As a Giants fan, I love Malik Nabers, but he’s got a lot more risk than those other three in this round.
**Round 4**: I’d take Sam LaPorta who is locked into a great role in a good passing offense and could even improve in Year 2. Rashee Rice might go at the 2/3 turn if he weren’t in legal trouble, and there’s a chance nothing comes of it this year. Amari Cooper is rock solid every year, Josh Jacobs has overall RB1 upside despite last year’s abysmal showing. I’d also take Tee Higgins late in the round — he was a 2/3 turn guy the last couple years, and he’s still the same player.
**Round 5**: I hate this round. I’d take either Trey McBride or Dalton Kincaid (Kincaid first as he could be Josh Allen’s top guy). Otherwise I might reach into round six to take some guys.
**Round 6**: Jayden Reed was good as a rookie, and Year 2 is when receivers make the leap. I know it’s crowded in Green Bay, but if he’s the real deal, the other guys will settle into lesser roles. Rhamondre Stevenson is a good back on a bad team, but he’ll be the workhorse, and the offense can hardly be worse than last year’s. James Conner and Aaron Jones are old, but they were still good last year. CJ Stroud is my bet to lead the league in passing yards, but I’d probably rather just flat gamble on Anthony Richardson who goes early Round 7.
**Round 7**: Richardson could easily be QB1, and there’s so much depth at the position, he’s worth the gamble. Jaxon Smith-Njigba is a Year 2 WR who could take the leap. Ladd McConkey seems like the obvious go-to slot guy for the Chargers and Javonte Williams should be himself again, two years removed from the ACL tear.
**Round 8**: Jake Ferguson is Dak Prescott’s de facto No. 2, seems like a bargain here. Brian Thomas is in the right place as the Jaguars lack both depth at WR and also a true No. 1, Kyler Murray has QB1 upside now that he’s two years removed from injury and has Harrison, McBride and even Michael Wilson.
**Round 9**: Brian Robinson is the early down workhorse, and Austin Ekeler (even if he’s not washed) is probably third-down only. And Robinson will catch some passes too. I like Brock Bowers’ upside even though it’s kind of crowded in Vegas. (I’d take David Njoku this round too.) Devin Singletary should get sufficient work in an impoved offense, and Zack Moss isn’t bad and could be more or less what Joe Mixon was last year if Chase Brown turns out to be just a guy.
**Round 10**: Who knows with Nick Chubb, but he’s worth a gamble here. I like Blake Corum because Kyren Williams is light for the rigors of the role, and RB1 for Sean McVay is an ideal spot. I’d also settle for Rico Dowdle as he might not be good, but Zeke Elliott is way past his prime.
**Round 11**: Jaylen Wright doesn’t need much to get a shot — Raheem Mostert is 32, and Achane is undersized. I keep drafting Rashid Shaheed who is the same size as Chris Olave and makes plays down the field whenever they give his a shot.
**Round 12+**: This is just a late-round sleeper list:
**Josh Downs** — has a high ankle sprain, but showed enough as a rookie to take a leap.
**Michael Wilson** — He showed something as a rookie and is locked in as a starter opposite Harrison.
**Bucky Irving **— Rachaad White is just a guy, so Irving could get a shot if he struggles.
**
Tyrone Tracy** — Singletary is a pro, but he’s ordinary, and Tracy can catch as he’s a converted receiver.
**Kimani Vidal **— Built like a mini tank and with little durable competition ahead of him.
**Khalil Herbert** — He’s a good running back, even caught 20 passes last year in limited work, and D’Andre Swift probably won’t hold up.
**Rashod Bateman** — He should be involved if he can ever stay healthy.
**Jordan Mason** — McCaffrey’s only reasonably reliable backup. Elijah Mitchell is way too injury prone.
**
Wan’Dale Robinson** — Probably the No. 2 target on the Giants after Nabers.
**Matthew Stafford** — He has two receivers going in the second round, and McVay’s offense has 35-TD upside for its QB.
**Jonnu Smith** — The Dolphins really don’t have a No. 3 WR, and Smith has shown he can make plays in the passing game.
**Roman Wilson** — Van Jefferson isn’t good, and I’m not sold on George Pickens as a No. 1, either. Wilson could be the slot guy and even lead the team in catches.
**
Justin Fields** — Russell Wilson is on his last legs, and should Fields get the job, he’d be a top-10 fantasy QB out of the gate.
**
Daniel Jones** — He was actually good in 2022, won a playoff game and now gets a king-making receiver in Nabers, a healthy Robinson, Year 2 of deep threat Jalin Hyatt and more familiarity with Brian Daboll’s offense. Plus he’ll get plenty of points on the ground.
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 21:01:07
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/VsgPZsjIbAU" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 20:57:03
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/VsgPZsjIbAU" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 20:50:48
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/JdmnL6QnsRs" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 20:46:51
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/k4ctD_vk2Ew" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 20:46:46
```js
import { getCourseById, updateCourse, deleteCourse } from "@/db/models/courseModels";
export default async function handler(req, res) {
const { slug } = req.query;
if (req.method === 'GET') {
try {
const course = await getCourseById(slug);
if (course) {
res.status(200).json(course);
} else {
res.status(404).json({ error: 'Course not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
} else if (req.method === 'PUT') {
try {
const course = await updateCourse(slug, req.body);
res.status(200).json(course);
} catch (error) {
res.status(400).json({ error: error.message });
}
} else if (req.method === 'DELETE') {
try {
await deleteCourse(slug);
res.status(204).end();
} catch (error) {
res.status(500).json({ error: error.message });
}
} else {
// Handle any other HTTP method
res.setHeader('Allow', ['GET', 'PUT', 'DELETE']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 20:42:25
```js
import { getCourseById, updateCourse, deleteCourse } from "@/db/models/courseModels";
export default async function handler(req, res) {
const { slug } = req.query;
if (req.method === 'GET') {
try {
const course = await getCourseById(slug);
if (course) {
res.status(200).json(course);
} else {
res.status(404).json({ error: 'Course not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
} else if (req.method === 'PUT') {
try {
const course = await updateCourse(slug, req.body);
res.status(200).json(course);
} catch (error) {
res.status(400).json({ error: error.message });
}
} else if (req.method === 'DELETE') {
try {
await deleteCourse(slug);
res.status(204).end();
} catch (error) {
res.status(500).json({ error: error.message });
}
} else {
// Handle any other HTTP method
res.setHeader('Allow', ['GET', 'PUT', 'DELETE']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 19:04:49
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/1CC88QGQiEA&t=5239s" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-18 19:04:33
```js
import { createCourseDraft } from '@/db/models/courseDraftModels';
export default async function handler(req, res) {
if (req.method === 'POST') {
try {
const { userId, title, summary, image, price, topics, resources, drafts } = req.body;
const courseDraft = await createCourseDraft({
userId,
title,
summary,
image,
price,
topics,
resources: {
connect: resources.map(id => ({ id }))
},
drafts: {
connect: drafts.map(id => ({ id }))
}
});
res.status(201).json(courseDraft);
} catch (error) {
res.status(500).json({ error: 'Failed to create course draft' });
}
} else {
res.setHeader('Allow', ['POST']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 6ad3e2a3:c90b7740
2024-08-18 16:49:15
I do a lot of Sudoku. They’re logic puzzles, using the numbers one through nine in a nine-by-nine grid. The goal is to use all nine numbers once and only once in every nine-field row, column and box. If you find yourself with two sixes in the same row, for example, you’ve blown it.
It’s pure deductive reasoning, no probability, no induction (if it happened this way in nine of the last 10 puzzles, it’s probably the case here!), no guessing. You do not want to fill in a number unless you are absolutely sure it’s the only place it could go. As in bet-your-life-on-it sure. If there’s more than one place for it, you do not guess. It’s like Highlander: “There can only be one!”
I find it relaxing — there is no ambiguity, no argument. You either know for sure and know why you know, or you don’t know.
What a contrast to the information environment the last few years, where there are so many people, wittingly or not, feigning certainty while espousing bullshit. Compromised fact-checkers relying on captured science and medicine, misleading the demoralized and credulous, desperate for a narrative to hold off the tidal wave of fear and doubt. A giant chorus of the obedient protecting themselves from dangerous dissent with their various incantations: “Conspiracy Theory!’ “You Are Not An Epidemiologist!” “Trust the Science!”
But if the 6 can’t be here and here, and the 5 must be there, then there’s nowhere else for the 7 except there. And once we know the 7 is there, the 7 in the bottom left box must be there. That means the 8 is in the lower row, so we can eliminate the eights from the upper and middle rows of that box…
Even when you can’t immediately solve a Sudoku, when the lightning bolt of insight that opens up the whole puzzle hasn’t yet struck, at least you know for sure what you don’t know. No matter how difficult the puzzle, there is such simplicity, order and peace in the realm of pure deductive logic.
. . .
The harder puzzles require you to make assumptions. That is, you might have a box with two possible candidates, and you assume one is correct conditionally and go through the implications of it.
For example, if a box can contain only a 1 or a 3, you might assume it’s a 1, see what happens to the boxes around it, and then alternatively assume it’s a 3, and see the effects of that. If some other box has three candidates, say 3, 4 and 7, and the 1-assumption, makes it a 3, and the 3 makes it a 7, you can be sure it’s not a 4.
Eliminating the 4 doesn’t tell you what the answer is, either for it or the initial box, but it narrows down the possibilities and enables you to play out further conditional scenarios more easily. In other words, by running scenarios for both, “if x is true” and “if x is false” you can find out that “z must be false” even though you still don’t know the truth with respect to x.
It’s important though not to treat your conditional findings as true. In the example above, assuming a 1 in the first box yielded a 3 in the second. If you fill in the 3, though, you just making a 50/50 gamble that might screw up the entire puzzle.
That sounds obvious, but that’s only because my example contains two boxes. Imagine you’re five or six boxes down the cascading chain, making assumptions (and then assumptions within assumptions — like the dreams within dreams of Inception — and you can see how easily you could get it confused.
There is a big difference between “this is the case if x is true”, and “this is case, period.” But sometimes when you’re deep down the assumption rabbit hole, you forget that the entire edifice is based on a conditional. That’s how you wind up with two 6s in the same box and realize the entire 40 minutes you’ve spent wrestling with this puzzle were wasted. You thought you were making breakthroughs, but it turns out you were living a lie the entire time!
. . .
The real world is infinitely more complex than even the hardest Sudoku. It requires us to make conditional assumptions within conditional assumptions all the time. Assuming, the data from this study in the Lancet is correct, assuming that its design is not flawed, assuming it hasn’t been influenced by its funding sources, assuming the subjects in the study don’t differ in some material respect from me (lifestyle, genetics, etc.), you should consider it’s findings.
But if you forget the assumptions involved and simply fill in the box based on the conclusions therein, you run the risk of making a serious error. Many people adopted low-fat, high sugar diets to defeat cholesterol, got on statins, avoided the sun, became vegan for health. It’s pretty obvious where I stand on those practices, but irrespective of whether they’re in fact beneficial, the decision to adopt them is based on many (dubious) assumptions being true.
. . .
The beauty of Sudoku is not only do you know — or find out soon at minimal cost — what you don’t know, but also your assumptions (at least initially) are explicit. You say to yourself, “assume this is a 1, and let’s see what it does, and assume it’s instead a 3, and let’s see what that does.” You are therefore capable of untangling the results of your conditional experiments and drawing sound conclusions from them.
Often when I talk with people about health, civil liberties, medicine or other matters of import, the conversation gets derailed due to conflicting assumptions. Can we examine a question and in so doing untangle the conditional beliefs informing it? Can we agree that what one is saying is only true if one buys into particular premises, and that those premises themselves cannot be taken as a given, but also should be examined?
If you support giving endless weapons to Ukraine no matter the cost, is that because you believe it is an innocent being attacked without provocation by the evil Vladimir Putin? Is that assumption beyond scrutiny? It doesn’t matter where you come out on that question so much as recognizing you are filling in a box based on that assumption, and should that assumption be false, your entire policy prescription is bankrupted.
Let’s say you do believe Putin invaded Ukraine because he is evil and will move onto the rest if Europe next, i.e., he’s basically Hitler. Why do you believe that? Do you have first-hand knowledge of him, or is it something you read in the New York Times? If the latter, then your belief about Putin being true depends on the Times being reliable with respect to geopolitics.
If you follow this sort of reasoning to its logical conclusion, you end up looking for first principles. What can I trust? How can I be sure to fill in the boxes accurately so as not to find out later I was living a lie?
It’s difficult in the real world to find certainty. Even René Descartes, who settled on “I think, therefore I am” didn’t get far*. The best we can do, in my opinion, is via the scientific method, offering a hypothesis that purports to fit the facts, and scrapping it as new facts and better-fitting (more explanatory) hypotheses come along.
The allegory of a perfectly deductive realm like Sudoku then isn’t in completing the puzzle. It’s in not filling in the boxes inappropriately. Forget about believing what’s true, but take great pains to avoid the lie.
###### *And at best Descartes found an Oscillating Truth, if you think, then you must exist, but you could be deluded, so maybe not, but if you can be deluded then you must exist, but you could be deluded about that, so maybe not, but if you can be deluded about that, then you exist… ad infinitum.
-
![](/static/nostr-icon-purple-64x64.png)
@ 56a6da9b:7f5a2243
2024-08-18 15:08:04
**From The Precipice Lectures Archive**
**DAY 17, IN THIS DIMENSION, OF FLASH AUGUST FICTION**. I woke up giggling yesterday morning. That's pretty much all I have to say about this one, except here is some background info on the 4th dimension from an earlier episode: [How's the Fourth Dimension?](https://commercialherschel.substack.com/p/how-is-the-4th-dimension)
_
**I am on the web3 apps. The podcast is called “Smell the Inside of Your Nose. Do it Right Now”.**
_
Here's the [Substack](https://commercialherschel.substack.com/p/the-absence-of-pathology-in-the-4th-dimension-precipice-lectures-archive) podcast. Here is [Spotify.](https://open.spotify.com/episode/76BkkMnTmZNBsZdCSByReP) [RSS here](https://api.substack.com/feed/podcast/307195/s/86023/private/4dbfe37e-35df-4448-a9aa-e135e3844723.rss). I think listening is better, that's just me.
_
_
Dr. Freebius Lipsmaciladapus: The Absence of Pathology in the 4th Dimension
-
**From The Precipice Lectures Archive**
*1019 WORDS WRITTEN IN ABOUT 45 MINUTES*
_
[ Clears throat ] Gentlemen,
To discuss the 4th dimension, we must discuss some of the laws that govern the 3rd-dimensional existence we are currently experiencing.
It is not necessary to understand how electricity works in order to use it. When one walks into a room, one uses a light switch, and the light fills the room. This is functional knowledge. We need not comprehend the details and intricacies of electronics in order to use electronics. In our experience in these three dimensions, there are many activities that are possible. It is possible to do unnecessary and even undesirable things. It is not wise or necessary to do a thing, simply because it is possible. Doing such things, however, does not alter or disrupt the nature of this three-dimensional realm.
![](https://m.stacker.news/46627)
The use of devastating weapons, for instance, is utilized by those with devious and avaricious intent and who do not possess the capacity for the creation and exchange of values. This is possible and, in fact, common in our plane of existence in this realm. There is no law of nature or physics in this dimension that prevents this.
These activities are not possible in the 4th dimension, to which some will become a part. There are laws of nature and physics in the fourth dimension that prevent such puerility. Actors will be bound to this dimensional realm that we are experiencing until better thinking and practices happen as a matter of course along their lifetimes.
First, we must describe how the fourth dimension is structured and what material it comprises. Our imaginations are the best example for describing the material; the matter that the fourth dimension comprises.
It does not function in the same way that our imaginations do, but it is comprised of the same matter. That is not to say that the fourth dimension allows you to create ex-nihilo. That is to say one cannot simply create something from nothing in the fourth dimension, as we can in our imaginations.
In this three-dimensional existence, we watch skilled magicians create flowers out of thin air and pull rabbits out of hats. These are illusions. To actually do that is not possible in the fourth dimension. However, existing matter can easily be manipulated physically using only one's hands and bodies. For instance, one might have a bowl of soup but no spoon, only a butter knife. In the 4th dimension, one can shape the knife easily with one's fingers to fashion a spoon for eating the soup.
Suppose there is a large basket on the dinner table, but only two tomatoes are in the basket, and the basket is taking up too much room on the table. One simply takes the basket and, using one's hands, and understanding the lattice of the basket, simply compresses the basket with one's hands. One can reshape the basket so that it fits the two tomatoes. Now there is more room on the table. This sort of thing is common practice in the fourth dimension. These are elementary examples.
You have a small box, but you need a large box for a large item. One simply changes the size of the box for your large item, and so on. One cannot pull things out of thin air, as you can with your imagination, but you can manipulate already existing material physically in a way that is not physically possible in our current realm.
There are certain conceptions about value and function that are simply a part of a person's nature there. The very nature of the fourth dimension is integrated with all the natures associated in it. Therefore, pathology cannot be part of that dimension. Pathological people and such behaviors would be prohibitive to the very matter that existence is comprised of in the fourth dimension, and it is necessary for the fourth dimension to exist. All dimensions must exist. They coincide, and are related.
If pathologies that are possible in the current dimension that we are experiencing in this moment were to breach the fourth dimension, it would be a prohibitive disruption effecting all of existence in all dimensions. The sort of piracy and mendaciousness that can exist in this dimension simply cannot, by nature and the laws of physics, be a part of the fourth dimension. There are no violations of laws in physics, in any dimension.
One might consider the reports of military personnel, where crafts appear above nuclear silos. These may be concerned beings from other dimensions, understanding how such operations could affect them in their dimension. They perhaps feel a need to intervene in this dimension in order to preserve their own.
Why? Some ask. Why is it not possible for such mendacity to exist in the fourth dimension? Is it perfect there? Of course, it is not perfect; it is more advanced, so to speak, but not perfect. There are imperfect events and, of course, imperfect people who make mistakes and take liberties that are possible, though perhaps not wise. To understand the reason, it's an imperative to remember that the material; the very matter of the 4th dimension consists of the same matter that our imaginations are comprised of.
Here is the illustration to use. You may think of the imaginations of individuals as fields of energy, or waves, or particles. It should be easy then to understand how affecting the fields, or waves; or particles of the fourth dimension as a whole, in the behaviors that we have become accustomed to in this dimension, would be disruptive and, in fact, destructive to existence itself.
For this simple reason, those who rule the three-dimensional realm that we experience simply could not be a part of the fourth dimension. Again, only those who would by their matter of course master the practice of value creation and production be a part of that dimension. While there are blunders and varying degrees of judgement there, no pathological behavior is possible, as it is antithetical to the very existence of the matter; the field; the waves; the particles of which the fourth dimension is comprised. These are simply the natural and physical laws of the fourth dimension.
The End
That was a wild dream, and that’s what I got out of it. I was glad I was able to get a story out of it. Here is another link to a different episode where I get into coinciding planes and why other beings can’t always interact with us. It is called [Alien Avoidance On Our Coinciding Plane](https://commercialherschel.substack.com/p/alien-avoidance-on-our-coinciding). I hope you might get a paid subscription, or [buy me a coffee](https://buymeacoffee.com/smellcast), or [donate some bitcoin](https://commercialherschel.substack.com/p/donate-with-blockchain-currency).
I wish you the best in these messed up times. My target audience are the people doing the very difficult and risky anti-corporate, anti-war, independent, honest journalism. I want to be a brief respite from the craziness for them. If you know any of them and want to point out my 10-20 minute, daily storytelling podcast, that would be the best. I’m Herschel Sterling, and I’m here to help.
![](https://m.stacker.news/46630)
originally posted at https://stacker.news/items/653477
-
![](/static/nostr-icon-purple-64x64.png)
@ 56a6da9b:7f5a2243
2024-08-18 14:41:44
_
**[LISTEN HERE](https://commercialherschel.substack.com/p/purge-the-gargoyles-architecture-intent-angels)** (The podcasts are more complete and nuanced, imo)
DAY 13 OF FLASH AUGUST FICTION. Not a lot to say about this one. A skill I have is building. I was a bricklayer and a stonemason, and I know fire tech. What that means is that I can build fireplaces, masonry heaters, flue systems, and chimneys. I think a lot about how the buildings around us affect us. I hate gargoyles. I love angels. I’m Commercial Herschel, and I’m here to help.
Purge the Gargoyles
-
**The People Agreed**
*614 WORDS WRITTEN IN A HALF HOUR*
Mayor Jackson won the election in surprising fashion. No one expected her to win. She had no real money, she didn't have any high-profile support, and the other two candidates were as shocked as she was that she won. Her campaign was simple. “Our City for Us”.
The dominant Party was on the outs with the people. They usually controlled the big cities, and the people finally stopped falling for them. They had lost favor, and there was no politics, or even violence, that would bring the people back to them. The other Party was more of a rural and suburban party, but the idea that they could get this city was like a conquest. They courted Mrs. Jackson, but they could not win her. They offered her money, and all sorts of corporations made all sorts of promises, but he just wanted her city to be for her people.
Her campaign was so unfamiliar. All of these corporations were making all of these promises to her. Her response was, “We'll see.” She didn't present herself as a candidate with all sorts of business and influence as leverage behind her. Instead, she presented herself as someone with the support of the people as the leverage behind her, so she could get the best deal for the people that she could. Her attitude toward the corporations was, “Look, do you see all these people I have behind me? If you want their business, I'm here to be sure you make a really good deal for my people.”
Once she took office, there were so many questions. The media and her critics were all over her, looking for answers to all the tough policy questions. She knew these were pressing concerns, but she wanted to truly ground herself. She had to establish some things in some kind of permanent way.
Her first press conference after the election was the time that she could establish her intent.
“Ma'am, no one expected you to win this election. What was the first thought you had when you saw the results?” One of the media people asked.
“My first thought was that the establishment didn't expect that they would have to cheat on me, so they didn't try very hard.”
Another reporter shouts out the next question. “Mrs. Jackson, what's the first thing you want to do with your new position?”
“Well, the Library really bothers me,” she says.
People are perplexed, it doesn't make sense. What could be the problem with a library?
“You don't like libraries, ma'am?” One of the reporters asks.
“Of course, I like libraries. Who does not like libraries? What I don't understand is why the library has gargoyles all over the roof-line. I want to replace those demonic gargoyles with angels.”
![](https://m.stacker.news/45903)
DAY 13 OF FLASH AUGUST FICTION
There are a lot of raised eyebrows among the press crew, it's not what they were expecting.
“I'm not going to use the city budget to do this,” the new mayor says. “I'm going to ask people to make donations at the library.”
Within a matter of days, the library had enough donations to replace the gargoyles with angels. There was a contest for some different angel designs. Some weird, wealthy people offered money for the old gargoyles, but the mayor crushed them into dust and dumped them into the nearby lake.
People felt better, something was right about this. It set the new administration on a good path, and the mayor was able to cut a lot of good deals that benefited the people of the city. She won several elections and served for three terms until she retired at an age that would allow her to enjoy her grandchildren.
The End.
I hope you might get a paid subscription, or [buy me a coffee](https://buymeacoffee.com/smellcast), or [donate some bitcoin](https://commercialherschel.substack.com/p/donate-with-blockchain-currency). I wish you the best. I’m Commercial Herschel, and I’m here to help.
![](https://m.stacker.news/45904)
originally posted at https://stacker.news/items/653465
-
![](/static/nostr-icon-purple-64x64.png)
@ 9d51218e:a0c80d65
2024-08-18 14:17:04
The huge share of ultra-processed foods, especially in the United States, is due to the fact that the food industry is in the hands of several global corporations. They have literally occupied all the supermarkets with their products.
[Full story](https://forex-strategy.com/2024/08/18/how-people-passing-through-the-supermarket-go-to-hospitals-our-ultra-processed-food/)
-
![](/static/nostr-icon-purple-64x64.png)
@ c11cf5f8:4928464d
2024-08-18 10:05:33
Let's hear some of your latest Bitcoin purchases, feel free to include links to the shops or merchants you bought from too.
If you missed our last thread, [here](https://stacker.news/items/559833/r/AG) are some of the items stackers recently spent their sats on.
originally posted at https://stacker.news/items/653241
-
![](/static/nostr-icon-purple-64x64.png)
@ 3c827db6:66418fc3
2024-08-18 06:57:22
The challenges associated with physical work and delayed payments, as discussed in the construction and logistics industries articles, might not be as directly applicable to industries with less physical movement. However, the principles of instant settlement and the removal of intermediaries can still bring efficiency and innovation to various sectors. The advantages of instant settlement, such as reduced transaction fees, faster payment processing, and increased transparency, can positively impact industries beyond the physical realm. Whether it's in the realm of digital services, intellectual property, or other sectors that are already dematerialized, the application of instant settlement principles can streamline transactions and enhance overall efficiency.
### Navigating The Written Odyssey
Entering the realm of book publishing, especially for a debut author, is a journey filled with challenges. The primary hurdle involves persuading a publishing house to forge a deal, a daunting task for those yet to establish their reputation in the market. The negotiation landscape is complicated by endless uncertainties, making it difficult to strike a mutually beneficial deal. Even if you try to be fair for both sides it is hard. Most people will prioritize themselves and what they get in an uncertain environment - like figuring out how many books will be sold for a first time author. The dynamics intensify when publishing houses provide editors to authors--an arrangement that frequently sparks friction. Authors, protective of their creative work, may resist alterations, but editors, with seasoned expertise, have to navigate the delicate balance between preserving the author's vision and refining the content.
The complexities extend to the business side, with potential pitfalls surrounding signing bonuses. Questions linger: What if the bonus overshoots and the book underperforms? What if the book succeeds, but the bonus proves inadequate, leading the author to seek alternatives for subsequent works? Marketing poses another challenge, raising dilemmas about investments, audiobook adaptations, navigating royalty payments, and banking fees for small markets and international payments.
Just like in the logistics industry here with royalties, we have the same problem of counterparty risk. In addition to stopping the payments to the authors completely, do you trust the publishers that they are giving the correct sales numbers? Translation decisions add another layer, raising queries about language choices, and fair compensation for translators. What about the illustrators? Each party involved creates more and more friction in the system just because everyone is seeking fair compensation. The payment system does not allow them to focus on what they provide in terms of value, but focuses everyone on mitigating the shortcomings of it. Addressing these multifaceted challenges requires not only innovation but also transparent and adaptive contractual frameworks to foster a more equitable and efficient publishing ecosystem.
The challenges for authors extend beyond the realm of creative content, and the intricacies of the publishing and marketing landscape. While the invention of ebooks has somewhat dismantled barriers, enabling easier self-publishing, the journey is not without hurdles. Authors opting for self-publishing must navigate the complexities of setting up accounts and managing distribution before reaching the point of uploading their work. Once published, the dual role of author and marketer emerges, demanding not only literary prowess but also strategic promotional efforts to capture the audience's attention and drive sales. The demanding nature of marketing leaves authors with limited time for their core competency - writing - which hinders the development of subsequent books that they would like to write.
### Lighting Up Publishing: From Solo Authors to Collaborative Ventures, Unleashing the Potential of Instant Split Payments
Now that this is the third industry that we are looking into, we know that delayed payments are the problem and that they are tied to time and not actual work - “You have to write the book till this date or else…” “We will gather all payments and royalties will be paid later”. Since we know now that the Lightning Network can fix this let’s dig into the solution and what it may look like.
If you're a first-time author and choose to publish your book on your self-made app, you can instantly receive 100% of the income for each purchase. By utilizing a non-custodial solution like Breez, where no one holds money for others, you avoid the complexities associated with traditional payment methods. This setup eliminates the need for currency exchanges, providing a seamless global payment network directly connected to your app. The benefits go beyond mere currency considerations, freeing buyers from the hassle of exchange rate fees and relieving them of the complexities associated with navigating diverse regulations and processes across various countries. Who knows what regulations you have to deal with to be able to operate with the Iranian Rial just to sell a simple book? With a non-custodial solution on the Lightning Network, you get to avoid all that.
That is a big benefit for one-man shows in the book industry, but let’s take it a step further. In this scenario, where the relationship involves only the author and a publisher, the process becomes streamlined without the need for intricate negotiations, personal data sharing, or complex contracts with various clauses. With the instant settlement, there's no need for advance payments, both the author and publisher receive a percentage from each sale instantly when the purchase is made. The publisher, responsible for uploading and promoting the book on their website, and the author are now aligned in the common goal of selling more books. The only task left is to determine the fair percentage splits between the author and the publisher, fostering a collaborative and efficient partnership. Now the word royalties will have a completely new meaning.
Okay, that is between two entities, but we are not going to stop there. Now that the book is published the book can be translated to other languages. In that case, the complexity does not increase a lot. They just have to determine the percentage share split between the publisher, author, and translator for each sale of the translated version. Upon purchase of the translated book, each payment will be split three ways. Meanwhile, the original language version undergoes a two-way split, with the translator excluded from this split since they didn't contribute to that version. This ensures that the relevant individuals receive sats exclusively for their specific contributions. There might be a need for a separate publisher for the translated language, leading to a split between the author, translator, and second publisher. For the original language, the split occurs between the author and the first publisher. Theoretically, the current system goes through a similar structure for the payments, but I am reminding you here that only the instant split settlement makes that plan match the reality in practice. The moment that any entity starts holding funds for someone else even for a little, then the problems go up exponentially. This is why Breez is committed to preserving the peer-to-peer nature of Bitcoin in lightning payments.
### Instant Splits For Narrators, Producers, And All Contributors - A Symphony Of Fair Compensation
We are not done yet with the benefits. Now that we have a path for each language, what will it look like for audiobooks? In that case, you just add one more split based on the agreement between the parties. If you create an audiobook in the original language then the split will be between Author, Publisher, and Audiobook creator. The creation of an audiobook is a project on its own of casting, recording, post-production, and distribution. That has multiple people involved so the split for the audiobook payment in reality may look like this:
Author, Publisher, Producer, Recording engineer, Narrator, Editing/mastering engineer.
In this dynamic model, contributors may wear multiple "hats" within a project, allowing them to assume various roles and, consequently, earn a share for each responsibility they undertake. For instance, an Author might take on the roles of both Producer and Narrator, performing additional work beyond their original scope. In such cases, the Author receives a percentage for each distinct role. However, should the Author choose not to take on these additional roles, someone else can assume those responsibilities and reap the corresponding benefits. This structure ensures alignment, with compensation tied directly to individual contributions at the time of each book sale, eliminating compensation for time or speculation based on future sales.
Unlike the other two industries we explored in construction here and logistics here, the timing of payment in the publishing industry differs. In the preceding sectors, individuals receive compensation instantly upon completing their respective tasks. However, in the realm of authors, payment is not immediate for the act of writing; it occurs when someone is willing to pay the price for the published work. This distinction highlights a fundamental principle: everyone is remunerated when they deliver value to someone else who is willing to pay. Whether delivering a package to the correct address or constructing a house for someone else to inhabit, optimizing the process with the client in mind becomes paramount. Therefore, receiving sats is contingent on providing intrinsic value to others, aligning the industry with similar principles observed in construction and logistics. If you build or deliver something that people do not want, that means you did not provide value.
### Instant Influence: From Metrics To Value - A Paradigm Shift In Compensation For Promotions
Now let’s take it even a step further. This will not be the only industry where the influencers can change their business model, but I will use it as an example to explain the change that they will experience in their service. Currently, the influencers get paid for views or mentions depending on whether the medium is audio or video. Their value, as perceived by those paying them, hinges on metrics such as subscriber counts, views, and downloads. But for the person that is paying, is it going to matter if the influencer talks about a book but then it does not result in sales of the book? Or again what happens if someone mentions it but the sales are extraordinary, then the influencer has to receive a more fair compensation. Connecting payments directly to actual value, rather than relying on derivative indicators, ensures influencers receive fair compensation in line with their impact on sales.
Well, the instant settlement fixes that. Authors can now decide on a fixed percentage for influencers per sale, allowing anyone to become an influencer without the need for a massive following. Even a small blog with a modest readership of less than fifty people can result in direct, instant compensation for sales generated. This eliminates barriers to entry for the influencers to have a following and aligns incentives for authors seeking broader promotion. There is a massive friction in the influencer market currently because with poor measuring tools you do not want the money to be wasted on promotion that does not work. This future system is not going to waste a single sat for promotion because it is not paying for a promotion. You are negotiating a commission on every sale which the actual buyer pays - increasing sales is the intent of the authors reaching out to influencers anyway.
Now that we have an influencer promoting a book the UX (user experience) is going to be completely different. Right now to promote anything as an influencer you receive a code that you have to ask for, from the publisher in this case. Then your viewers/listeners have to go to the website and fill in all the information about themselves. Then they have to enter their card information which has to be secured from the website somehow. Then they enter the promo code and receive the ebook that they wanted. On the other side, the publisher has to hope he does not get a chargeback for whatever reason in the next 30 days. The instant settlement UX will be:
- Influencers enter a lightning address where they want to receive their commissions from for every sale.
- Then they display a link or a QR code that will be a lightning invoice for the specific book.
- The buyer enters an email where they want the ebook to be sent.
The instant split payment is sent and everyone including the influencer receives their share of it. This way even influencers might realize that the likes, views and comments are not the most important thing and focus on providing real value for their viewers. This not only streamlines the process but may also alleviate the impact of negative comments and dislikes for influencers. Because their income is not tied to the likes that means it will no longer be the most important thing. They will focus on promoting quality products that sell a lot so they get a piece of those sales and the likes will be secondary.
The transformation in influencer behavior triggered by instant settlement not only disrupts their traditional approaches but sparks competition among publishers and influencers alike. Authors may opt for a model where they focus solely on writing, leveraging influencers to handle promotion without dealing with traditional editors. This introduces a more diverse competitive landscape, where publishing houses will compete with content creators from different industries who passionately recommend authors they love. While these changes benefit readers, authors, and participants, those resistant to competition may be the only ones disliking this evolving landscape.
image1
Indeed, envisioning the transformative power of instant payments, there's an opportunity for an innovator to replicate what Amazon did to bookstores. By adopting a model built on advanced technology and leveraging the advantages of instant settlements, this individual can start with books and subsequently explore avenues for expansion. The potential for such a disruptive force lies not only in reshaping the publishing landscape but also in inspiring new possibilities across diverse industries.
Now let’s go and publish that app.
-
![](/static/nostr-icon-purple-64x64.png)
@ 41d0a715:9733c512
2024-08-17 22:55:02
Fits snugly behind the ear, just slap with your hand ... most realistic bloody ear ever! 6 pieces $12.95.
originally posted at https://stacker.news/items/652908
-
![](/static/nostr-icon-purple-64x64.png)
@ 41d0a715:9733c512
2024-08-17 22:29:22
Fits snugly behind the ear, just slap with your hand ... most realistic bloody ear ever! 6 pieces $12.95.
![](https://m.stacker.news/46439)
originally posted at https://stacker.news/items/652889
-
![](/static/nostr-icon-purple-64x64.png)
@ 6389be64:ef439d32
2024-08-17 18:00:03
From creating connections to taming #LLM-generated chaos, we dive into how embeddings can turn digital noise into meaningful insights. Join Liminal from Project Alexandria and me as we explore the fun side of navigating the wild web of ideas and relational knowledge in Episode 937 of Bitcoin And.
Liminal is sharing 50% of this episode's revenue so use a modern podcasting app to generously BOOST, STREAM, and ZAP Sats.
- Project Alexandria
- nostr's Ecosystem
- Zettlekasten Note Taking
- LLM's Role in Deleting Relational Noise
- The Future
Listen to the interview on @fountain
--> https://fountain.fm/episode/vvZkH5FKqYVuyFAP312V <--
originally posted at https://stacker.news/items/652671
-
![](/static/nostr-icon-purple-64x64.png)
@ 5d4b6c8d:8a1c1ee3
2024-08-17 17:36:38
I wanted to share the crazy odds I managed to get at Nitrobetting, when they rolled out their new site overhaul. I blew pretty much the remainder of my sats on NFL Futures, which they didn't used to offer.
- Raiders to win the AFC West (+900)
- Lions make the Super Bowl (+550)
- Chiefs make the Super Bowl (+375)
- Bills make the Super Bowl (+700)
- **49'ers win the Super Bowl (+10000)**
This is the 49'ers year!
originally posted at https://stacker.news/items/652649
-
![](/static/nostr-icon-purple-64x64.png)
@ 99fdaa11:3157ec8e
2024-08-17 14:29:51
# H1
[google](https://www.google.com)
Editado
-
![](/static/nostr-icon-purple-64x64.png)
@ 592295cf:413a0db9
2024-08-17 07:36:43
# *Week 12-08 a suitable protocol*
The knots come to a head, some of you have gray hair, you get older.
Tkinter is better than ws://, more secure, but has limitations,
unless you know how to use figma and do some magic. The project of Nabismo.
Maybe Nostr doesn't work for me.
**Aspirin moment**
Nip-17, works with nip-44 and nip-59.
Someone said they made the groups encrypted with nip-17.
I tried and succeeded, now you can DM me, don't do it.
I had sent the link to a conversation of nip-87 closed groups.
There's JeffG doing something with MLS.
Then there's keychat.io which uses signal Nostr Bitcoin ecash and that's it... But in dart.
It's a bit like the Matrix analogue for Nostr.
Final controversy not all nips are mandatory.
**Build the foundation. You can't think about selling the house**
Yakihonne has a countdown.
What can a desktop app be.
Community Lists, Nip-29
A birthday on Nostr, no that's not possible, they're all cypherpunks. 🎉🎉 (Except me)
There is a different attitude from **Nostr** when updates are released compared to **Bluesky**,
everyone there is still enthusiastic, on **Nostr** ah ok but this is missing oh but this is missing or but support this other one,
or but * zap*, wait a minute, keep calm 🙇♂️, I'm the first to do this. (*The revolt of the developers)
Deletetion: Client that have relay paired can do delete, more intelligently,
Perhaps you can think of a delete.nrelay subdomain as a filter.
This id is deleted.
Be careful what you don't want to do.
Maybe a session with a psychologist is better, because then you find yourself doing what you said you didn't want to do.
Does it make sense to follow someone on **Bluesky**?
In my opinion no, or better yet yes.
There are several algorithms on** Bluesky**, which do their job well.
In the end it's just a matter of arranging them better on the screen.
Yes you can have lists to save someone, but then you read everything, so lists with algorithm seems like a next feature.
this way they can keep the following small, almost minimal, because there are algorithms that work for the user.
People will start writing for SEO algorithm and AI and other things, which tech gurus really like and so on.
The fact that it is almost exclusively an app will greatly facilitate this trend, there will be almost no need for moderation,
and you can get it all in just a few apps. (Great)
Oh yegorpetrov has abandoned.
Pegorpetrov said that he is coming back 😌
It might be an invention but I'm a little heartened by it.
**Bankify**, a new wallet of super testnet, only for crush testers.
You can't stream on *zap stream* without reach, maybe it's better audio space.
Contact someone maybe an influencer or Nostr elite or whatever.
Open Source Justice Foundation streaming
*Designer*, I wanted to propose comment on wikifreedia nielliesmons article and follow #nostrdesign, but too many answers for today. NVK note is ~~mainstream~~
I think I'm not suited to Nostr.
Nostr-ava bike file geo tag sharing. (NIP-113)
Sebastix doesn't respond, I must have done something bad to him, or maybe I'm stressing him too much. Finally he replied 🤙.
In the end maybe, I have too much hype about this proposal and it's something I don't know maybe,
but maybe if they were already doing something with geo tags it's better to say so.
Another birthday, less cypher more punk 😌
Usdt on Nostr, there must be some error. (freeform app)
USDT on tron is like Money. (Bitcoiner not really)
Privacy issue, deletion motion, or deletion request, go go.
Nip29 hype, i don't have hype at all.
I'm tired of words, I record a podcast on Nostr. Let's see if I can do it, at least think it.
(It's more of a workflow thing than actually something I would do)
1. Create an npub (easy)
2. Record the audio episode (I think I can do it). Terrible audio
3. Loading on a Nostrhosting, if less than 10 MB it should go smoothly.
4. Publish the video or audio of the episode on some Nostr client, perhaps using blastr relay 😞.
5. Do the nostree link, by putting the episode, and also the npub.pro and put the URL on café-society.
6) Publish all these links on the Main profile, saying that, made a podcast about Nostr in Nostr of nostr. 😂
I thought a client could have poll, form, spreadsheet, collaboration document.
It's the kind of otherstuff we want to see.
Something that goes beyond a normal feed.
Emoj on bluesky, Eventually also zap 🥜
[link emoj Blue](https://bsky.app/profile/did:plc:kkf4naxqmweop7dv4l2iqqf5/post/3kzskvd75q226)
Eventually there will be a developer revolt
And they will only do a social network in their downtime, they will call it **Nostr**.
There is a storm, **Nostr** does not work in 4g with two bars.
Or now 4G is gone too.
Yakihonne Smart widgets, something to try on the weekend.
-
![](/static/nostr-icon-purple-64x64.png)
@ 99fdaa11:3157ec8e
2024-08-17 04:41:50
Wow
-
![](/static/nostr-icon-purple-64x64.png)
@ 3c827db6:66418fc3
2024-08-17 02:50:05
Somebody, somewhere, at some point decided they would destroy the competition by creating a barrier to entry. They made the barrier high so they could feel safe. It is logical to put a fence around your property, and perfectly fine to do so. The problem is when you put a regulatory fence over something that means you are not allowing anyone else to have a property like this. Just to make the distinction clearer a fence around your house is creating a cost for other people to get in the yard. A license to be able to have a fence is creating a cost for anyone to protect their yard. The harder to attain and costlier the license is the more people can’t afford it. The more people who can’t afford it the bigger the divide between rich and poor. You can't have a fence because you can't have a license leaving your yard unprotected. The poor people are left unprotected and they get robbed easily, the rich are hard to get so they keep what they have. The more licenses/regulatory compliance someone has to comply with the more the costs for them are increased and the cycle of dividing is entrenched.
When constructing something physical, regulatory oversight is sensible to ensure structural integrity, particularly when people no longer build things for themselves. However, when it comes to more abstract concepts like licenses and credentials, possessing them doesn't guarantee success, and lacking them doesn't preclude doing excellent work. The whole point of the series is that the work should speak for itself and the people who did it should build their reputation based on their work history not on theory.
Let’s dive into a sector full of licenses for abstract things that keep people out and cornered the market. The betting industry.
The incentive structure in this scenario is problematic. Individuals with substantial financial resources that were gained illegally may seek friendly relationships with those responsible for issuing licenses. Obtaining a betting license now can serve as a means to launder money acquired unlawfully. Beyond mere laundering, they have a direct incentive to continue their illegal activities and a way to legitimize the funds. So they steal from the people who work and it gets even worse. Their scaling solution is to open the money laundering to other illegal actors.
A few parts of the economy are primed for these types of activities: the lottery, casinos, and sports betting.
Let’s start with the current lottery system and the “potential” exploits. Well, one person does something illegal and has stolen $1,000,000. Now he has a problem with how to legitimize the funds so he can spend it on things he wants. He goes to the owner of a lottery and says I will give you $200,000 if you give me an $800,000 winning ticket. Now 80% of the funds become legal. The person with the illegal funds buys $200,000 worth of tickets from which 1 of them is set up to win $800,000. Now all the funds have become legal. So the lottery company has a $200,000 income and $800,000 payout, seemingly paying out the winner with legitimate funds, but in reality, using the criminal's own money - correction, other people's stolen money. That is good for hiding taxes and the state is not getting anything, or is it?
The state gets its cut for every winning ticket by taxing all winners. Because of this income, they are incentivized to have more winners. This whole “hypothetical” system then is limited by how much money has to be laundered. More illegal money, more income for each side - the state, the illegal player, the lottery company. While they get the big winning tickets the public is left with the small prizes and they are robbed continuously for the next lottery "prizes". This tripod system demonstrates how one simple thing can be a continuous erosion of society. The lottery company does nothing to earn their money but they are incentivizing the illegal actors to continue doing illegal things. The State allowing licenses keeps competition out. The illegal actor closes the circle of his business.
The lottery should be something that is played without anyone having an advantage over anyone else. Including the company, there shouldn’t be a barrier for people creating all sorts of lottery games. The same model of behavior incentives is applicable for all the casinos. There is the same principle - some type of algorithm determines whether you win or not. But you can always approach the casino owner and apply the same logic to the casino. A player with illegal funds has to launder a million dollars again. In the first few hands, he wins a million dollars and keeps playing until incurs losses amounting to $200,000 and then stops. This way the casino loses $800,000 on its balance sheet but in reality, the illegal funds are distributed to the casino and the illegal actor.
In the sports betting industry, the barrier to entry is often determined by licenses, and companies typically act as custodians of the funds when users place bets. Additionally, these companies are responsible for providing betting odds, a task that incurs substantial costs when done accurately. Assessing various factors such as team performance, player injuries, and changes in management helps determine the odds. However, it's crucial to note that the odds provided by betting companies are designed to favor the company rather than the individuals placing bets. This inherent bias in odds contributes to the company's profit margin in the betting business.
### Exploring a free and ethical approach to lottery apps and innovative payout structures
The whole lottery system should be verifiable! The point of it is not to have yet another system where the poor are preyed upon. That is why the lottery app should be open-sourced. The bigger reason for the apps to be FOSS - I am reluctant to say how this particular app should be created because, on the one side, there are going to be regulatory people who want you to ask for approval, and on the other side there are betting companies that a percentage of them are involved in criminal activities. If you create an app that makes them obsolete you will find yourself being attacked legally, illegally, and anything in between. That is why the only option that I see for a small guy to not be a target is to create this app as a FOSS (free and open source software). This will create a problem for those entities because there is no target. It will have no barriers for others to create apps competing with the existing incentives. There was a big debate in my head about whether I should publish this article about this particular topic because of the ethically sticky situation. Also, I do not think that people should play with money and bet on stupid things. The main reason that I am doing this is that there should not be an incentive to do illegal activities but there should be a cost for it. Since the current system is incentivizing it, people should create the cost for them by making a free alternative (no licenses, or permissions from anyone) and with no risk for the players (non-custodial). Also, the cases that we will look at below as a payment structure are simply cool and unique that we have yet to experience anywhere. This will push even us at Breez to create and facilitate them if the need is there. Now let’s take a look at the potential solution and what I envision it could look like.
An algorithm can be designed where individuals purchase a virtual ticket, and once 100 participants acquire tickets, the entire pool is distributed among three randomly selected winners. The distribution comprises 50% for the first prize, 30% for the second, and 20% for the third. The concept of a physical ticket is eliminated; instead, participants contribute equal amounts of satoshis to a smart contract, which activates upon reaching the 100th participant. The executed contracts allocate 50% to the first-place winner, 30% to the second, and 20% to the third. No entity holds funds for others, and participants await the completion of the 100 spots to determine the three winners. You can do the lottery for more or fewer people. For different amounts of sats. With a different payout structure.
I envision a lottery game modeled after the hashing race in Bitcoin mining. Participants are required to guess a number between 1 and 1,000,000 by locking in 10 satoshis for each guess. If the guessed number is incorrect, that specific guess is eliminated from the potential answers, and the satoshis from all guesses contribute to the Jackpot for the correct number. The participant who correctly guesses the number receives the accumulated satoshis. The payout amount depends on the position of the correct guess, for example, if it occurs on the 10th try, the prize is 100 sats, and if on the 100,000th try, the prize is a million sats. Upon completion of the payout, the game resets, and participants can engage in the next round.
### Revolutionizing one-on-one Betting with trustless payouts
When I am with a friend, we can choose to place a bet on something--our favorite sports team, who can spit the furthest, or whether the sun will rise tomorrow. We are perfectly able to do so with cash, and we do not need a license from anyone to place those bets or determine the odds for us. There is only one problem that we have to handle when the results are in - the person who is losing the bet has to pay the winner. Because of this risk, you need a trusted third party that is unbiased to execute the payment when the results are known. Now you need a mitigation for the third-party risk--that they won't run away with the money. So you make a fourth party involved to determine who can have a license to be a trusted third party, and we are back to the current fiat operational model.
With instant settlement and smart contracts, we destroy all those problems.
* You do not need a license for trust because no one is holding money for anyone else.
* You do not need a trusted third party because you have a smart contract responsible for the execution of the payment when the results are known
* You do not need a third party to determine the odds because they are decided by the people and put in the smart contract
* You do not need to trust the person to pay when you win because he signed the execution of the payment when both of you placed the bet.
This structure for one-on-one betting is already implemented with a few games in the lightning space. One is from our friends at THNDR games and another is the Chain Duel. I like the infrastructure for the payment of the THNDR games because I am a sucker for non-custodial lightning. Custody for a second, a minute or a year is still custody.
What would a sports betting app look like that has a non-custodial instant settlement? There are a few easy settings to establish. First, there needs to be a deadline for placing bets before the sports event starts. Second, a timeframe must be set for the payout. In one-on-one betting, the payout structure is straightforward. Each side can wager any amount against the other, and if there is a disparity in the amounts, the odds are not 1:1. When the result is determined, the winning party has their funds unlocked without being sent, while the losing party has their contract executed, transferring the payment to the winner. THNDR is already implementing a similar concept called "clinch" which we are glad we had some input on, but I want to take it a few steps further.
### Exploring novel concepts in wagering -> community-to-community
What if there's a group of people on one side of the bet and another group on the opposing side? What does the payout look like, and how are the odds determined? Let's delve into a straightforward graph to better illustrate this example.
The graphs in the picture are the reference for the explanations below
The individuals on the left consist of only two people, but they wager a larger amount. On the right, there are four people, but their bets are smaller. If the left side wins, the two individuals will share the $1,000 bet placed by the opposing group. Since they bet equal amounts, each person will receive $500, reflecting a 50% stake for each. Conversely, if the right side wins, the stakes differ. Individuals 1 and 2 have a 25% stake, person 3 has a 40% stake, and person 4 has a 10% stake. Consequently, their respective payouts would be $500, $500, $800, and $200. That was a surprise even for me - there is a proof of stake system that I would be for. I realized that the staking is just not used in the proper context and that is why I have a problem with it. Proof of stake is deployed for bets and bets only. There is no such thing called staking your energy - that is called working. Now this system is not the shitcoin model - stake something and I guarantee you something more. Staking something means that going in you know (or you should know) that your stake could be lost. If someone is asking you to stake money and promising you more money you should ask yourself who is the loser that will pay the winner. If I am the winner, who is the loser? If we are all winners that means we all lost to inflation and the winner is the inflator. Stake = Bet.
The true stake system introduces a novel dimension to betting. While the primary goal is to win, participants might consider adding more funds to their community bet to avoid dilution. For instance, if I initially bet $10 alone, I would have a 100% payout potential. However, if someone else places a $10,000 bet on my side, my potential payout percentage drops to less than 0.1%. In such a scenario, I face two choices: increase my bet on my community's side for a better payout or place a bet on the opposing side, capitalizing on the changed odds for a potentially significant payout if I am wrong. This concept sheds light on the genuine meaning of hedging. You are hedging things that you BET on! Whether you call it an investment strategy or not you should now recognize that everything in the fiat system is using these terms but hiding the fact that it is gambling. For example, if you are a true investor you should do everything you can to make your investment work and realize that goal. Betting against yourself = hedge.
The community-to-community betting brings about more significant implications than current betting models. In this setup, the victorious community directly benefits, and if the bet is placed on a sports event, the winning team supports the winning community. The funds from the losing team's community are directly paid to the winning community and not to a betting company. This eliminates the intermediary role of any betting company. The people also are forced to do their research and assess which is a good bet and which is not - not that the majority do it. If they did it was going to be clear to all of us by now that all sh*tcoins are the fiat scam on a blockchain.
When there are three or more possible outcomes for a bet, multiple people or communities can bet on those outcomes, and all losing communities pay the winning community. In this scenario, individual participants receive payouts based on their respective stakes. For instance, in a bet involving predicting an exact score where no one bets on the correct score, there is no winner, and consequently, no actual losers. In such cases, participants simply have their sats unlocked without any winnings or losses.
We invest our energy in goals - make sure it is your goals and not someone else's. With money, we do 3 things only - earning, spending, or gambling!
People want to pay you money so you achieve their goals and stake your money so you can lose it to them. Be very aware of where you invest your energy and how you are using your bitcoin. I would like to repeat my statement from above one more time. The forces that are involved with these gambling companies are very powerful and I do not want to inspire someone and put a target on their back. I am doing this because of the utility of the payments and because this can be an open-sourced project that just competes with them. Satoshi set a standard for how to solve a monopoly - with FOSS. This will completely reshape the coordination between humans again with instant settlement payment. I do not like that I am promoting betting behavior because it is addictive and dangerous but I hope this puts a light on why all fiat behavior is gambling. The only proof of stake that matters is what is your stake in Bitcoin from the 21 million coins. Having a stake there is betting on humanity for the better.
Now be careful with this bet to make that app!
-
![](/static/nostr-icon-purple-64x64.png)
@ 2ede6f6b:b94998e2
2024-08-17 00:41:55
test
originally posted at https://stacker.news/items/459392
-
![](/static/nostr-icon-purple-64x64.png)
@ 2ede6f6b:b94998e2
2024-08-17 00:36:47
test
originally posted at https://stacker.news/items/459391
-
![](/static/nostr-icon-purple-64x64.png)
@ 06639a38:655f8f71
2024-08-16 21:20:35
* Updated the references documentation [here](https://github.com/nostrver-se/nostr-php/blob/main/REFERENCES.md) and [here](https://nostr-php.dev/references/)
* Improved relay responses and added backwards compability for the used `CommandResult` class
* Added RelayResponses according to the logic described in NIP-01 using this [PR#59](https://github.com/nostrver-se/nostr-php/pull/59) from [kriptonix](https://github.com/kriptonix) as a base.
* `OK` response
* `ERROR` response
* `CLOSE` response
* `EVENT` response
* `EOSE` response
* `NOTICE` response
* Partly integrated NIP-42 with an `AUTH` relay response
* Added the documentation page 'relay responses' on [nostr-php.dev](http://nostr-php.dev)
* The screenshot is quite funny describing Nostr having PHP vibes comparing it with the ATProtocol from Bluesky \[[source](https://bsky.app/profile/bmann.ca/post/3kzcyksddj22u)\].
-
![](/static/nostr-icon-purple-64x64.png)
@ 2ede6f6b:b94998e2
2024-08-16 20:12:45
test
originally posted at https://stacker.news/items/459390
-
![](/static/nostr-icon-purple-64x64.png)
@ 46fcbe30:6bd8ce4d
2024-08-16 19:29:04
Opinion about BitWallet - Buy & Sell Bitcoin (android)
<!--HEADER END-->
On trustpilot, 20% of reviews are complaining about KYC only after trying to withdraw, with some claims of outright disappearing money.
<!--FOOTER START-->
#WalletScrutiny #nostrOpinion
[Join the conversation!](https://walletscrutiny.com/android/com.Android.Inc.bitwallet)
-
![](/static/nostr-icon-purple-64x64.png)
@ 99fdaa11:3157ec8e
2024-08-16 18:20:14
# H1 Tag
Testing!
-
![](/static/nostr-icon-purple-64x64.png)
@ b22fef18:1bba6e1f
2024-08-16 17:54:13
## Chef's notes
Old family recipe that my grandma used to make during the summer. Creamy and refreshing.
## Details
- ⏲️ Prep time: 10 min
- 🍳 Cook time: 4 hours chilled
- 🍽️ Servings: 8-10
## Ingredients
- 3/4 cup shredded cucumber
- 3/4 cup cucumber juice
- 3/4 cup water
- 1 packet lime jello
- 1/4 cup chopped onion
- 1 cup 4% cottage cheese
- 1 cup Miracle Whip
## Directions
1. Shred cucumber and add salt to draw out moisture.
2. Mix juice from shredded cucumber and water.
3. Heat juice/water and dissolve lime jello.
4. Allow to cool slightly. (Add a couple ice cubes to chill it down and remove before melted)
5. Mix together the jello mixture and all other ingredients.
-
![](/static/nostr-icon-purple-64x64.png)
@ 35f3a26c:92ddf231
2024-08-16 16:13:21
#### What is multiculturalism?
![](https://m.stacker.news/46242)
Multiculturalism is a concept that promotes the acceptance, appreciation, and celebration of diverse cultures within a society. It involves recognizing and valuing the differences between various cultural groups while fostering social cohesion and equality.
***The key principles of multiculturalism include:***
1. Cultural pluralism: Acknowledging and accepting the existence of multiple cultural identities and practices within a society.
2. Equality: Ensuring equal opportunities and rights for all individuals, regardless of their cultural background or identity.
3. Inclusion: Encouraging participation and engagement of diverse cultural groups in social, political, and economic processes.
4. Respect: Promoting mutual respect and understanding between different cultural groups, while recognizing the legitimacy of differing beliefs, values, and practices.
#### Two questions come to mind:
![](https://m.stacker.news/46243)
1. ***Is it working?***
> IMO, ***most definitely not***. The world is very divided by race, religion and ideologies, it is a very difficult task. Countries trying this the most (practically enforcing it by law) have encountered more division and segregation; people of the same race, country or ideology will create their own small city sectors, cultural sectors, commercial sectors (China town, little Italy, etc); as is happening in USA for a long time already, happening as well in Spain, France, Germany, etc.
2. ***Is it being encouraged with tolerance toward those opposing it?***
> I personally don't think so, the irony... But that is just my opinion...
***What do you thing?***
originally posted at https://stacker.news/items/651181
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-16 16:08:30
```js
import React, { useEffect, useState } from "react";
import axios from "axios";
import { InputText } from "primereact/inputtext";
import { InputNumber } from "primereact/inputnumber";
import { InputSwitch } from "primereact/inputswitch";
import { Button } from "primereact/button";
import { Dropdown } from "primereact/dropdown";
import { ProgressSpinner } from "primereact/progressspinner";
import { useSession } from 'next-auth/react';
import { useRouter } from "next/router";
import { useToast } from "@/hooks/useToast";
import { useNDKContext } from "@/context/NDKContext";
import { useWorkshopsQuery } from "@/hooks/nostrQueries/content/useWorkshopsQuery";
import { useResourcesQuery } from "@/hooks/nostrQueries/content/useResourcesQuery";
import { useDraftsQuery } from "@/hooks/apiQueries/useDraftsQuery";
import { parseEvent } from "@/utils/nostr";
import ContentDropdownItem from "@/components/content/dropdowns/ContentDropdownItem";
import 'primeicons/primeicons.css';
const EditCourseForm = ({ draft }) => {
const [title, setTitle] = useState('');
const [summary, setSummary] = useState('');
const [checked, setChecked] = useState(false);
const [price, setPrice] = useState(0);
const [coverImage, setCoverImage] = useState('');
const [selectedLessons, setSelectedLessons] = useState([]);
const [selectedLessonsLoading, setSelectedLessonsLoading] = useState(false);
const [topics, setTopics] = useState(['']);
const { ndk } = useNDKContext();
const { resources, resourcesLoading } = useResourcesQuery();
const { workshops, workshopsLoading } = useWorkshopsQuery();
const { drafts, draftsLoading } = useDraftsQuery();
const { data: session } = useSession();
const router = useRouter();
const { showToast } = useToast();
useEffect(() => {
if (draft) {
const fetchLessonEventFromNostr = async (eventId) => {
try {
await ndk.connect();
const fetchedEvent = await ndk.fetchEvent(eventId);
return fetchedEvent ? parseEvent(fetchedEvent) : null;
} catch (error) {
showToast('error', 'Error', `Failed to fetch lesson: ${eventId}`);
return null;
}
};
const fetchLessons = async () => {
setSelectedLessonsLoading(true);
const fetchedLessons = await Promise.all(
draft.resources.map(lesson => fetchLessonEventFromNostr(lesson.noteId))
);
setSelectedLessons(fetchedLessons.filter(Boolean));
setSelectedLessonsLoading(false);
};
fetchLessons();
setTitle(draft.title);
setSummary(draft.summary);
setChecked(draft.price > 0);
setPrice(draft.price || 0);
setCoverImage(draft.image);
setTopics(draft.topics || ['']);
}
}, [draft, ndk, showToast]);
const handleSubmit = async (e) => {
e.preventDefault();
const payload = {
title,
summary,
image: coverImage,
price: checked ? price : 0,
topics,
resourceIds: selectedLessons.map(lesson => lesson.id)
};
try {
await axios.put(`/api/courses/drafts/${draft.id}`, payload);
showToast('success', 'Success', 'Course draft updated successfully');
router.push(`/course/${draft.id}/draft`);
} catch (error) {
console.error('Error updating course draft:', error);
showToast('error', 'Failed to update course draft', error.response?.data?.details || error.message);
}
};
const handleLessonSelect = (content) => {
if (!selectedLessons.some(lesson => lesson.id === content.id)) {
setSelectedLessons([...selectedLessons, content]);
}
};
const removeLesson = (index) => {
const updatedSelectedLessons = selectedLessons.filter((_, i) => i !== index);
setSelectedLessons(updatedSelectedLessons);
};
const addTopic = () => {
setTopics([...topics, '']);
};
const removeTopic = (index) => {
const updatedTopics = topics.filter((_, i) => i !== index);
setTopics(updatedTopics);
};
const handleTopicChange = (index, value) => {
const updatedTopics = topics.map((topic, i) => i === index ? value : topic);
setTopics(updatedTopics);
};
const getContentOptions = () => {
if (resourcesLoading || !resources || workshopsLoading || !workshops || draftsLoading || !drafts) {
return [];
}
const resourceOptions = resources.map(resource => {
const parsedResource = parseEvent(resource);
return {
label: <ContentDropdownItem content={parsedResource} onSelect={handleLessonSelect} selected={selectedLessons.some(lesson => lesson.id === parsedResource.id)} />,
value: parsedResource.id
};
});
const workshopOptions = workshops.map(workshop => {
const parsedWorkshop = parseEvent(workshop);
return {
label: <ContentDropdownItem content={parsedWorkshop} onSelect={handleLessonSelect} selected={selectedLessons.some(lesson => lesson.id === parsedWorkshop.id)} />,
value: parsedWorkshop.id
};
});
return [
{ label: 'Resources', items: resourceOptions },
{ label: 'Workshops', items: workshopOptions }
];
};
if (resourcesLoading || workshopsLoading || draftsLoading || selectedLessonsLoading) {
return <ProgressSpinner />;
}
return (
<form onSubmit={handleSubmit}>
<div className="p-inputgroup flex-1">
<InputText value={title} onChange={(e) => setTitle(e.target.value)} placeholder="Title" />
</div>
<div className="p-inputgroup flex-1 mt-4">
<InputText value={summary} onChange={(e) => setSummary(e.target.value)} placeholder="Summary" />
</div>
<div className="p-inputgroup flex-1 mt-4">
<InputText value={coverImage} onChange={(e) => setCoverImage(e.target.value)} placeholder="Cover Image URL" />
</div>
<div className="p-inputgroup flex-1 mt-4 flex-col">
<p className="py-2">Paid Course</p>
<InputSwitch checked={checked} onChange={(e) => setChecked(e.value)} />
{checked && (
<div className="p-inputgroup flex-1 py-4">
<InputNumber value={price} onValueChange={(e) => setPrice(e.value)} placeholder="Price (sats)" />
</div>
)}
</div>
<div className="mt-8 flex-col w-full">
<div className="mt-4 flex-col w-full">
{selectedLessons.map((lesson, index) => (
<div key={lesson.id} className="p-inputgroup flex-1 mt-4">
<ContentDropdownItem content={lesson} selected={true} />
<Button icon="pi pi-times" className="p-button-danger" onClick={() => removeLesson(index)} />
</div>
))}
<div className="p-inputgroup flex-1 mt-4">
<Dropdown
options={getContentOptions()}
onChange={(e) => handleLessonSelect(e.value)}
placeholder="Add a Lesson"
optionLabel="label"
optionGroupLabel="label"
optionGroupChildren="items"
/>
</div>
</div>
</div>
<div className="mt-4 flex-col w-full">
{topics.map((topic, index) => (
<div key={index} className="p-inputgroup flex-1 mt-4">
<InputText value={topic} onChange={(e) => handleTopicChange(index, e.target.value)} placeholder={`Topic #${index + 1}`} className="w-full" />
{index > 0 && (
<Button icon="pi pi-times" className="p-button-danger mt-2" onClick={() => removeTopic(index)} />
)}
</div>
))}
<Button type="button" icon="pi pi-plus" onClick={addTopic} className="p-button-outlined mt-2" />
</div>
<div className="flex justify-center mt-8">
<Button type="submit" label="Update Draft" className="p-button-raised p-button-success" />
</div>
</form>
);
}
export default EditCourseForm;
```
-
![](/static/nostr-icon-purple-64x64.png)
@ 000002de:c05780a7
2024-08-16 16:07:20
I do not know if it is intentional or if there is some conspiracy behind this but it seems clear to me that the media is executing a pattern they have done before. Pushing a narrative about bitcoin that differs greatly from that the elite hold personally.
I keep hearing the bitcoin ETFs have been adopted by institutions. That's not plebs. The plebs are not buying the ETFs or bitcoin for the most part. They have been psyoped into believing its a scam or to volatile at a minimum. Meanwhile we are seeing more wealth elites openly talking about bitcoin. We are seeing huge financial institutions buying the ETF or forecasting bitcoin gains in market value.
Recently I heard Morgen Rochard, a bitcoiner and certified financial planner say that the licensing org she is a part of is going after CFPs that recommend bitcoin. Like I said, I don't know that this is coordinated but it is odd. And regardless of intent this is a fractal.
One thing I have learned over the years is to spot media bs when I see it. They are clearly holding the public back from learning about bitcoin. The crowd here isn't affected. We are early adopters. But just thought about this today. Your friends and family are likely falling prey to a psyop.
What do you think? Do you think this is all coincidence? Or is there something more sinister in play? Regardless, it is hard to break the programming of the people around you. I know. I have tried on many subjects. Most of us are just the weird people in our social circles. We think differently. We are not bothered by holding views that are not on the index card of allowable opinion. At this point with bitcoin and many topics I just let people be. If they ask I'm ready to talk but I don't push. I'm a firm believer in leading by example. Making sure I'm prepared and strong so I can be a lighthouse when the storms come.
originally posted at https://stacker.news/items/651157
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-16 15:38:28
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;"><iframe src="https://www.youtube.com/embed/yXyKGJc1Qvg" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allowfullscreen></iframe></div>
-
![](/static/nostr-icon-purple-64x64.png)
@ 8cb60e21:5f2deaea
2024-08-16 15:38:19
```js
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export default async function handler(req, res) {
if (req.method === 'PUT') {
try {
const { slug } = req.query;
const { courseDraftId, courseId } = req.body;
console.log('Received data:', { slug, courseDraftId, courseId });
const updateData = {};
if (courseDraftId !== undefined) {
updateData.courseDraftId = courseDraftId;
}
if (courseId !== undefined) {
updateData.courseId = courseId;
}
const updatedResource = await prisma.resource.update({
where: { id: slug },
data: updateData,
});
res.status(200).json(updatedResource);
} catch (error) {
console.error('Error updating resource:', error);
res.status(500).json({ error: 'Failed to update resource', details: error.message });
}
} else if (req.method === 'DELETE') {
try {
const { slug } = req.query;
await prisma.resource.delete({
where: { slug },
});
res.status(204).end();
} catch (error) {
console.error('Error deleting resource:', error);
res.status(500).json({ error: 'Failed to delete resource' });
}
} else {
res.setHeader('Allow', ['PUT', 'DELETE']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
```