-

@ 0b118e40:4edc09cb
2025-02-19 01:21:45
Are we living in his definition of democracy?
It’s interesting how political parties can divide a country, especially in democracies where both oppression and individual choice coexist.
As I was exploring global economics and political ideologies, I picked up *The Republic* by Plato (again). The first time I read it, I only read the book on the Allegory of the Cave and it felt enlightening. This time around, I read through all the books and I thought to myself : *this is absolutely nuts!*
Over 2,000 years ago, *The Republic* imagined a world disturbingly similar to Gattaca or 1984. For a quick rundown, Plato believed in a police state, eugenics, a caste system, and brainwashing people through state-controlled media and education. Sounds wild? I thought so too.
And for some reason, Plato had a serious grudge against art. To him, art was deceptive and emotionally manipulative. Maybe because there was a skit making fun of Socrates at that time by Aristophanes (the father of comedy) or maybe because he struggled to deal with emotions, we will never know.
Plato obviously wasn’t a fan of democracy as he wanted a dystopian world. But to be fair, he genuinely thought that his ideal world (Kallipolis) was a utopia. Maybe someone who loves extreme order and control might think the same but I sure don’t.
His teacher Socrates was also not a fan of democracy because he believed the mass majority were too ignorant to govern and only those intelligent enough could. His student, Aristotle, was more moderate but still critical, seeing democracy as vulnerable to corruption and mob rule. Socrates, Plato, and Aristotle were around the Classical Greek era, 5th to 4th century BC.
The idea of democracy existed long before them. The first recorded version was in Athens during the 6th BC, developed by leaders like Solon and Pericles. It was a direct democracy where free male citizens (non-slaves) could vote on laws themselves instead of electing representatives.
These guys influenced how we think about democracy today. But looking around, I wonder, did we end up in Plato’s dystopian world?
### **Plato’s take on democracy**
Plato’s lack of trust of democracy stemmed from Socrates’ death. Socrates himself was a fierce critic of democracy, as he believed governance should be based on wisdom rather than popularity.
Other thinkers, like Pythagoras and Herodotus (father of history), also examined different political systems, but Socrates was the most influential critic. He warned that allowing the uneducated masses to choose leaders would lead to poor governance, as they could be easily swayed by persuasive speakers rather than guided by knowledge.
Athenian democracy relied on large citizen juries and was particularly vulnerable to rhetoric and public sentiment.
In the end, Socrates became a victim of the very system he criticized. His relentless questioning of widely accepted beliefs, now known as the **Socratic Method**, earned him powerful enemies. Socrates’ constant probing forced them to confront uncomfortable truths. It annoyed people so much, that it eventually led to his trial and execution. Socrates was condemned to death by popular vote.
I wonder, if we applied the Socratic Method today to challenge both the left and the right on the merits of the opposing side, would they be open to expanding their perspectives, or would they react with the same hostility?
This questioning technique is now also used in some schools and universities as a teaching method, encouraging open-ended discussion where students contribute their own thoughts rather than passively receiving information. But how open a school, system, or educator is to broad perspectives depends largely on their own biases and beliefs. Even with open-ended questions, the direction of the conversation can be shaped by those in charge, potentially limiting the range of perspectives explored.
Socrates’ brutal death deeply grounded Plato’s belief that democracy, without intellectual rigor, was nothing but a mob rule. He saw it as a system doomed to chaos, where the unqualified, driven by emotion or manipulated by rhetoric, made decisions that ultimately paved the way for tyranny.
### **The Republic**
*The Republic* was written around 375 BC, after the Peloponnesian War. One of its most famous sections is the Allegory of the Cave, where prisoners are stuck watching shadows on a wall, thinking that it’s reality until one breaks free and sees the real world. That’s when the person becomes enlightened, using knowledge and reason to escape ignorance. They return to free others, spreading the truth. I love this idea of breaking free from suppression through knowledge and awareness.
But as I went deeper into Plato’s work, I realized what the plot twist was.
Plato wrote this book for strict state control. He wanted total control over education, media, and even families like in the book 1984. He argued that people should be sorted into a caste system, typically workers, warriors, and philosopher-kings so that society runs like a well-oiled machine. The “guardians” would police the state and everyone would go through physical and military training. To top it off, kids would be taken away from their parents and raised by the state for the “greater good.” like in the movie Gattaca. If that sounds a little too Orwellian, that’s because it is.
Plato believed that only philosophers, the truly enlightened ones from that “cave”, should rule. To him, democracy was a joke, a breeding ground for corruption and tyranny.
I found it completely ironic that this book that warns about brainwashing in the Allegory of the Cave also pushes for a state-controlled society, where thinking for yourself isn’t really an option.
And yet, looking around today, I wonder, are we really any different? We live in a world where oppression and enlightenment exist side by side.
Plato was slightly progressive in that he thought men and women should have equal education, but only for the ruling Guardian class.
In *The Republic*, Plato didn’t focus much on economics or capitalism as we understand them today. His philosophies were more concerned with justice, governance, and the ideal structure of society. He did touch on wealth and property, particularly in *The Republic and Laws* but it was more on being against wealth accumulation by rulers (philosopher-kings had to live communally and without private property).
While these ideas echo elements of socialism, he never outlined a full economic system like capitalism or socialism.
### **The hatred for art**
Plato was deeply skeptical of art. He believed that it appealed to emotions over rational thought and distorted reality. In *The Republic* (Book X), he argued that art is an imitation of an imitation, pulling people further from the truth. If he had his way, much of modern entertainment, including poetry, drama, and even certain types of music, would not exist in their expressive forms.
Despite Plato’s distrust of the arts, his time was a golden age for Greek drama, sculpture, and philosophy. Ironically, the very city where he built his Academy, Athens, was flourishing with the kind of creativity he wanted to censor.
Even medicine, which thrived under Hippocrates (the father of medicine), was considered an art requiring lifelong mastery. His quote, ‘**Life is short, and art is long**,’ reflects the long span of time it takes to cultivate and appreciate knowledge and skills, which was something Plato valued. Yet, he dismissed most art as a distraction from truth.
Plato particularly criticized poets and playwrights like Homer, as he claimed they spread false ideas about gods and morality. He was also wary of Aristophanes, as he believed his work stirred emotions rather than encouraging rational thought. It probably did not help that Aristophanes mocked Socrates in his play *The Clouds*, which may have influenced Plato’s views.
What’s clear is that Plato didn’t hate art because he didn’t understand it. He deeply understood the power of storytelling and its ability to mold societal beliefs. He argued for banning poets entirely from his “ideal city” to prevent them from misleading the public.
But he did value some forms of art. After all, he was a writer himself, and writing is a form of art. He approved of artistic expressions that promoted moral and intellectual virtue, such as hymns, architecture, and patriotic poetry, as long as they served the greater purpose of instilling order and wisdom in society.
### **Plato’s five regimes**
Plato believed governments naturally decay over time, moving from order to chaos. He outlined five regimes, which he considers each to be worse than the last.
1. *Aristocracy (Philosopher-King rule)* : This is his pitch, the ideal state, ruled by wise elites who value knowledge over power. Some aspects of modern authoritarian states echo this model
2. *Timocracy (Military rule)* : A government driven by honor and discipline, like Sparta. Over time, ambition overtakes virtue, leading to oligarchy.
3. *Oligarchy (Rule by the wealthy)* : The rich seizes power and deepens inequality. Many democracies today show oligarchic tendencies, where money dominates politics.
4. *Democracy (Rule by the masses)* : The people overthrow the elites, prioritizing freedom over order. But without stability, democracy becomes fragile, and vulnerable to demagogues and external manipulation.
5. *Tyranny (Dictatorship)* : When democracy collapses, a charismatic leader rises, promising order but seizing absolute power. What begins as freedom ends in oppression.
Modern politics seems stuck in a cycle, shifting between democracy, oligarchy, and authoritarian control. If Plato was right, no system is permanent and only the illusion of stability remains.
### **Does Plato’s ideal state exist in any country today?**
Some aspects of modern *benevolent dictatorships*, like Singapore under Lee Kuan Yew, or *socialist states* like China, may resemble Plato’s vision in their emphasis on elite rule, long-term planning, and state control. But, these governments operate pragmatically, balancing governance with economic power, political strategy, and public influence rather than strictly adhering to philosophical ideals.
Could this be compared to Taliban rule, given the censorship, authoritarian control, and rigid social hierarchy? While there are superficial similarities, the key difference is that Plato valued knowledge, reason, and meritocracy, while the Taliban enforced religious fundamentalism and theocratic rule. Plato’s Kallipolis also included some level of gender equality for the ruling class, whereas the Taliban’s system is heavily restrictive, especially toward women.
While Plato’s ideas echo in certain authoritarian-leaning states, his rigid caste system, philosopher-led governance, and rejection of democracy set his vision apart from any modern political system.
### **Aristotle’s take on democracy**
Aristotle wasn’t Athenian, but he documented and analyzed 158 constitutions, including Athenian democracy. He studied at Plato’s Academy for over 20 years, growing up in a world influenced by Athens’ democratic experiment. He lived through the tail end of Athens’ golden age, witnessed its decline, and experienced how different forms of rule influenced politics and the mindset of the people under them.
For Aristotle, governments were good or corrupted. The good ones were monarchs, aristocracy (wise elites), and polity (a constitutional gov’t where the middle class keeps power balanced). The corrupted ones were tyranny (monarchy gone wrong), oligarchy, and democracy.
Aristotle saw how democracy, if unchecked, could spiral into chaos or be co-opted by populist leaders. But unlike Plato, who rejected democracy outright, Aristotle believed it could work if properly structured.
His concept of ‘**polity**’ was a constitutional government that balanced democratic participation with stability, relying on a strong middle class to prevent both mob rule and elite domination. This idea of checks and balances, a mixed government, and middle-class stability make polity the closest to modern constitutional democracies today when compared to all 3 of the Greek philosophers.
### **What happened after Athens?**
Of course, democracy didn’t end with Athens, it evolved over time. After Athens’ golden age came Alexander the Great (Aristotle’s student and the king of Macedonia). He conquered Greece, Persia, Egypt, and part of India, creating the largest empire of his time. After his death in 323 BCE, his empire split among his generals, marking the beginning of the Hellenistic period.
Rome saw a shift from the fall of the Roman Republic to the rise of the Roman Empire under Augustus moving away from democratic ideals to centralized rule. But the Western Roman Empire fell about 500 years later largely due to internal decline and invasions by the Germanic Tribes (modern-day Sweden, Switzerland, Germany). The Eastern Roman Empire (Byzantine Empire, based in Constantinople or modern-day Turkey) rose and survived for nearly 1,000 more years until it fell to the Ottoman Turks in 1453.
During the Medieval period (5th–15th century), Europe saw a rise in monarchies and feudalism. Power shifted to kings, nobles, and the church, with little direct participation from ordinary people. Some democratic elements survived in places like Venice and Florence, where wealthy merchant families controlled city-states.
By the 17th century, democracy started creeping back into political thought, though not without skepticism. Machiavelli and Hobbes weren’t exactly fans of democracy, but they had plenty to say about power and governance. Later on Machiavelli hinted on the possible idea of a republic/mixed government in the *Discourses of Livy *
Meanwhile, England was going through its own struggles with power. The English Civil War (1642–1651) was a showdown between King Charles I, who wanted absolute power, and Parliament, which wanted more influence. Charles ignored Parliament and was executed in 1649. England briefly became a republic under Oliver Cromwell, but the monarchy returned after his death.
In 1688, the Glorious Revolution forced King James II (Charles I’s son) to flee to France. Parliament then invited William of Orange (a Dutch Protestant) and his wife Mary to take the throne. In 1689, they signed the English Bill of Rights, which limited the monarchy’s power, strengthened Parliament, and guaranteed certain rights to citizens.
This was a significant moment in history as it effectively ended the absolute monarchy and established a constitutional monarchy in England.
The American Revolution in 1776 and the French Revolution in 1789 pushed democratic ideals forward but still excluded women, slaves, and the poor. Historian Luciano Canfora, in his book* Democracy in Europe*, argues that early liberal democracy was full of contradictions as it preached equality, yet economic and social exclusion remained.
(Note: If you want to understand the history of *anarchism*, the French Revolution is a key starting point. It influenced early anti-authoritarian thought, which later evolved into socialist and anti-capitalist movements. Over time, libertarians adopted anarchist principles, leading to the development of anarcho-capitalism. The concept of anarchism in politics has taken nearly two centuries to emerge in its modern form).
The 19th and 20th centuries saw the expansion of democracy. But as Canfora explains it, it also saw its exploitation and manipulation. Although industrialization and social movements pushed for broader suffrage, democracy remained controlled by elites who feared true mass participation. Democracy became a tool for maintaining power rather than a true expression of the people’s will.
According to Canfora, the Cold War turned democracy into a geopolitical tool, with Western powers supporting or opposing democratic movements based on strategic interests rather than principles.
Today, there are many versions of democracy from direct democracy to representative democracy, presidential democracy, social democracy, religious democracy, constitutional democracy, communist democracy, and more. And is often viewed as a brand name for “good governance”. But are they?
### **In the end, was Plato right?**
At a meta level, Plato’s argument was about control, be it controlling what people read, hear, and even think. The debate often centers on curated knowledge vs rhetoric. Plato believed that absolute obedience would bring harmony, even at the cost of individuality. Today, we call that totalitarian or dictatorship
But when we take a second look at things, are we already living in Plato’s world?
Governments across the globe control education, influence media narratives, and regulate speech. Many so-called democracies aren’t as free as they claim to be. So maybe Plato’s influence on modern democracies runs deeper than we realize.
Another key debate today is that, unlike Plato’s time, most people *are* educated. However, much of this education is still designed by state systems, which can influence how people think and vote. How do we balance empowering people through education while ensuring true independence in a system built on critical thinking rather than one that merely feeds information?
Truth is, democracy has never been a pure, people-driven system. It has always been influenced by power struggles, wealth, and manipulation. Often it has been an instrument of control rather than liberation.
Yet, the people have always resisted. In the past, they gathered in the streets, risking tear gas, rubber bullets or being dragged into Black Marias. Today, digital activism has allowed for mass mobilization with fewer risks. In many countries especially in third-world countries, online movements on platforms like Twitter during Jack’s time, forced governments to overturn policies. This may be the closest we've come to real democracy which is direct action without the usual state violence.
But with this rise in digital activism comes the counterforce through government and corporate requirements for censorship, algorithmic manipulation, and the quiet steering of public discourse. Platforms once seen as tools of liberation can become tools of control. *Facebook mood experiment* in 2012 tested positive and negative content on 700,000 people and proved emotions can be manipulated at scale. *Cambridge Analytica* was exposed in its attempt to manipulate votes.
This is where decentralized networks like Nostr matter as a fundamental resistance to centralized control over speech. If democracy is to return to the people, it must also break free from algorithmic gatekeepers and censorship.
Because the so-called ‘ignorant masses’, the very people Plato dismissed, are the ones who fight for freedom.
Because real democracy isn’t about control.
It’s about freedom.
It’s about choice.
It’s about the people, always.
-

@ df478568:2a951e67
2025-02-19 00:27:48
Rockland Review
I bought a Rak Wireless Pocket Mesh from the [Rockland](https://store.rokland.com/) after learning about[fresnomesh](https://fresnomesh.com/mobile)it from [The Survival Podcast](https://www.thesurvivalpodcast.com/lora-mesh/ and [watching Bitcoin Veterans use Meshtastic to set up emergency communication channels](nostr:note18ydlx9lyy6ql8c3yy60sa059cw7g9v00n674utz46rh62gyx42as28tfdd) in North Carolina after hurricanes knocked out all communication.
## The Pocket Mesh Makes Meshtastic Easy

The battery lasts a long time. I've had my Pocket mesh running for a couple days without the battery dying on me. I scanned a QR code with my phone and could connect to meshtastic nerds like me right away. I did not set up a repeater. It was no complicated at all. I want to get a few more of these for my family.
### Bitcoin Accepted Here

One other thing I really like about this company is that they accept bitcoin over the lightning network. You don't need bitcoin to use bitcoin You can download the Strike app and automatically convert your fiat USD to bitcoin over the lightning network. The advantage is you do not need to trust your sensetive credit card information with Rak Wireless. I'm nor saying I don't trust their cybersecurity, I'm saying I don't need to.
Summary created by unleashed.chat.
nostr:npub1marc26z8nh3xkj5rcx7ufkatvx6ueqhp5vfw9v5teq26z254renshtf3g0
https://mempool.marc26z.com/block/000000000000000000018ec35a489c8329d35139ee03e708e49bc0029e2f62b4
https://gitea.marc26z.com/marc/Marc26z/raw/commit/bdc2e44b480876978f283aeb020c716ab0462fda/Screenshot%20from%202025-02-18%2016-26-27.png
-

@ b8851a06:9b120ba1
2025-02-18 20:42:10
> Nothing disgusts me more than the way the white-collar justice system operates—where billion-dollar crimes are punished with pocket-change fines, and the executives responsible walk free, richer than ever. You will never see this on the centralized, Keynesian, fiat-owned mainstream media. Only here on #Nostr, where the truth isn’t for sale.
>
JPMorgan Chase is not just a bank—it is a repeat offender in the global financial system. With 272 violations and $39.3 billion in fines since 2000, its track record rivals that of the most notorious criminal enterprises. And yet, it remains untouchable, shielded by its financial dominance and a regulatory system that punishes lawbreaking with fines too insignificant to be real deterrents.
In 2024 alone, JPMorgan Chase reported $58.5 billion in net income, an 18% increase from 2023. Meanwhile, it incurred $825 million in fines, which accounted for just 1.41% of its net income—a rounding error for the banking giant.
### Fines vs. Profits: The Cost of Doing Business
Year Total Revenue (in billions) Net Income (in billions) Total Fines (in billions) Fines as % of Net Income
2024 $177.6 $58.5 $0.825 1.41%
2023 $158.1 $49.6 Data not specified N/A
2022 $132.3 $35.9 Data not specified N/A
###### Sources: Bloomberg, Ventureburn
JPMorgan’s profits dwarf the penalties it pays, showing that these fines are simply the cost of doing business.
### 2024: A Continuation of Violations
Despite its massive profits, JPMorgan continues its long history of lawbreaking. In 2024 alone, it has been fined $825 million across multiple categories:
• $250 million – Banking violations
• $200 million – Investor protection violations
• $151 million – Securities violations
• $125 million – Price-fixing practices
• $98.2 million – Banking violations
Additionally, in January 2024, the bank was fined $18 million for forcing customers to stay silent about illegal activities through confidential release agreements—another example of corporate misconduct being covered up rather than addressed.
JPMorgan has admitted to market manipulation, securities fraud, and price-fixing—yet it remains a repeat offender because financial penalties do not impact its bottom line.
### The Human Cost: How JPMorgan Hurts Regular People
While JPMorgan’s executives cash in on record profits, their crimes directly harm ordinary people:
• Loan denials due to false credit reporting
• Higher interest rates on credit cards and loans
• Difficulty opening new deposit accounts
• Challenges in renting apartments or securing jobs
• Thousands of suspicious transactions totaling $1.5 billion went unreported
Beyond the numbers, real people suffer from these violations. In 2024, JPMorgan was sued for failing to protect consumers from fraud on the Zelle payment platform. Customers lost over $870 million since Zelle’s 2017 launch, and JPMorgan ignored thousands of fraud complaints, even advising victims to contact scammers directly to get their money back.
This is not just corporate negligence—it is systematic exploitation.
### Breakdown of JPMorgan’s Violations (2000-2024)
JPMorgan’s violations span nearly every financial crime category imaginable:
• Toxic Securities Abuses: $13.46 billion
• Investor Protection Violations: $6.25 billion
• Mortgage Abuses: $5.36 billion
• Banking Violations: $4.26 billion
• Consumer Protection Violations: $3.19 billion
This systematic lawbreaking has become a business strategy rather than a legal risk.
### Regulatory Capture: Why JPMorgan Gets Away With It
The question remains: Why does nothing change? The answer is regulatory capture—where the regulators responsible for policing the banks are influenced or controlled by the industry itself.
### The Revolving Door: How Banks Own Their Regulators
• Regulators frequently leave their jobs to work for the banks they once supervised.
• The banking industry is so complex that even lawmakers struggle to verify its practices.
• Regulators fear antagonizing banks because they often seek employment in the same industry.
JPMorgan exploits this system to avoid real consequences. Its CEO, Jamie Dimon, has openly criticized regulation and vowed to fight new financial rules, ensuring that oversight remains weak and penalties remain a slap on the wrist.
### Systematic Failures in Regulation
• Consumer protection is spread across seven different agencies, creating inefficiency.
• Conflicts of interest within these agencies weaken enforcement.
• Some regulators have explicit mandates to promote the financial system’s competitiveness rather than hold banks accountable.
This cycle ensures that fines remain low, executives avoid jail, and banks like JPMorgan continue breaking the law with impunity.
### Industry-Wide Issues: A Systemic Problem
JPMorgan Chase is not alone. The banking sector as a whole is rife with fraud and corruption:
• Wells Fargo: In 2024, Wells Fargo was sued for failing to protect customers from fraud on the Zelle payment platform, contributing to $870 million in consumer losses.
• Bank of America: Also implicated in the Zelle fraud lawsuit for failing to implement basic fraud protections.
These cases prove that financial misconduct is not an exception—it’s the industry standard.
### Too Big to Fail, Too Criminal to Stop
JPMorgan’s status as a “too big to fail” institution means that no matter how many laws it breaks, no matter how many billions it pays in fines, it remains untouchable.
If an individual committed fraud, price-fixing, or money laundering on this scale, they would spend a lifetime in prison. JPMorgan? It just keeps making record profits.
This is not justice. This is the financial elite operating above the law. Until executives face criminal prosecution instead of just fines, JPMorgan Chase will remain what it has been for decades:
**A financial felon in a three-piece suit.**
### The Next Stage of Banking Corruption
JPMorgan’s violations are not just a relic of past financial crises. The next stage of banking corruption is already underway—and this time, the stakes are even higher.
With AI-driven market manipulation, rising corporate surveillance, and the increasing concentration of financial power, the system is evolving in ways that regulators are not prepared to handle. JPMorgan and its peers are already positioning themselves to profit from the next crisis, just as they did in 2008.
The question is not whether JPMorgan will commit future crimes. The question is how much they will profit from them—and how little they will be held accountable.
The reality is clear: JPMorgan Chase is not a bank that sometimes breaks the law. It is a criminal enterprise that happens to operate as a bank.
**#Bitcoin is the exit. The escape from their rigged system. The end of their unchecked power.**
-

@ 97c70a44:ad98e322
2025-02-18 20:30:32
For the last couple of weeks, I've been dealing with the fallout of upgrading a web application to Svelte 5. Complaints about framework churn and migration annoyances aside, I've run into some interesting issues with the migration. So far, I haven't seen many other people register the same issues, so I thought it might be constructive for me to articulate them myself.
I'll try not to complain too much in this post, since I'm grateful for the many years of Svelte 3/4 I've enjoyed. But I don't think I'll be choosing Svelte for any new projects going forward. I hope my reflections here will be useful to others as well.
If you're interested in reproductions for the issues I mention here, you can find them below.
- [Can't save state to indexeddb](https://github.com/sveltejs/svelte/issues/15327)
- [Component unmount results in undefined variables in closures](https://github.com/sveltejs/svelte/issues/15325)
# The Need for Speed
To start with, let me just quickly acknowledge what the Svelte team is trying to do. It seems like most of the substantial changes in version 5 are built around "deep reactivity", which allows for more granular reactivity, leading to better performance. Performance is good, and the Svelte team has always excelled at reconciling performance with DX.
In previous versions of Svelte, the main way this was achieved was with the Svelte compiler. There were many ancillary techniques involved in improving performance, but having a framework compile step gave the Svelte team a lot of leeway for rearranging things under the hood without making developers learn new concepts. This is what made Svelte so original in the beginning.
At the same time, it resulted in an even more opaque framework than usual, making it harder for developers to debug more complex issues. To make matters worse, the compiler had bugs, resulting in errors which could only be fixed by blindly refactoring the problem component. This happened to me personally at least half a dozen times, and is what ultimately pushed me to migrate to Svelte 5.
Nevertheless, I always felt it was an acceptable trade-off for speed and productivity. Sure, sometimes I had to delete my project and port it to a fresh repository every so often, but the framework was truly a pleasure to use.
# Svelte is not Javascript
Svelte 5 doubled down on this tradeoff — which makes sense, because it's what sets the framework apart. The difference this time is that the abstraction/performance tradeoff did not stay in compiler land, but intruded into runtime in two important ways:
- The use of proxies to support deep reactivity
- Implicit component lifecycle state
Both of these changes improved performance _and_ made the API for developers look slicker. What's not to like? Unfortunately, both of these features are classic examples of a [leaky abstraction](https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/), and ultimately make things _more_ complex for developers, not less.
## Proxies are not objects
The use of proxies seems to have allowed the Svelte team to squeeze a little more performance out of the framework, without asking developers to do any extra work. Threading state through multiple levels of components without provoking unnecessary re-renders in frameworks like React is an infamously difficult chore.
Svelte's compiler avoided some of the pitfalls associated with virtual DOM diffing solutions, but evidently there was still enough of a performance gain to be had to justify the introduction of proxies. The Svelte team also [seems to argue](https://svelte.dev/blog/runes) that their introduction represents an improvement in developer experience:
> we... can maximise both efficiency and ergonomics.
Here's the problem: Svelte 5 _looks_ simpler, but actually introduces _more_ abstractions.
Using proxies to monitor array methods (for example) is appealing because it allows developers to forget all the goofy heuristics involved with making sure state was reactive and just `push` to the array. I can't count how many times I've written `value = value` to trigger reactivity in svelte 4.
In Svelte 4, developers had to understand how the Svelte compiler worked. The compiler, being a leaky abstraction, forced its users to know that assignment was how you signaled reactivity. In svelte 5, developers can just "forget" about the compiler!
Except they can't. All the introduction of new abstractions really accomplishes is the introduction of more complex heuristics that developers have to keep in their heads in order to get the compiler to act the way they want it to.
In fact, this is why after years of using Svelte, I found myself using Svelte stores more and more often, and reactive declarations less. The reason being that Svelte stores are _just javascript_. Calling `update` on a store is _simple_, and being able to reference them with a `$` was just a nice bonus — nothing to remember, and if I mess up the compiler yells at me.
Proxies introduce a similar problem to reactive declarations, which is that they look like one thing but act like another on the edges.
When I started using Svelte 5, everything worked great — until [I tried to save a proxy to indexeddb](https://github.com/sveltejs/svelte/issues/15327), at which point I got a `DataCloneError`. To make matters worse, it's impossible to reliably tell if something is a `Proxy` without `try/catch`ing a structured clone, which is a performance-intensive operation.
This forces the developer to remember what is and what isn't a Proxy, calling `$state.snapshot` every time they pass a proxy to a context that doesn't expect or know about them. This obviates all the nice abstractions they gave us in the first place.
## Components are not functions
The reason virtual DOM took off way back in 2013 was the ability to model your application as composed functions, each of which takes data and spits out HTML. Svelte retained this paradigm, using a compiler to sidestep the inefficiencies of virtual DOM and the complexities of lifecycle methods.
In Svelte 5, component lifecycles are back, react-hooks style.
In React, hooks are an abstraction that allows developers to avoid writing all the stateful code associated with component lifecycle methods. Modern React tutorials universally recommend using hooks instead, which rely on the framework invisibly synchronizing state with the render tree.
While this does result in cleaner code, it also requires developers to tread carefully to avoid breaking the assumptions surrounding hooks. Just try accessing state in a `setTimeout` and you'll see what I mean.
Svelte 4 had a few gotchas like this — for example, async code that interacts with a component's DOM elements has to keep track of whether the component is unmounted. This is pretty similar to the kind of pattern you'd see in old React components that relied on lifecycle methods.
It seems to me that Svelte 5 has gone the React 16 route by adding implicit state related to component lifecycles in order to coordinate state changes and effects.
For example, here is an excerpt from the documentation for [$effect](https://svelte.dev/docs/svelte/$effect):
> You can place $effect anywhere, not just at the top level of a component, as long as it is called during component initialization (or while a parent effect is active). It is then tied to the lifecycle of the component (or parent effect) and will therefore destroy itself when the component unmounts (or the parent effect is destroyed).
That's very complex! In order to use `$effect`... effectively (sorry), developers have to understand how state changes are tracked. The [documentation for component lifecycles](https://svelte.dev/docs/svelte/lifecycle-hooks) claims:
> In Svelte 5, the component lifecycle consists of only two parts: Its creation and its destruction. Everything in-between — when certain state is updated — is not related to the component as a whole; only the parts that need to react to the state change are notified. This is because under the hood the smallest unit of change is actually not a component, it’s the (render) effects that the component sets up upon component initialization. Consequently, there’s no such thing as a “before update”/"after update” hook.
But then goes on to introduce the idea of `tick` in conjunction with `$effect.pre`. This section explains that "`tick` returns a promise that resolves once any pending state changes have been applied, or in the next microtask if there are none."
I'm sure there's some mental model that justifies this, but I don't think the claim that a component's lifecycle is only comprised of mount/unmount is really helpful when an addendum about state changes has to come right afterward.
The place where this really bit me, and which is the motivation for this blog post, is when state gets coupled to a component's lifecycle, even when the state is passed to another function that doesn't know anything about svelte.
In my application, I manage modal dialogs by storing the component I want to render alongside its props in a store and rendering it in the `layout.svelte` of my application. This store is also synchronized with browser history so that the back button works to close them. Sometimes, it's useful to pass a callback to one of these modals, binding caller-specific functionality to the child component:
```javascript
const {value} = $props()
const callback = () => console.log(value)
const openModal = () => pushModal(MyModal, {callback})
```
This is a fundamental pattern in javascript. Passing a callback is just one of those things you do.
Unfortunately, if the above code lives in a modal dialog itself, the caller component gets unmounted before the callback gets called. In Svelte 4, this worked fine, but in Svelte 5 `value` gets updated to `undefined` when the component gets unmounted. [Here's a minimal reproduction](https://github.com/sveltejs/svelte/issues/15325).
This is only one example, but it seems clear to me that _any_ prop that is closed over by a callback function that lives longer than its component will be undefined when I want to use it — with no reassignment existing in lexical scope. It seems that the [reason this happens](https://github.com/sveltejs/svelte/issues/14707) is that the props "belong" to the parent component, and are accessed via getters so that the parent can revoke access when it unmounts.
I don't know why this is necessary, but I assume there's a good engineering reason for it. The problem is, this just isn't how javascript works. Svelte is essentially attempting to re-invent garbage collection around component lifecycles, which breaks the assumption every javascript developer has that variables don't simply disappear without an explicit reassignment. It should be safe to pass stuff around and let the garbage collector do its job.
# Conclusion
Easy things are nice, but as Rich Hickey says, [easy things are not always simple](https://www.infoq.com/presentations/Simple-Made-Easy/). And like Joel Spolsky, I don't like being surprised. Svelte has always been full of magic, but with the latest release I think the cognitive overhead of reciting incantations has finally outweighed the power it confers.
My point in this post is not to dunk on the Svelte team. I know lots of people like Svelte 5 (and react hooks). The point I'm trying to make is that there is a tradeoff between doing things on the user's behalf, and giving the user agency. Good software is built on understanding, not cleverness.
I also think this is an important lesson to remember as AI-assisted coding becomes increasingly popular. Don't choose tools that alienate you from your work. Choose tools that leverage the wisdom you've already accumulated, and which help you to cultivate a deeper understanding of the discipline.
Thank you to Rich Harris and team for many years of pleasant development. I hope that (if you read this) it's not _so_ full of inaccuracies as to be unhelpful as user feedback.
-

@ fdb8c828:84c16368
2025-02-18 18:40:12
On a retreat to the mountains, I escape
to step outside of regular life for a time.
The peaks dressed in winter white,
time refrigerated by the falling flakes,
and lovely folks around me, old and new,
alight all the artist parts of my brain.
On a shelf in an old bookstore,
I meet myself, a mixture of the past and future,
and she is disappointed, mournful.
While browsing poetry titles, she cries.
I listen to her, and she says,
you’re running out of time.
On a separate shopping excursion,
I adopt a pair of sunglasses -
two perfect black circles to conceal
the passing of time that my eyes can’t hide.
I show my friend of photo of me at 16,
she says, you look exactly the same.
On my return flight, all that I am
packaged back inside my bags, inside my body,
my appetite for life appeased for the moment,
I decide I like myself, and I can change,
as everything will mix with time,
coming out the other side, beautiful.

originally posted at https://stacker.news/items/889720
-

@ 5a261a61:2ebd4480
2025-02-18 18:22:19
The yellow light won the battle against the feeble excuse for curtains and crept into the room. It moved cautiously as if was afraid where to step. A common trait to all who found their way into the back room of the Lost Cases Detective Agency. The current owner had inherited both the premises and the name from his predecessor, and whenever someone questioned the name, he would announce half-irritably that changing it was simply too expensive to afford. The noodle vendor from the floor below would never miss the chance to add that people who end up at his place didn't choose it for the name anyway. The truth (which he was willing to admit only to the creaking fan that scared away mice rather than actually serving its function) was that he liked the name. Like attracts like. A lost soul for lost cases. The darkness was finally driven even from the eyelids of the figure on the bed, who woke up with a dissatisfied grunt.
A few steps to the sink hidden behind a screen. The shadows cast by the street light might have seemed depressive to some, mainly because they weren't accompanied by the warming feeling of sunlight, blocked by the high skyscrapers embracing the lower houses of the former middle class. Tom smiled resignedly at this thought. It perfectly captured how everything in this city merged into one big tangle, which looks beautiful until you have to untangle it. The yellow light came from a neon sign across the street advertising "The Beach." One of many places in this City where one could hide in a drop of alcohol and the embrace of a beautiful woman. Though it was necessary to maintain that order... the companions didn't exactly recruit from the best of the best looking local beauties.
Tom turned the tap and waited until the water, after grunting, gargling, and several splutters, settled and began flowing somewhat predictably. Tom didn't mind the wait. In his line of work, patience was cheaper than bullets. And it was nice to have time when he could do nothing but wait. He examined himself in the mirror. The shadows did him favors, adding years he hadn't earned. As young as he was, he needed all the help he could get - clients wanted their private dick weathered, not fresh out of the wrapper. He had the look down pat: world-weary veteran who knew all the angles. Truth was, he couldn't even figure out the angle of his own life, but that was a case file he kept closed. The water spluttered one last time. "Good morning, dickhead," he greeted himself with unwavering conviction that today would be better than yesterday. While most people were heading to dinner, putting kids to bed, or hurrying to visit their lovers at this hour, he was waking up. So for him, it was morning. For him and a myriad of other existences who, by choice or necessity, lived more at night than during the day.
Finally, he trimmed his beard to short, neat stubble - enough to look serious, but with a touch of toughness suggesting he wasn't afraid to get his hands dirty. "Perfect," he muttered to himself, "I look like a man who knows what he's doing." Maybe that illusion will convince me one day, he thought as he turned off the light in the small bathroom.
With a final look in the mirror, he adjusted his shirt collar. He was ready to face the city's challenges. Whatever awaited him today, at least he'd look prepared for it.
From the hook by the door, he grabbed a ring with an identification tag and some loose change. He ran down a flight of creaking stairs and headed past empty bar stools toward the exit. The disadvantage of living above a restaurant. Though the major advantage is the high of the rent. Or rather, its lowness. Jiro, the owner of the small bistro and, coincidentally, a decent exterminator, looked at him through a dense veil of greasy vapors, nodded, and continued stirring the noodles.
Where to next?
- say hi
- get some food
- just run outside
> This is kind of an experiment with converting my WIP interactive fiction project to the nostr longnote format and letting readers decide. Originally, this story leans quite heavily toward FLR/femdom/mindcontrol/noir/steampunk/fantasy and hopefully a little mystery detective story, but let's see where (and if) it will lead from here.
Also, it's mostly translated from my native language, so sorry if some wording seems stiff.
-

@ 6e0ea5d6:0327f353
2025-02-18 18:11:32
Ascolta bene, si?
I have something to tell you, amico mio, something uncomfortable, yet a fundamental piece of advice for your personal journey toward painful success: always be mindful of how you handle your thoughts and conduct.
More often than not, we are our own worst enemies, and our own thoughts and behaviors are the true obstacles in our lives.
Perhaps you feel trapped in a cycle of negative thinking, feeding your fears and insecurities. You may have already realized that your poor habits have harmed your relationships and goals.
What matters is understanding that, although these patterns may seem inevitable, we have the power to change them.
The Stoic concepts of memento mori and premeditatio malorum remind us of the transience of life and the importance of preparing for the challenges ahead.
Memento mori means "remember that you are mortal," and premeditatio malorum translates to "premeditation of evils." These ideas encourage us to reflect on life's fleeting nature and mentally prepare for the hardships that will come.
By remembering that life is short and that adversity is inevitable, we can become more resilient and courageous. We can face our own thoughts and behaviors with greater determination and seek the change needed to achieve our goals and become better individuals.
Identify the areas where you need improvement and start working on them. Change is not easy, but it is possible. Use memento mori to remind yourself that life is short and valuable, and premeditatio malorum to mentally prepare for the challenges that lie ahead.
Take control of your thoughts and actions, and become the best version of yourself. Forget about others—their lives are nothing more than an illusory stage play.
Thank you for reading, my friend!
If this message has helped you in any way, consider leaving your “🥃” as a token of appreciation.
A toast to our family!
-

@ 554ab6fe:c6cbc27e
2025-02-18 18:09:06
Presence is a crucial aspect of mental and physical health. This idea is not only espoused by religious teachers, but is slowly validated within scientific research. Much of this blog is devoted to exploring the scientific validation of mindfulness practices on health, in particular, the effect mindfulness meditation has on our physical and mental health. However, multiple techniques can help foster this holistic lifestyle. Yoga is a famous example in the west as another form of this practice. Of course, yoga was traditionally meditative, and the physical aspect of yoga is new in relative terms. Regardless, yoga is a physical version of meditation formulated in India. Another culture that developed practices to instill presence is rooted in China. Not only did the Chinese meditate, but they formed a physical exercise and martial art known as Qi Gong (气功, *qi gong*), and a similar practice to emerge later known as Tai Chi (太极拳, *tai ji quan*). These practices produce similar effects on health compared to yoga and meditation. Therefore, they are one of many methods one can utilize to find presence.
Qi Gong is one of the most ancient forms of traditional Chinese medicine with a history of refinement of over 5000 years (Jahnke et al., 2010). The practice is composed of several martial art postures that are very fluid in motion. In the traditional sense, the purpose of these practices is to enhance one’s Qi (气). Tai Chi and Qi Gong are similar yet different. Tai Chi is typically more choreographed, lengthy, and more complex movements (Jahnke et al., 2010). Qi Gong, on the other hand, is simpler and easier to learn. Traditional instructions for both Qi Gong and Tai Chi are paraphrased as “mind the body and the breath, and then clear the mind to distill the Heavenly elixir within” (Jahnke et al., 2010). The intention of this post is not to fully elaborate on the philosophical implications of these words. However, note how the instructions here are almost identical to those of meditation practices.
The practice intends to instill an awareness of the present body, which leads to a calm mind that cultivates an understanding of something heavenly within. This idea shares a remarkable resemblance to the concept that meditation and the mind’s stillness create an altered characterized by a sense of unity of being with all of life, though there is no perfect term to describe this experience. Yet, this unity is likely the same thing as this “Heavenly elixir.” This experience has been clinically observed in meditators, psychedelic users, and those who experience religious moments. It seems to be the experiential one of the by-products and intents of these Chinese practices.
Outside of the more spiritual benefit, these practices manifest health benefits as well. Most research regarding these techniques focuses on Tai Chi. However, a literature review article noted that the Tai Chi used in academic settings is often simplified and more akin to Qi Gong (Jahnke et al., 2010). Therefore, Tai Chi and Qi Gong’s scientific literature will be considered the same here. For simplicity, I will refer to both as meditative martial arts.
Meditative martial arts share many health-related benefits to traditional forms of exercise, despite being less strenuous. For example, a literature review found that despite the absence of weight-bearing activity, meditative martial arts retard bone loss and the occurrence of fractures (Jahnke et al., 2010). Additionally, these practices help improve knee health in older adults, even compared to traditional forms of exercise (Chen et al., 2016). Meditative martial arts are also comparable to other forms of exercise in reducing blood pressure (Jahnke et al., 2010). Other research also similarly shown yoga to be superior to regular exercise in certain regards (Ross & Thomas, 2010). This is not to say that the purely physical aspect of meditative martial arts or yoga is superior in all cases. Instead, it is the mental aspect incorporated that provides extra benefits.
Meditative martial arts have been shown to decrease or modulate heart rate variability (HRV) (Jahnke et al., 2010; Lu & Kuo, 2003; Wei et al., 2016). This indicates increased parasympathetic nervous system activity in response to the aspects of the practice. Increased parasympathetic activity can provide a cascade of health benefits across the body and is likely the source of the extra help. Meditative martial arts have also been theorized to benefit the gut microbiome and immune function, likely via the same mechanism, making meditative martial arts much more than physical exercise or fancy movements, but a practice that cultivates holistic health.
The idea that these meditative martial arts provide additional benefits, compared to traditional exercises that seem like the benefits of sitting meditation, brings to question the essence of these practices. It may seem odd that physical activity can induce benefits caused by sitting meditation because sitting meditation is, in part, aimed to generate mental stillness. Yet, optimal mental stillness seems impossible when one is mentally choreographing movements. This highlights the importance of not the mental stillness achieved by meditation, but the attention to the body’s sensations in the present moment. Both Tai Chi, Qi Gong, and even yoga involve the constant monitoring of the body’s sensations and position. The practice of this draws the individual’s attention to the present and experience of the present. This is a crucial aspect of all forms of meditation, including the sitting version. Perhaps sitting meditations may provide a better opportunity for mental stillness, but this is not the only important aspect of mindfulness practice.
For this reason, incorporating all these practices should be seen as the optimal path towards the goal. For one cannot be healthy by simply sitting, exercise is needed. At the same time, achieving great mental stillness will only heighten one’s practice beyond that gained merely by the meditative martial arts and yoga.
There are multiple techniques and methods to practice mindfulness that provide significant benefits to health and well-being. Both the sitting and movement-oriented practices contain their pros and cons. Neither is all encompassing and perhaps they are only complete when together. For those seeking a lifestyle of mindfulness, interested in holistic health, and maybe even the obtainment of enlightenment, it is recommended that sitting meditation and meditative martial arts, or yoga, be incorporated within your daily practice.
**References**
Chen, Y. W., Hunt, M. A., Campbell, K. L., Peill, K., & Reid, W. D. (2016). The effect of Tai Chi on four chronic conditions - cancer, osteoarthritis, heart failure and chronic obstructive pulmonary disease: A systematic review and meta-analyses. *British Journal of Sports Medicine*, *50*(7), 397–407. https://doi.org/10.1136/bjsports-2014-094388
Jahnke, R., Larkey, L., Rogers, C., Etnier, J., & Lin, F. (2010). A comprehensive review of health benefits of qigong and tai chi. *American Journal of Health Promotion : AJHP*, *24*(6). https://doi.org/10.4278/ajhp.081013-lit-248
Lu, W. A., & Kuo, C. D. (2003). The Effect of Tai Chi Chuan on the Autonomic Nervous Modulation in Older Persons. *Medicine and Science in Sports and Exercise*, *35*(12), 1972–1976. https://doi.org/10.1249/01.MSS.0000099242.10669.F7
Ross, A., & Thomas, S. (2010). The health benefits of yoga and exercise: A review of comparison studies. *Journal of Alternative and Complementary Medicine*, *16*(1), 3–12. https://doi.org/10.1089/acm.2009.0044
Wei, G. X., Li, Y. F., Yue, X. L., Ma, X., Chang, Y. K., Yi, L. Y., Li, J. C., & Zuo, X. N. (2016). Tai Chi Chuan modulates heart rate variability during abdominal breathing in elderly adults. *PsyCh Journal*, *5*(1), 69–77. https://doi.org/10.1002/pchj.105
-

@ 6e0ea5d6:0327f353
2025-02-18 17:59:24
At the banquet of consequences, there is only one worthy dish: pride, never regret. At that table, the main course will not be served with lukewarm excuses or poorly disguised remorse. Let it be pride—fiery, indomitable—that fills your mouth and satisfies your hunger for dignity. The man who surrenders to remorse is already dead before the grave. It is honor that should fill your stomach, not the bitter taste of shame.
When the battle weighs heavy, remember: you fight for those you love, for true love—the one that keeps us standing in the storm—is an anchor of iron. It is not the soft, sweet love of illusions but the steel that holds you to the ground when chaos tries to drag you away. Let hatred be the fuel of your victory, as long as you control it. If it serves you to win, so be it; but make it a weapon, not a chain. Defeat is not an option, and those who bow before it bear the mark of weakness forever.
Understand this: victory and defeat are fleeting; it is the battle itself that truly matters and defines who you are. Only a fool longs for the end. For the man who knows, rest comes only with the last breath. As long as there is life, there is struggle, and that is enough.
Reality is not for the weak. If you cannot bear the truth, seek comfort in ignorance. But a man, fully made, knows what it means to forge character through blood and silence. And finally, expect nothing from anyone. The one who enters battle relying on others’ help is already defeated. You were not born to be spared or carried. You were born to stand on your own strength and feast at the banquet of your victories.
Thank you for reading, my friend!
If this message has helped you in any way, consider leaving your “🥃” as a token of appreciation.
A toast to our family!
-

@ 266815e0:6cd408a5
2025-02-18 17:26:16
To all existing nostr developers and new nostr developers, stop using kind 1 events... just stop whatever your doing and switch the kind to `Math.round(Math.random() * 10000)` trust me it will be better
## What are kind 1 events
kind 1 events are defined in [NIP-10](https://github.com/nostr-protocol/nips/blob/master/10.md) as "simple plaintext notes" or in other words social posts.
## Don't trick your users
Most users are joining nostr for the social experience, and secondly to find all the cool "other stuff" apps
They find friends, browse social posts, and reply to them. If a user signs into a new nostr client and it starts asking them to sign kind 1 events with blobs of JSON, they will sign it without thinking too much about it
Then when they return to their comfy social apps they will see that they made 10+ posts with massive amounts of gibberish that they don't remember posting. then they probably will go looking for the delete button and realize there isn't one...
Even if those kind 1 posts don't contain JSON and have a nice fancy human readable syntax. they will still confuse users because they won't remember writing those social posts
## What about "discoverability"
If your goal is to make your "other stuff" app visible to more users, then I would suggest using [NIP-19](https://github.com/nostr-protocol/nips/blob/master/19.md) and [NIP-89](https://github.com/nostr-protocol/nips/blob/master/89.md)
The first allows users to embed any other event kind into social posts as `nostr:nevent1` or `nostr:naddr1` links, and the second allows social clients to redirect users to an app that knows how to handle that specific kind of event
So instead of saving your apps data into kind 1 events. you can pick any kind you want, then give users a "share on nostr" button that allows them to compose a social post (kind 1) with a `nostr:` link to your special kind of event and by extension you app
## Why its a trap
Once users start using your app it becomes a lot more difficult to migrate to a new event kind or data format.
This sounds obvious, but If your app is built on kind 1 events that means you will be stuck with their limitation forever.
For example, here are some of the limitations of using kind 1
- Querying for your apps data becomes much more difficult. You have to filter through all of a users kind 1 events to find which ones are created by your app
- Discovering your apps data is more difficult for the same reason, you have to sift through all the social posts just to find the ones with you special tag or that contain JSON
- Users get confused. as mentioned above users don't expect their social posts to be used in "other stuff" apps
- Other nostr clients won't understand your data and will show it as a social post with no option for users to learn about your app
-

@ 266815e0:6cd408a5
2025-02-18 17:25:31
## noStrudel
Released another major version of noStrudel v0.42.0
Which included a few new features and a lot of cleanup
nostr:naddr1qvzqqqr4gupzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzfmhxue69uhkummnw3e82efwvdhk6tcqp3hx7um5wf6kgetv956ry6rmhwr
## Blossom
On the blossom front there where a few more PRs
- Expanded the documentation around CORS headers in BUD-01 thanks to nostr:npub1a6we08n7zsv2na689whc9hykpq4q6sj3kaauk9c2dm8vj0adlajq7w0tyc
- Made auth optional on the `/upload` endpoint [PR](https://github.com/hzrd149/blossom/pull/33)
- Added a `HEAD /media` endpoint for BUD-05 [PR](https://github.com/hzrd149/blossom/pull/42)
- Added range request recommendations to BUD-01 [PR](https://github.com/hzrd149/blossom/pull/47)
With blossom uploads starting to be supported in more nostr clients users where starting to ask where to find a list of blossom servers. so I created a simple nostr client that allows users to post servers and leave reviews
[blossomservers.com](https://blossomservers.com)
Its still very much a work in progress (needs login and server and review editing)
The source is on [github](https://github.com/hzrd149/blossomservers)
I also started another project to create a simple account based paid blossom server [blossom-account-server](https://github.com/hzrd149/blossom-account-server)
Unfortunately I got sidetracked and I didn't have the time to give it the attention it needs to get it over the finish line
## Smaller projects
- [cherry-tree](https://github.com/hzrd149/cherry-tree) A small app for uploading chunked blobs to blossom servers (with cashu payment support)
- [vite-plugin-funding](https://github.com/hzrd149/vite-plugin-funding) A vite plugin to collect and expose package "funding" to the app
- [node-red-contrib-rx-nostr](https://github.com/hzrd149/node-red-contrib-rx-nostr) The start of a node-red package for rx-nostr. if your interested please help
- [node-red-contrib-applesauce](https://github.com/hzrd149/node-red-contrib-applesauce) The start of a node-red package for applesauce. I probably wont finish it so any help it welcome
## Plans for 2025
I have a few vague ideas of what I want to work on Q1 of 2025. but there are a few things i know for certain.
I'm going to keep refactoring noStrudel by moving core logic out into [applesauce](https://hzrd149.github.io/applesauce/) and making it more modular. This should make noStrudel more reliable and hopefully allow me to create and maintain more apps with less code
And I'm going to write tests. tests for everything. hopefully tests for all the libraries and apps I've created in 2024.
A lot of the code I wrote in 2024 was hacky code to see if things could work. and while its been working pretty well I'm starting to forget the details of of the code I wrote so I cant be sure if it still works or how well it works.
So my solution is to write tests, lots of tests :)
-

@ 6ad3e2a3:c90b7740
2025-02-18 17:08:23
I’m not doing any writing today. Taking the day, maybe the week, off. Just not in the mood.
This whole idea you’re supposed to write, get the thoughts out, the ideas moving is stupid. To what end? I’m done with evaluating myself for productivity, justifying myself to myself — or anyone else.
What I really need is to find some pleasant distractions. Something to fill my time, or as Elon Musk says of Twitter “to avoid regretted user seconds.” I’ve tried Twitter itself, of course, but Musk’s algorithm falls woefully short. After an hour of doom and dopamine scrolling, punctuated with the occasional shitpost, many seconds are regretted — roughly 3500 of them.
I could turn to alcohol or drugs, but too many side effects. Yes, you’re distracted, but what about after that? You’re always left worse off than where you started. Even alcoholics and drug addicts — the pros! — know it’s a dead end.
I don’t know, maybe spend more time with loved ones? You hear that a lot. “If I didn’t have to work so much, I’d spend more time with loved ones.” LOL. Like what, you’re going to hang around while your “loved ones” are doing things with their actual lives. Maybe I’ll take the bus to school with Sasha, hang out with her and her friends, see how that goes. Quality time!
Exercise. It’s the perfect solution, good for your health, you feel better, your mind is calm. Only problem is it’s fucking miserable. If your aim is to avoid sitting at a desk to write, forcing your carcass around a track is hardly an upgrade. It’s like quitting your middle management job to break rocks in a prison chain gang.
There must be something I can do. Eating sugary processed food is out of the question for the same reason alcohol and drugs are. Becoming obese and diabetic is no solution, as many of the pros (obese diabetics) would no doubt attest.
Meditation. That’s it! You sit on a cushion, count your breaths. Pretty soon you are calm. You can meditate for as long as you want! It’s perfect, and it’s easy. Well, it’s not that easy. You get distracted by your thoughts and you’re just sitting there thinking about the things for which you hope and dread in your life.
Of course, you notice that distraction and come back to the breath, but pretty soon you’re wandering again. And you come back again. But really you’re wondering how long you’ve been sitting, your feet are falling asleep, your back is tight and you don’t feel much different. You weren’t even properly distracted because instead of being distracted *from* your mind, you are being distracted *by* it. It’s a worst-case scenario of sorts — you neither get anything done, nor escape the endless self-evaluation and justification.
That just means you’re doing it wrong, though. You’re failing at it. If you did it right, it would be the perfect escape from yourself. But it’s not working, so you’re failing. Or maybe you succeeded a little bit. You’re not sure. You are still evaluating whether that was a good use of your time. The same evaluation process you use to decide whether you’ve done enough writing, the same tired bullshit from which you were trying to escape in the first place!
Let’s face it, you’re not just going to meditate your way out of the problem. If you could, you would have already, and so would everyone else. We would all be enlightened. Maybe you need to go to an ashram or something, find a guru on top of a mountain in the Himalayas. LOL, you’re not gonna do that! You are way too attached to your comforts and daily routines, no matter how dull and unsatisfying they ultimately are.
There’s nowhere to run, nowhere to hide, no one to see, nothing to do. You are out of options. There is only one thing in your absolute control, and it’s where you direct your attention. And you have decided that no matter how bleak and pointless the alternatives the one thing about which you are resolute is you are taking the day off from writing.
-

@ d23af4ac:7bf07adb
2025-02-18 17:07:55
This is a **test**-note published directly from [Obsidian](https://obsidian.md/)
# Heading 1
Some paragraph text [^2]
## Heading 2
Second paragraph text.
* List item 1
* List item 2
```js
console.log("Hello world!")
```
### Json
```json
{
name: "Alise",
age: 45
}
```
>[!SCRUNCHABLE NOTE]-
>This should be collapsed when the page first loads. This should be collapsed when the page first loads. This should be collapsed when the page first loads. This should be collapsed when the page first loads. This should be collapsed when the page first loads. This should be collapsed when the page first loads.
>This should be collapsed when the page first loads. This should be collapsed when the page first loads. This should be collapsed when the page first loads. This should be collapsed when the page first loads.
>[!DANGER]
>This is a "danger" type message. Should be properly formateed. This is a "danger" type message. Should be properly formateed. This is a "danger" type message. Should be properly formateed. This is a "danger" type message. Should be properly formateed. This is a "danger" type message. Should be properly formateed.
--
#### Pasted image:
![[Pasted image 20250218120714.png]]
>This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote[^1]. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote. This is a blockquote.
- [x] This is a completed task
- [ ] This is an uncompleted task
- [ ] This is also an uncompleted task
>[!QUESTION]
>Will this inline code format properly? `console.log('Yo momma so fat she took a spoon to the Super Bown');` Idk...
[^1]: Footnotes also supported? Even inside blockquotes?
[^2]: Footnote in regular paragraph