<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>notes by druchan — RSS Feed</title><link>https://notes.druchan.com/</link><description>notes by druchan</description>
    <lastBuildDate>Mon, 07 Sep 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://notes.druchan.com/feed.xml" rel="self" type="application/rss+xml"/><item>
<title>Re:Paper 004 — The Political Uses of Madness</title>
<link>https://notes.druchan.com/re-paper-004</link>
<guid>https://notes.druchan.com/re-paper-004</guid>
<description><![CDATA[<p><em>Re:Paper</em> is a pet project where I get to read interesting papers from the past and share my thoughts/impressions. It's not too dissimilar to book reviews, except for papers. Or paper-like things (a talk that gets published, an essay from an academic, etc.)</p>
<p>For 004, I have <a href="https://archive.org/details/ThePoliticalUsesOfMadness">The Political Uses of Madness</a> from Daniel Ellsberg.</p>
<div class="separator"></div>
<blockquote>
<p>I call it the Madman Theory, Bob. I want the North Vietnamese to believe that I’ve reached the point that I might do anything to stop the war. We’ll just slip the word to them that… “Nixon is obsessed about Communism. We can’t restrain him when he is angry—and he has his hand on the nuclear button”—and Ho Chi Minh himself will be in Paris in two days begging for peace. — Richard Nixon.</p>
</blockquote>
<p>With Trump's election (both in 2016 and 2020) as the head of the United States, strategists were quick to revisit the <em>madman theory</em>, first propounded in a lecture by <a href="https://en.wikipedia.org/wiki/Daniel_Ellsberg">Daniel Ellsberg</a>, called <a href="https://archive.org/details/ThePoliticalUsesOfMadness"><em>The Political Uses of Madness</em></a>.</p>
<p>I happened to chance upon this through <a href="https://en.wikipedia.org/wiki/Annie_Jacobsen">Annie Jacobsen's</a> <a href="https://en.wikipedia.org/wiki/Annie_Jacobsen#Career"><em>The Pentagon's Brain</em></a>, a book about DARPA's history, legacy and future. Ellsberg makes an appearance in the Vietnam war-era of DARPA, which involved a lot of <a href="https://en.wikipedia.org/wiki/RAND_Corporation">RAND</a> analysts and researchers.</p>
<p>Ellsberg wrote this before he was hired by RAND, a few years before US's involvement in Vietnam scaled up.</p>
<p>In 1959, when this lecture was written and delivered, the Cold War poles (US and USSR) had figured out the logistics of manufacturing, storing and delivering world-annihilating hydrogen bombs and were rapidly stockpiling to the teeth and more. There was no longer a first-strike advantage; a nuclear war, no matter who started it, would end in a potential total annihilation of most humans in those two countries and more. The deterrence was merely mutually-assured, total destruction.</p>
<p>Ellsberg considers this world, that <a href="https://www.rand.org/pubs/papers/P1472.html">Wohlstetter called <em>The Balance of Terror</em></a>, and ponders over what advantage, if any, could a nuclear-war-threatening power have in a blatantly-suicidal bid.</p>
<blockquote>
<p>In the world of the Balance of Terror, will any ruler of a major state be able to persuade his opponents that he <em>wants</em> war; not only that he will risk it, but that he means to choose it? Perhaps not; they would have to think him <em>very</em> mad. But then, in that day they will not need certainty, or anything close to it, to capitulate; and where a <em>little</em> madness could win the world, it seems incautious to assume no madman will ever find authority. A man who was slightly mad—who looked, perhaps, at other things but risks, who wanted some things very much, who could act on impulse—could be &quot;useful&quot; to have in national politics: a man of whom it could be said, in negotiation, &quot;If we don't get these demands, it's likely that <em>he</em> will take over; and then . . .?&quot;</p>
</blockquote>
<div class="separator"></div>
<p><strong>A 1% chance is all you need</strong></p>
<p>In the lecture, Ellsberg posits that a mad, crazy leader has an upper-hand. It's not a big one technically. The threatening power has to convince the opponent (the <em>victim</em>) that there's at least a little more than 1% chance that the crazy threatener will precipitate war. That is all it takes for the victim to back down, acquiesce and give in:</p>
<blockquote>
<p>And for the man who is convincingly mad, the risks of commitment may be peculiarly small. For his commitment, perhaps only his, will be plausible; his claim to believe the risks are small, or his willingness to take large risks, will be credible. Against rational opponents, the madman in this world can win; more than that, he can win safely. This puts an unprecedented premium on madness.</p>
</blockquote>
<blockquote>
<p>If [the victim] assigns more than 1% likelihood to the chance that his opponent will carry out his threat, will maintain his ultimatum, he will give in.</p>
</blockquote>
<blockquote>
<p>The blackmailer's problem is to convince his opponent that he is more than 1% likely to carry out his threat.</p>
</blockquote>
<p>Ellsberg's closest point of reference (and in fact, the only one) is World War II. Hitler, the madman dictator, was a looming presence for most political analysts and Ellsberg, no exception, uses Hitler's example across.</p>
<p>He tells us of the time when <a href="https://en.wikipedia.org/wiki/Pierre-%C3%89tienne_Flandin">Pierre-Étienne Flandin</a> had raised the possibility that Hitler could be stood down:</p>
<blockquote>
<p>Chamberlain entered the following remark in his diary: &quot;March 12, talked to Flandin, emphasising that public opinion would not support us in sanctions of any kind. His view is that if a firm front is maintained Germany will yield without war. We cannot accept this as a reliable estimate of a mad Dictator's reaction.&quot;
...
Prime Minister Baldwin calculated his own critical risk at this juncture as precisely as if he had been reading these lectures. &quot;You may be right,&quot; he told Flandin, &quot;but if there is even one chance in a hundred that war would follow from your police operation I have not the right to commit England.&quot; The &quot;mad Dictator,&quot; they calculated, was at least 1% likely to bring on a war if opposed; and that was enough to deter them.</p>
</blockquote>
<div class="separator"></div>
<p><strong>A reputation for madness</strong></p>
<p>Madness as a strategy is not simple.</p>
<p>In the lecture, Ellsberg lays out the nuances, the preconditions and the strategic add-ons one must adopt to sell the <em>madness</em>.</p>
<p>For instance, madness is not opportunistic or just-in-time; that would convince no one. One has to build a reputation:</p>
<blockquote>
<p>...to be unpredictable; to seem &quot;a little&quot; erratic, impulsive, unstable.</p>
</blockquote>
<blockquote>
<p>... prepare for this long ahead of time, building a reputation for erratic, senseless, schizoid behavior.</p>
</blockquote>
<p>Because the stakes are so high, the opponent will most certainly expect caution from the madman for what if an accidental discharge happens?</p>
<blockquote>
<p>But in this case the enemy's expectations might be unusually precise; ... when a false move blows up the world, he might expect more than normal caution to avoid accidental discharge. The blackmailer, then, must take special steps to remove this influence.</p>
</blockquote>
<p>With the dose of schizoid behaviour, Ellsberg recommends the &quot;tactical use of obscurity&quot;. In reference to the Chinese position in Quemoy (<a href="https://en.wikipedia.org/wiki/Kinmen">Kinmen</a>)<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup>, where the Americans had no strategic response, he writes about how such a non-answer could be misconstrued as indecision unless offset by an obscure threat:</p>
<blockquote>
<p>The Chinese (March, 1959) are doing new work in the line of inscrutability. What adversary in this generation is going to forget that they have been spending the last six months, shelling the island of Quemoy every other day, excluding holidays?
...
Again, a statement by President Eisenhower in a press conference might have cautioned the Communists against relying too heavily on apparent indecision as indicating total lack of commitment. When asked whether there were any circumstances under which a field commander might be authorized to use nuclear weapons on his initiative, the President's immediate reply was: &quot;I don't know.&quot;</p>
</blockquote>
<div class="separator"></div>
<p><strong>&quot;Unassailable&quot; need</strong></p>
<p>Ellsberg's other qualification to the madness theory is that the &quot;blackmailer&quot; must demonstrate an &quot;unassailable&quot; need for what's demanded.</p>
<blockquote>
<p>It is a talent to have desires so strong that an opponent will believe you literally willing to gamble your life to achieve them. Thomas Hobbes named this condition, in <em>The Leviathan</em>: &quot;To have stronger, and more vehement Passions for any thing, that is ordinarily seen in others, is that which men call MADNESSE.&quot; ...</p>
<p>&quot;all Passions that produce strange and unusuall behaviour, are called by the generall name of Madnesse.&quot; (Hobbes)</p>
</blockquote>
<p>Here, he invokes Hitler's example:</p>
<blockquote>
<p>[Hitler] confronted his opponents who wanted nothing badly, with intense, obsessive wants; he found the status quo they offered him unbearable, to be not merely broken but revenged.</p>
</blockquote>
<p>Hitler, Ellsberg says, wanted <em>war</em>. He had an obsessive need for &quot;greatness&quot; that transformed into a lust for military wins. His opponents, the rational leaders of other countries, were explicit about not wanting war.</p>
<blockquote>
<p>Hitler threatened war; so did his opponents. But these statesmen, who were not mad, did not disguise the fact that they feared war, that they would pay to avoid violence and risk. &quot;War is a fearful thing,&quot; said Chamberlain, two nights before he flew to Munich; &quot;we must be very clear, before we embark on it, that it is really the great issues that are at stake, and that the call to risk everything in their defence . . . is irresistable.&quot; Hitler had other payoffs. He was, to begin with, a gambler; he meant to take risks, not avoid them. Measuring his payoffs by his willingness to take risks, the possible gains from any gamble come out with a high value, the possible losses trivial.</p>
</blockquote>
<blockquote>
<p>Hitler, violence and war were values, not costs; they were <em>preferred</em> means, and more than that, virtually ends in themselves.</p>
</blockquote>
<blockquote>
<p>To Rauschning he said in 1932: &quot;None of these people any longer want war and greatness. But <em>I</em> want war.&quot;</p>
</blockquote>
<blockquote>
<p>In the end, his lust for military victory rather than diplomatic victory led him to disaster; but earlier, this tension between his conflicting desires for the clever, political success and for the triumph of his war-machine, so evident beneath his impatience, gave him an immense advantage in negotiation.</p>
</blockquote>
<div class="separator"></div>
<p><strong>A purposive madness</strong></p>
<p>Not all kinds of madness pay. The unassailable need has to be backed by a kind of relentless, irrational pursuit by all means:</p>
<blockquote>
<p>The blackmailer's behavior must seem <em>purposive</em>, not random: but directed to mad ends ... None but a madman, the victim might believe, would accept a high risk of major war for a small increase in territory, for the difference of a few days in an occupation.</p>
</blockquote>
<p>Once again resorting to Hitler's example:</p>
<blockquote>
<p>&quot;We shall not capitulate—no, never,&quot; he said; it was the summer before he became Chancellor of the Third Reich. &quot;We may be destroyed, but if we are, we shall drag a world with us—a world in flames.&quot;</p>
</blockquote>
<blockquote>
<p>The Sudeten Germans must come into the Reich. Hitler said he &quot;would face any war, even the risk of a world war, for this. Here the limit had been reached where the rest of the world might do what it like, he would not yield one single step.&quot; Details did not concern him. &quot;Three hundred Sudetens have been killed, and things of that kind cannot go on . . . I am prepared to risk a world war rather than allow this to drag on.&quot;</p>
</blockquote>
<p>Years later, <a href="https://sites.psu.edu/roseannemcmanus/">Roseanne W. McManus</a> wrote <a href="https://bpb-us-e1.wpmucdn.com/sites.psu.edu/dist/f/105549/files/2019/07/Four-Types-of-Madness-Manuscript.pdf"><em>Revisiting the Madman Theory</em></a> in which she differentiated between the two kinds of madness — situational and dispositional, and paired them with the notions of rational-choices-but-made-with-extreme-preferences (<em>purposive</em>) and irrational decision-making:</p>
<blockquote>
<p>...situational extreme preferences constitute the type of perceived madness that is most helpful in coercive bargaining.</p>
</blockquote>
<p>The madness is not dispositional or a mere characteristic; it comes from someone who we know is capable of rationality but the choice or preference is extreme.</p>
<div class="separator"></div>
<p>Ellsberg also makes a couple of other strategic points that I found interesting.</p>
<p>First of these is the effectiveness of an ideology or dogma-driven blackmailer:</p>
<blockquote>
<p>When a Communist says that a particular prediction is derived from Lenin, his opponents are forced to concede that he is fairly likely to believe that prediction and act on it—no matter how far removed from reality it may seem. Perhaps the test of a publicly-professed doctrine is not, &quot;Is it true?&quot; but &quot;Is it what I want my opponents to think that I believe?&quot;</p>
</blockquote>
<p>and:</p>
<blockquote>
<p>Personal dogmas, idiosyncratic conceptions of the world, can serve the same purposes, making particular beliefs both plausible and rigid, impervious to communications from the opponent.</p>
</blockquote>
<blockquote>
<p>Ideology and doctrine have other benefits to a blackmailer, or for that matter, to a prospective victim. They may make him impervious to counter-threats.</p>
</blockquote>
<p>That is, even in the face of imminent, total annihilation, the Russians were ready to stand their ground because:</p>
<blockquote>
<p>Capitalism will be destroyed; communism will survive, even if the present communists perish; and this would be victory; this is all that matters.</p>
</blockquote>
<p>Coupled with this is the natural inclination to reject the opponent's offer (of peace) by downplaying the risks:</p>
<blockquote>
<p>... he may deprecate the &quot;badness&quot; of conflict, relative to other outcomes: in particular, relative to the opponent's offer. ... Typically, for instance, both the union leader and the management representative will claim that they have no fear of a strike, that they have &quot;little to lose&quot; by it, are perfectly prepared to last it out, and that they expect the eventual outcome of a strike to be favorable to them...</p>
</blockquote>
<p>Ellsberg also factors in the effectiveness of eradicating all communication lines for if one were rational enough to keep the channels open, the threat of influence (and buckling) is huge:</p>
<blockquote>
<p>The more accessible the victim is to communication, the more open to rational influence, the more vulnerable he is to last-minute &quot;briefings&quot; such as Goering delivered to his friend, Sir Nevile Henderson, after the first meeting between Chamberlain and Hitler at Berchtesgaden. If there were war, Goering informed him, one thing, at least, was quite certain; there would be &quot;little of London left standing.&quot;</p>
</blockquote>
<blockquote>
<p>The only way to discourage such communications is to cultivate psychosis at the decision-making levels. If ignorance is good, madness is better. But both are risky; ... When to believe your enemy's threats or warnings just a little is to capitulate or to abandon your blackmail, there are great temptations to become totally blind and deaf;</p>
</blockquote>
<p>And with Hitler, Ellsberg writes:</p>
<blockquote>
<p>[He was] deaf to their counterthreats. No one could reach him, teach him new values or beliefs, crack his confidence by magnifying risks.</p>
</blockquote>
<div class="separator"></div>
<p>Ellsberg, and later McManus, make a case for strategic advantages of the <em>madman</em> theory. McManus, for example, considers a host of leaders who have exhibited varying degrees of madness: Khrushchev, Saddam Hussein, Gaddafi. Of course, no Nixon or Bush.</p>
<p>However, with Trumpian failures, Samuel Seitz and Caitlin Talmadge re-examined the theory in their <a href="https://bpb-us-e1.wpmucdn.com/blogs.gwu.edu/dist/1/2181/files/2024/12/SeitzTalmadge_TWQ.pdf"><em>The Predictable Hazards of Unpredictability: Why Madman Behavior Doesn't Work</em></a>. They write that history says otherwise; madman theory just doesn't work:</p>
<blockquote>
<p>The historical record, both before Trump’s presidency and during it, demonstrates that madman tactics typically fail to strengthen deterrence or generate bargaining leverage for three reasons.</p>
</blockquote>
<p>The first:</p>
<blockquote>
<p>... signaling extreme preferences (e.g., all-or-nothing demands for massive unilateral concessions to the US position) and/or a willingness to bear high costs to the point that it deviates from normal consequence-based decision-making (e.g., threats to start a war that will kill many people on both sides) is actually quite difficult.</p>
</blockquote>
<p>And, secondly:</p>
<blockquote>
<p>even when other countries clearly receive a madman’s message (or tweet), they often do not view it as credible for various reasons.</p>
</blockquote>
<p>And finally:</p>
<blockquote>
<p>even when such demands and threats are deemed credible, they do not necessarily induce the desired behavior from the targeted country, because madmen have a hard time giving believable assurances of behaving in the future<sup class="footnote-ref"><a href="#fn2" id="fnref2">2</a></sup>.</p>
</blockquote>
<p>Nevertheless, Ellsberg's paper/lecture (in combination with the whole series, <em>Art of Coercion</em>) is a fascinating light into the mechanics of how cold and calculating <em>political realism</em> is, and how academics and military analysts like him tackled the idea of an upper-hand in a world that virtually guaranteed none.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>PRC bombed Quemoy (Kinmen) islands (which belong to Taiwan/ROC) during the Second Taiwan Strait crisis. Beijing used a weird strategy of bombing on odd-numbered days and pausing on even-numbered ones; a total of ~500,000 shells were dropped. PRC could not win the island. The metal from shells eventually became a local resource. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Here, an interesting anecdote. Ellsberg quotes Khrushchev as having said, in 1959, &quot;The difference between Munich and now is that I am not Adolf Hitler.&quot; Khrushchev was referring to the fact that when western powers accepted Hitler's Munich demand (<em>The Munich Agreement</em>) where Hitler said that would be the last territorial claim, he did not stick to his word. Khrushchev, in post-war Berlin, had given an ultimatum to the Allies to vacate and demilitarise Berlin or risk a war with the Soviets, and the Allies thought giving-in to this demand had no guarantee that the Soviets would stop demanding more. To which Khrushchev said, &quot;I am not Adolf Hitler.&quot; The Allies did not demilitarise, leading straight to the Berlin Wall saga. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
<pubDate>Mon, 07 Sep 2026 12:00:00 +0000</pubDate>
</item><item>
<title>work.patch</title>
<link>https://notes.druchan.com/work-patch</link>
<guid>https://notes.druchan.com/work-patch</guid>
<description><![CDATA[<p>By the time I was fully into software programming, <code>git</code> had become the de-facto abstraction to managing codebase changes and collaborate. The days of writing and exchanging &quot;patches&quot; and diffs with others before applying them upstream had long since disappeared (except maybe in some small quarters within the Linux kernel ecosystem).</p>
<p>LLMs have changed that for me. I am back to what can be called &quot;diff-driven development&quot;. It's one way I can retain my sanity, reduce my stress-levels and get work done with Claude.</p>
<p>I've been using LLMs to assist in writing programs since about 2023. Back then, working with AI (specifically to write programs) was like working with an intern: wrong data models, bad assumptions, convoluted code. In 2026, LLMs have become very powerful and all-consuming. Now, they have no human equivalence: highly complex data models, all-encompassing assumptions that try to factor every edge-case there is, and naturally, convoluted code.</p>
<p>My own workflow has evolved from using AI to just ideate, find facts and research (glorified, more-focused, occasionally-wrong search engine) to now letting them write code. I tried doing the thing many of my peers do: let it mutate the codebase directly, piling up many changes before raising that dreaded pull-request that a human has to read but I've never been happy about that. It's okay for trivial changes, and a disaster for non-trivial ones. Despite the glowing reviews we hear about the capacity of these frontier models, my experience with large-scale, autonomous changes after giving a detailed spec is still bad. The RoI on crafting the spec after much back-and-forth is completely unjustified.</p>
<p>Of late, there have been other compounding problems. Claude speaks in a style of prose that's famously annoying. &quot;Two reasons, and both point to the same load-bearing cause&quot;, &quot;Not intentional, just accidental&quot;, &quot;One caveat I'd pay attention to: ...&quot;, and other such Claudisms have become staple. And the incessant need for jargon — both made-up and existing ones — is such a pain to read.</p>
<p>I've also found it increasingly incomprehensible to read large paragraphs of text (replete with file names and line numbers), interspersed with code fragments. On a well-crafted LaTex paper, this is fine, but in the confines of a terminal window, especially with the amount of varied branches that LLMs try to encapsulate in a single change, it slows down both my comprehension and the ability to connect the changes to the larger context of the codebase, engineering practices and my own quest to reach for the simple.</p>
<p>In recent times, I've changed my workflow.</p>
<p>I've got Claude to stop talking in that ingratiating style of prose and instead &quot;speak properly&quot;. That means complete sentences, and all avoidance of Claudisms. This is a memory that it loads at the start.</p>
<p>I've also got Claude to split code from prose. Barring an occasional one-liner, all code that Claude wants to show me (for my review) goes in a <code>work.patch</code> file in the directory. All ideation back-and-forth goes in the terminal with Claude but whatever changes are proposed thereafter in terms of code are written to a <code>work.patch</code> file. I examine the diff in the patch file, make corrections or instruct Claude and iterate through the patch file before applying it.</p>
<p>My settings also prevent Claude from directly affecting the files even in auto-mode. Any change it proposes to do has to go through the patch-file.</p>
<p>At the end, it's all a diff, yes, and sometimes the summation of those diffs is large for a pull request. But I cannot start from a large diff and work through its parts; instead, I like to start from small diffs and accumulate them.</p>
<p>The corollary to this feels true too. If you've had to review a reasonably mid/large-sized pull request, specifically in the traditional interface of GitHub or others, you are looking at a mishmash of changes. Some changes to a file make no sense unless you correlate them to a change several files down the list. (eg, a modification in a function, or a new function exported). Commits used to be a good way to chunk-up the changes in logical batches. Each commit told a story of a change, a subsequent commit improved upon it, fixed a bug in the previous one, or added a new chunk of feature/fix. But people seldom use commits that way now.<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup></p>
<p>So, I ask Claude to pull the PR patch (the diff of the PR that we see on GitHub) and chunk it into related changes<sup class="footnote-ref"><a href="#fn2" id="fnref2">2</a></sup>. This gives me a better sense of the changes in logical sequence and also, smaller chunks of diffs to review. It's not always a beneficial activity: sometimes, I just have to look at the whole thing in context. But when it works, it works very well.</p>
<p>What does all of this mean? Lowered gains in productivity. It's funny how often we treat lowered gains as a loss but relatively, it's still some gains. What I trade that deficit for is lot more clarity about the work I do, about the code change that goes upstream, and definitely far less strain on the brain to grok stuff others write.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Let's say you make three commits (A, B, C) as part of a changeset. Turns out A had a bug. We used to update A. We don't do that now; we just write a new commit D. This breaks the &quot;commit as a story of logically-grouped changes&quot;. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>It is certainly insane how &quot;smart&quot; LLMs can be in this regard. Claude can split a large PR into the most logical series of commits/patches and reconstruct a better story than what the developer did. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
<pubDate>Sun, 06 Sep 2026 12:00:00 +0000</pubDate>
</item><item>
<title>Re:Paper 003 — Animal Cultures: How We've Only Seen the Tip of the Iceberg</title>
<link>https://notes.druchan.com/re-paper-003</link>
<guid>https://notes.druchan.com/re-paper-003</guid>
<description><![CDATA[<p><em>Re:Paper</em> is a pet project where I get to read interesting papers from the past and share my thoughts/impressions. It's not too dissimilar to book reviews, except for papers. Or paper-like things (a talk that gets published, an essay from an academic, etc.)</p>
<p>For 003, I have <a href="https://www.cambridge.org/core/journals/evolutionary-human-sciences/article/animal-cultures-how-weve-only-seen-the-tip-of-the-iceberg/2D9C2B4156E087ABC94A8AE99A6F0FAD">Animal Cultures: How We've Only Seen the Tip of the Iceberg</a> from Caroline Schuppli and Carel van Schaik.</p>
<div class="separator"></div>
<p>When <a href="https://en.wikipedia.org/wiki/Jane_Goodall">Jane Goodall</a> saw the chimps stripping leaves off a twig and use it to fish for ants from holes in the earth, she wrote to her mentor, who promptly said of this event, &quot;Now we must redefine <em>tool</em>, redefine <em>man</em> or accept chimpanzees are humans.&quot;</p>
<p>At the time, we were of the opinion that what differentiated humans from the rest of the animal kingdom was tool-use.</p>
<p>A story not too dissimilar is what we have with culture. Our old definitions of culture have been famously anthropocentric. <a href="https://www.ab.mpg.de/person/110356/2736">Schuppli</a> tells us of the most prevalent idea of culture from centuries ago:</p>
<blockquote>
<p>The oldest explicit definition by a cultural anthropologist regards culture as 'that complex whole which includes knowledge, beliefs, arts, morals, law, custom, and any other capabilities and habits acquired by man as a member of society'. This human-oriented definition stresses that virtually everything we do, know or believe, as well as our institutions and technology, are a product of social learning and thus cultural.</p>
</blockquote>
<p>&quot;Social learning&quot;, it turns out, is not exclusive to humans. The debate about whether social learning itself is just a genetic disposition or an ecological happenstance or a combination of both that feedback into each other is the thing of spice all the way from <a href="https://en.wikipedia.org/wiki/E._O._Wilson">Wilson</a> to <a href="https://en.wikipedia.org/wiki/Kevin_Lala">Laland</a> to <a href="https://en.wikipedia.org/wiki/Peter_J._Richerson">Richerson</a>/<a href="https://en.wikipedia.org/wiki/Robert_Boyd_(anthropologist)">Boyd</a>.</p>
<p>Schuppli says:</p>
<blockquote>
<p>In order to examine how human culture arose, biologists adapted this definition to non-human animals by describing culture as 'all behaviors and knowledge that are acquired and passed on within and between generations through social learning' (Boyd and Richerson, 1985). Hereafter, we refer to this as the minimal definition of culture.</p>
</blockquote>
<blockquote>
<p>...some have argued that culture must be more than the product of social learning.</p>
</blockquote>
<blockquote>
<p>In short, all definitions agree that skills and knowledge that are learned through a form of social learning are the quintessence of culture, irrespective of the actual social learning mechanism used. The more demanding definitions appear to reflect an attempt to distinguish the cultures of different taxa, especially humans from animals, although many habits we naturally call culture in humans are neither normative nor complex or diverse.</p>
</blockquote>
<p>Schuppli's primary argument is that our definition of culture, even when pulled away from its inherent anthropocentrism, is about high-brow stuff like art, civilization, morality, religion and such but in fact, the simplest of subsistence skills like building a rudimentary nest, or foraging patterns is socially-learned and must be considered &quot;culture&quot;.</p>
<blockquote>
<p>Cultural repertoires are mainly composed of basic, low-complexity subsistence skills, most of which show clear ecological correlates (e.g. knowledge of diet composition and processing techniques).</p>
</blockquote>
<p>For example, when deprived of the &quot;social&quot; component of learning, young orangutans couldn't really learn to build nests:</p>
<blockquote>
<p>... it takes young orangutans years of close observation and subsequent practice before they can build nests good enough to spend the night in, and socially deprived young apes will never be able to do so.</p>
</blockquote>
<p>So if we define culture as something we learn socially, then it's not just high-brow stuff; it can be as simple as survival skills.</p>
<p>Schuppli (and van Schaik) now turn their attention to another ongoing debate in the field: how do we measure <em>animal culture</em>? How do we differentiate between what's a direct result of Darwinian/Wilsonian genetic disposition or ecological constraints and what's something that a group specifically picked up and propagated through social learning?</p>
<p>Some folks came up with a way to find that out. It's called the <a href="https://www.nature.com/articles/21415">Method of Exclusion</a> (MoE).</p>
<p>Take two groups of orangutans. If one group shows a specific behavior and another group does not have that, and you can show that the behavior is not of genetic or ecological origin/causality, then bingo, you've got animal culture.</p>
<p>Folks like Laland are big proponents of MoE. van Schaik (the other author on this paper) has criticized that method.</p>
<p>That criticism finds a neat summary in this paper:</p>
<blockquote>
<p>... social learning does not necessarily result in between-group heterogeneity. Identical ecological conditions are likely to bring about the same behavioral innovations in separate social units. Cultural transmission driven by social learning will thus inevitably produce similarities in behavioral repertoires between them, just as evolution driven by natural selection will often come up with the same genetic adaptations in similar environments. Whereas the latter is a widely acknowledged phenomenon, namely convergent evolution, the possibility of convergent culture is not yet widely acknowledged.</p>
</blockquote>
<p>That is, two groups of orangutans could come up with similar-looking culture repertoires due to various factors.</p>
<p>Then:</p>
<blockquote>
<p>because the MoE excludes the majority of cultural variation with ecological components, it is heavily biased in the kinds of cultural variation it captures. Whereas it detects disproportionately more behaviors of the social domain and complex dietary inventions such as tool use, it underestimates culturally transmitted basic subsistence skills. However, it is highly unlikely that the mechanisms of social learning are exclusively deployed for the acquisition of complex innovations; routine subsistence skills are almost certainly acquired in the same way.</p>
</blockquote>
<p>That is, culture is not necessarily stuff of complex, sophisticated things but should also be just about basic subsistence skills.</p>
<p>And my favorite:</p>
<blockquote>
<p>the number of cultural variants detected by the MoE is highly dependent on the number of populations we compare. Whereas a behavior X may well be shared between populations A and B, it may not be shared with population C. If we compare only populations A and B, behavior X will not be considered to be cultural, because it is found in all of the populations compared. If we then add population C to this comparison, behavior X will suddenly count as cultural because it is not universally shared among all compared populations. This inevitably leads to an underestimation of cultural repertoires.</p>
</blockquote>
<p>Just plain ol' misspecification.</p>
<p>The Method of Exclusion is a comparative measure. What if we relaxed the definition of culture to one that is &quot;socially-learned skills&quot;? That allows us to study animal cultures without having to compare them to other groups. I think this is a simple but elegant rethink and one that matches how we think about humans too. Culture is part of human groups even in the absence of other groups and comparison to other groups.</p>
<p>Schuppli and van Schaik then go on to describe how, through their simplified, &quot;minimal&quot; definition of culture, one could go about measuring <em>animal culture</em>:</p>
<blockquote>
<p>We propose to first identify and validate indicators of forms of social learning as actual means of social learning in a given species and then count the behaviors for which we can document that individuals deploy these indicators during skill acquisition. We call this procedure the method of counting socially learned skills (SLS).</p>
</blockquote>
<p>One stand-out example from the paper is young orangutans in Sumatra and Borneo <em>peering</em> at adults and then practicing (copying) skills:</p>
<blockquote>
<p>Recently, we studied peering behavior (i.e. attentive and sustained close-range watching of the activities of a conspecific) in immature orangutans.</p>
</blockquote>
<p>The fun bit is that as a young orangutan grows up, the number of times they peer at others goes down:</p>
<blockquote>
<p>By extrapolating cumulative peering counts based on known peering rates at different ages, we found that, over the course of their lives, Sumatran and Bornean orangutans (<em>Pongo abelii</em> and <em>Pongo pygmaeus wurmbi</em>) at the Suaq and Tuanan research sites peer around 38,000 and 9000 times. Individual's rates of peering are reduced to a minimum as adulthood is reached, at age 15.</p>
</blockquote>
<blockquote>
<p>We found strong evidence that peering by immatures is an expression of socially induced learning, since it was followed by selective practice, decreased with growing competence of the peerer and was more and more directed at less familiar role models with increasing age of the immature peerers.</p>
</blockquote>
<p>The authors then go on to demonstrate that the difference in indicators between MoE and the SLS (socially-learned skills) method is enormous. (Hence the tip of the iceberg).</p>
<blockquote>
<p>The MoE produces a biased sample of highly complex and conspicuous behaviors and dismisses a vast array of socially learned behaviors that covary with ecological factors. By counting socially learned skills, however, we are beginning to get to know the base of this iceberg. Cultural repertoires are mainly composed of basic, low-complexity subsistence skills, most of which show clear ecological correlates (e.g. knowledge of diet composition and processing techniques).</p>
</blockquote>
<p>And revisiting the coevolution bit:</p>
<blockquote>
<p>At the same time, a systematic reliance on social learning under similar ecological conditions may very well lead to many universal cultural behavior patterns across populations. The most striking example in the orangutans for this is nest building: even though it is an orangutan universal, it takes young orangutans years of close observation and subsequent practice before they can build nests good enough to spend the night in, and socially deprived young apes will never be able to do so. The basic construction of nests (a rim made of intertwined long branches) is highly comparable across different orangutan populations, presumably because it is the most latent solution to the problem.</p>
</blockquote>
<p>A slightly tangential but relevant bit of history here for when it feels like culture couldn't be just about subsistence.</p>
<p>One of my favorite pieces of writing is Tanner Greer's <a href="https://scholars-stage.org/tradition-is-smarter-than-you-are/">Tradition is smarter than you are</a>.</p>
<p>Tanner recounts a story told by <a href="https://en.wikipedia.org/wiki/Joseph_Henrich">Joseph Henrich</a>, a &quot;cross-cultural&quot; psychologist:</p>
<blockquote>
<p>Henrich advances the argument that brain-power alone is not enough to explain why humans are such a successful species. Humans, he argues, are not nearly as intelligent as we think they are. Remove them from the culture and environment they have learned to operate in and they fail quickly.</p>
<p>In the Colombian Amazon, for example, indigenous Tukanoans use a multistep, multiday processing technique that involves scraping, grating, and finally washing the roots in order to separate the fiber, starch, and liquid. Once separated, the liquid is boiled into a beverage, but the fiber and starch must then sit for two more days, when they can then be baked and eaten.</p>
<p>At the beginning of the seventeenth century, the Portuguese transported manioc from South America to West Africa for the first time. They did not, however, transport the age-old indigenous processing protocols or the underlying commitment to using those techniques. Because it is easy to plant and provides high yields in infertile or drought-prone areas, manioc spread rapidly across Africa and became a staple food for many populations. The processing techniques, however, were not readily or consistently regenerated. Even after hundreds of years, chronic cyanide poisoning remains a serious health problem in Africa.</p>
</blockquote>
<p>The brain-power has a neat connection back to our paper here. Schuppli writes why it may not be a precondition to have a big brain in order to have a culture of one's own:</p>
<blockquote>
<p>Since social learning can be very simple, culture does not require a large brain and it is therefore unlikely to be a hallmark of cognitive complexity...</p>
</blockquote>
<p>But with a small caveat:</p>
<blockquote>
<p>... the efficiency of cultural transmission may also favor the evolution of greater investment in brains.</p>
</blockquote>
<p>Or in other words, it helps to have a big brain to spread culture across generations and geography efficiently — elephants, whales, great apes (including us) — but that does not mean other, smaller species do not have culture.</p>
<p>We've barely scraped the surface and only seen the tip of the iceberg.</p>
]]></description>
<pubDate>Sun, 23 Aug 2026 12:00:00 +0000</pubDate>
</item><item>
<title>Re:Paper 002 — Physics Needs Philosophy. Philosophy Needs Physics</title>
<link>https://notes.druchan.com/re-paper-002</link>
<guid>https://notes.druchan.com/re-paper-002</guid>
<description><![CDATA[<p><em>Re:Paper</em> is a pet project where I get to read interesting papers from the past and share my thoughts/impressions. It's not too dissimilar to book reviews, except for papers. Or paper-like things (a talk that gets published, an essay from an academic etc.)</p>
<p>For 002, we have <a href="https://en.wikipedia.org/wiki/Carlo_Rovelli">Carlo Ravolli's</a> <a href="https://arxiv.org/abs/1805.10602">Physics Needs Philosophy. Philosophy Needs Physics</a>.</p>
<div class="separator"></div>
<p>When the ancients on the Indian subcontinent asked and tried to answer, &quot;what is an atom?&quot; and &quot;what does it mean to be indivisible?&quot;, we filed them in the <a href="https://en.wikipedia.org/wiki/Vaisheshika"><em>Nyaaya-vaiseshika</em> system</a>, one of the six popular philosophical systems of ancient India, because these physical discourses were wrapped in a big dose of philosophy and eventually lead to things like metaphysics and, needless to say, &quot;What is God?&quot; (in a reductive way of speaking).</p>
<p>So it is somewhat crazy that physics and philosophy have drifted apart so much. But it's also quite natural, I think. One had to choose extremities of math and some logic, and the other chose extremities of logic and other means.</p>
<p>What Ravolli speaks of, however, is not the drift in content but in the syncretism that existed between the two. The generous give-and-take because a physicist, say Einstein, did not shy away from immersing in deep philosophy.</p>
<p>We go all the way back to Athenian times when Plato and Isocrates were at logger-heads about their methods of understanding the world at large.</p>
<blockquote>
<p>At the time, the golden youth of the city was educated in famous schools. Among these, two stood out: the school of Isocrates, and the <em>Academy</em>, founded by a certain Plato. The rivalry between the two was heated, like the rivalry between Oxford and Cambridge, but was not just about quality: the very approach to education was different in the two schools. Isocrates offered a high-level <em>practical</em> education, teaching the youth of Athens the kind of skills and knowledge required to become politicians, lawyers, judges, architects, and so on. The Academy on the other hand focused rather on discussing <em>general questions</em> about foundations. What is justice? ... What is beauty? What is matter made of? And Plato had invented a good name for this way of posing problems: 'philosophy'.</p>
</blockquote>
<p>And Isocrates said of this &quot;philosophy&quot;:</p>
<blockquote>
<p>Those who do philosophy, who determine the proofs and the arguments … and are accustomed to enquiring, but take part in none of their practical functions, … even if they happen to be capable of handling something, they automatically do it worse, whereas those who have no knowledge of the arguments [of philosophy], if they are trained [in concrete sciences] and have correct opinions, are altogether superior for all practical purposes. Hence for sciences, philosophy is entirely useless</p>
</blockquote>
<p>It took Aristotle, student of Plato, to formulate a response to that criticism. Much of that text is unavailable and only collated from other works that quote it.</p>
<p>From that, Ravolli picks three principles:</p>
<blockquote>
<ol>
<li>...general theory supports and happens to be useful for the development of practice.</li>
<li>Those who deny the utility of philosophy, are doing philosophy.</li>
<li>More in need of philosophy are the sciences &quot;where perplexities are greater&quot;.</li>
</ol>
</blockquote>
<p>The meaty part of his paper is spent expanding on the 2nd principle, dipping into Thomas Kuhn and Karl Popper's <em>philosophies</em> of science, scientific revolutions and the methodologies that should be employed by science. This is, in my opinion, the most interesting part of the paper.</p>
<div class="separator"></div>
<p>In the post-quantum world, there is far less attraction to philosophy and the philosophical toolkit than there was in Einstein's era and before. Ravolli quotes Weinstein and deGrasse Tyson as having much disdain for philosophy (in the context of how useful it is for physics). This is perhaps an echo of the <a href="https://en.wikipedia.org/wiki/Vienna_Circle">Vienna Circle</a> where logical positivism was born, beginning the removal of some (or all) aspects of philosophy from the act of doing hard science.</p>
<p>But we are to remember that the Heisenbergs and Einsteins of the world frequently credited philosophy for their inspiration:</p>
<blockquote>
<p>Both major advances made by twentieth century physics were strongly influenced by philosophy. They would have been inconceivable without the philosophy of the time.</p>
<p>Quantum mechanics springs from an intuition due to Heisenberg, grounded in the strongly positivist philosophical atmosphere in which he found himself: one gets knowledge by restricting oneself to what is observable. ...</p>
<p>... by restricting to what is observable, we recognise that the notion of simultaneity is misleading. Einstein explicitly recognised his debt to the philosophical writings of Mach and Poincaré.</p>
<p>...Once again, he [Einstein] was explicit in recognising his debt to philosophy, this time to the critical thinking of Leibniz, Berkeley, and Mach.</p>
</blockquote>
<p>And going back, Newtons and Galileos too. I particularly liked the notion that Galileo's findings came about from his &quot;almost fanatic Platonism&quot; of search for ideal mathematical order underlying observed phenomena.</p>
<blockquote>
<p>Ancient astronomy—that is, everything we know about the Earth being round, its size, the size of the moon and the sun… , is a direct descendent of philosophy.</p>
</blockquote>
<blockquote>
<p>Galileo's work would have been inconceivable without the ideology he derived from Plato, namely, to search for the ideal mathematical order underlying appearances. Galileo was guided by an almost fanatic Platonism. In his work, Newton was explicit about his debt to ancient philosophy, Democritus in particular, for ideas that arose originally from philosophical motivations, such as the notions of empty space, atomism, and natural rectilinear motion. Furthermore, his crucial discussion about the nature of space and time built upon his discussions with (and against) Descartes.</p>
</blockquote>
<p>If you think about it, in some sense, philosophical discourse about reductionism and an order of rules (laws or axioms) governing all phenomena is the spiritual thrust for a bunch of physics nirvanas being searched for earnestly, all the way from a unifying theory for quantum and gravity to supersymmetry and such. (Which, I understand, is also an argument that could go <em>against</em> being influenced by philosophy!)</p>
<p>The core idea that Ravolli is after is that physics (or science) can sometimes lack the tools at such advanced levels of functioning, at crossroads, and at times when a breakthrough is needed.</p>
<blockquote>
<p>philosophy can provide methods for producing new ideas, novel perspectives, and critical thinking. Philosophers have tools and skills that physics needs, but do not belong to the physicists training: conceptual analysis, attention to ambiguity, accuracy of expression, the ability to detect gaps in standard arguments, to devise radically new perspectives, to spot conceptual weak points, and to seek out alternative conceptual explanations.</p>
</blockquote>
<div class="separator"></div>
<p>Physics has engaged in/with philosophy at almost all times. Even when Weinberg or Hawking write dismissively about philosophy, Ravolli contends like Aristotle that they're doing philosophy.</p>
<blockquote>
<p>Good scientists <em>do</em> reflect on their own methodology...</p>
</blockquote>
<p>and when Kuhn or Popper talk about science and revolutions in it:</p>
<blockquote>
<p>They express a <em>certain</em> idea about the methodology of science. Is this the eternal truth about how science has always worked and should work? Is it the best understanding of science we have at present? It is neither. In fact, it is not difficult to trace the origins of this idea. It arises from the background of logical positivism, corrected by Popper and Kuhn. The current dominant methodological ideology in theoretical physics derives from their notions of <em>falsifiability</em> and <em>scientific revolution</em>, which are popular among theoretical physicists; they are often mentioned and are commonly used to orient research and evaluate scientific work.</p>
</blockquote>
<p>I liked this bit about how physics almost always has had an evolving soul of conceptual structures and reflectiveness. This is, in some sense, what philosophy is about.</p>
<blockquote>
<p>…conceptual structures evolve as well. Science is not simply an increasing body of empirical information we have about the world and a sequence of changing theories… evolution of our own conceptual structure… the modification of the conceptual structure needs to be achieved from within our own thinking…</p>
<p>…intertwining of learning and conceptual change, this flexibility, and this evolution of methodology and objectives, have developed historically in a constant dialogue between practical science and philosophical reflection…</p>
</blockquote>
<p>And back to the tools:</p>
<blockquote>
<p>(Quoting Aristotle) &quot;Philosophy provides guidance how research must be done.&quot;</p>
<p>... Not because philosophy can offer a final word about the right methodology of science (contrary to the <em>philosophical</em> stance of Weinberg and Hawking). But because philosophers have conceptual tools for addressing the issues raised by this continuous conceptual shift.</p>
</blockquote>
<div class="separator"></div>
<p>Before I write about the part where Ravolli dives deep into how we have misinterpreted (or rather, interpreted at face-value) Kuhn and Popper, let's revisit what these two folks had to say which has influenced generations since.</p>
<p>Please hold simultaneously the thought that this is a layman's reduction of complex ideas put forth by Kuhn and Popper.</p>
<p>On discontinuity: Kuhn effectively says that revolutionary ideas in science do not come from a continuous lineage of cumulative ideas and theories. There are discontinuities where paradigm shifts happen. Think Einstein's leap into general relativity from Laplace or Newtonian laws of motion.</p>
<p>On falsifiability: Popper turned the <a href="https://en.wikipedia.org/wiki/Logical_positivism">logical positivism</a> that stemmed from Vienna Circle and said, &quot;seeing only white swans does not prove there are no black swans.&quot; Theories can only be proved false, not true.</p>
<p>Ravolli on Kuhn and discontinuity:</p>
<blockquote>
<p>Kuhn's emphasis on discontinuity and incommensurability has misled many theoretical and experimental physicists into disvaluing the formidable <em>cumulative</em> aspects of scientific knowledge. Popper's emphasis on falsifiability, originally a demarcation criterion, has been flatly misinterpreted as an evaluation criterion. The combination of the two … has given rise to disastrous methodological confusion: the idea that past knowledge is irrelevant when searching for new theories, that all unproven ideas are equally interesting and all unmeasured effects are equally likely to occur, and that … the work of a theoretician consists in pulling arbitrary possibilities out of the blue and developing them, since anything that has not yet been falsified might in fact be right. … &quot;why not?&quot; ideology: any new idea deserves to be studied, just because it has not yet been falsified; any idea is equally probable, because a step further ahead on the knowledge trail there may be a Kuhnian discontinuity that was not predictable on the basis of past knowledge; any experiment is equally interesting, provided it tests something as yet untested. … think that this methodological philosophy has given rise to mountains of useless theoretical work in physics and many useless experimental investments.</p>
</blockquote>
<p>I love this bit on how some of the most radical shifts has come about from an overwhelming amount of data that questions the accumulated knowledge so far or pre-existing contradictions in prevalent theories of the day, thereby positing that stuff just doesn't jump, it in fact follows from existing work of the past:</p>
<blockquote>
<p>The most radical conceptual shifts and the most unconventional ideas that have actually worked have in fact always been strictly motivated, almost forced, either by the overwhelming weight of new data, or by a well-informed analysis of the internal contradictions within existing, successful theories. Science works through continuity, not discontinuity. … Kepler did not just &quot;come out with the idea&quot; of ellipses: nature had to splash ellipses on his face before he could see them. He was using ellipses as an approximation for the deferent-epicycle motion of Mars and was astonished to find that the approximation worked better than his model … atomic physicists of the early twentieth century struggled long and hard against the idea of discontinuities in the basic laws, doing everything they could to avoid accepting the clear message from spectroscopy, that is, that there was actually discontinuity in the very heart of mechanics. In both instances, the important new idea was forced by data.</p>
</blockquote>
<p>Overwhelming data and Kepler:</p>
<blockquote>
<p>Kepler did not just &quot;come out with the idea&quot; of ellipses: nature had to splash ellipses on his face before he could see them. He was using ellipses as an approximation for the deferent-epicycle motion of Mars and was astonished to find that the approximation worked better than his model … atomic physicists of the early twentieth century struggled long and hard against the idea of discontinuities in the basic laws, doing everything they could to avoid accepting the clear message from spectroscopy, that is, that there was actually discontinuity in the very heart of mechanics. In both instances, the important new idea was forced by data.</p>
</blockquote>
<p>Contradictions in existing theories and Copernicus and Einstein:</p>
<blockquote>
<p>… second case—radical novelty from old theories—are the heliocentric system and general relativity. Neither Copernicus nor Einstein relied significantly on new data. But neither did their ideas come out of the blue. They both started from an insightful analysis of successful well-established theories: Ptolemaic astronomy, Newtonian gravity, and special relativity. The contradictions and unexplained coincidences they found in these would open the way to a new conceptualisation.</p>
</blockquote>
<p>On Popper's falsifiability, Ravolli tries something that I found quirky. He tries to kick the puck back into the realm of logical positivism (although, not exactly, and it's nuanced) even though that's the circle that rejected philosophy.</p>
<blockquote>
<p>… emphasis on falsifiability has made physicists blind to a fundamental aspect of scientific knowledge: the fact that credibility <em>has degrees</em> and that reliability can be extremely high, even when it is not absolute certainty. … failing to see that a given investigation may have little plausibility even if it has not yet been falsified.</p>
</blockquote>
<div class="separator"></div>
<p>Remember Aristotle and his &quot;More in need of philosophy are the sciences 'where perplexities are greater'&quot;?</p>
<blockquote>
<p>Here is a list of topics currently discussed in theoretical physics: What is space? What is time? What is the &quot;present&quot;? Is the world deterministic? Do we need to take the observer into account to describe nature? Is physics better formulated in terms of a &quot;reality&quot; or in terms of &quot;what we observe&quot;, or is there a third option? What is the quantum wave function? What exactly does &quot;emergence&quot; mean? Does a theory of the totality of the universe make sense? Does it make sense to think that physical laws themselves might evolve? It is clear to me that input from past and current philosophical thinking cannot be disregarded in addressing these topics.</p>
<p>In loop quantum gravity, my own technical area, Newtonian space and time are reinterpreted as a manifestation of something which is granular, probabilistic, and fluctuating in a quantum sense. Space, time, particles, and fields get fused into a single entity: a quantum field that does not live in space or time. The variables of this field acquire definiteness only in interactions between subsystems. The fundamental equations of the theory have no explicit space or time variables. Geometry appears only in approximations. Objects exist within approximations. Realism is tempered by a strong dose of relationalism. I think we physicists need to discuss with philosophers, because I think we need help in making sense of all this.</p>
</blockquote>
<p>Ravolli spends the last couple of paragraphs trying to connect the other way round - philosophy needs physics too - but it's as if Ravolli thinks that self-evident and needs not much of a convincing:</p>
<blockquote>
<p>No great philosopher of the past would ever have thought for a moment of not taking seriously the knowledge of the world offered by the science of their times. …</p>
<p>Our general knowledge is the result of the contributions from vastly different domains, from science to philosophy, all the way to literature and the arts, and our capacity to integrate them.</p>
</blockquote>
]]></description>
<pubDate>Tue, 11 Aug 2026 12:00:00 +0000</pubDate>
</item><item>
<title>Re:Paper 001 — Can Programming Be Liberated From von Neumann Style?</title>
<link>https://notes.druchan.com/re-paper-001</link>
<guid>https://notes.druchan.com/re-paper-001</guid>
<description><![CDATA[<p><em>Re:Paper</em> is a pet project where I get to read interesting papers from the past and share my thoughts/impressions. It's not too dissimilar to book reviews, except for papers or talks that get published as papers.</p>
<p>For 001, we have <a href="https://dl.acm.org/doi/10.1145/359576.359579"><em>Can Programming be Liberated from von Neumann Style</em></a> by <a href="https://en.wikipedia.org/wiki/John_Backus">John Backus</a>.</p>
<p>I have no idea how I landed on this paper or from where. But I'm certain that it must've come about from my daily meanderings in the functional-programming world (subreddits, discourse, some random FP slack channel etc.).</p>
<p>I think it was good that by the time I discovered this paper (which is a written-up version of a talk at the ACM), I had dabbled in functional programming, written a few programs, and gotten completely smitten by this paradigm. That definitely helped in appreciating (and to a reasonable degree, understanding) what Backus was talking about.</p>
<div class="separator"></div>
<p>It feels both pertinent and absolutely useless to be talking about the structure of programming languages when AI/LLMs are hard at work trying to invalidate most of these things by making production of code and code artefacts cheap (in terms of effort involved, not the actual money spent on tokens).</p>
<p>But what I like about this paper/talk is a couple of levels more fundamental (and universal) than functional programming vs conventional programming. It's Backus's inherent thrust towards reduction, towards simplification and towards arriving at programming structures that are simple (in the <a href="https://www.infoq.com/presentations/Simple-Made-Easy/"><em>Rich Hickey</em> way</a>).</p>
<p>If I were to reduce the paper/talk, it's this:</p>
<ul>
<li>conventional programming languages are complex and not very flexible.</li>
<li>even newer languages of his time follow the same philosophy of other conventional languages because they all spring from a near-universal architecture of computers themselves: the von Neumann architecture.</li>
<li>in the conventional world, programs are a chaos of expressions and statements (Backus clearly prefers the former) and statements are inherently disorderly and unwieldy.</li>
<li>a lot of the language is about storing, naming, retrieving data instead of being about the core logic of the computation itself.</li>
<li>and the languages have very limited, frozen expressive power: the constructs are already built-in, and extensibility is almost non-existent.</li>
<li>the paradigm he puts forth is &quot;functional-style&quot; where one combines forms (ie composition of functions) so more complex programs can be built from simpler programs (big on extensibility), don't have to name their arguments (point-free), and has a familiar algebra-esque appearance so there is not much of a distinction between the syntax and the logical expression. They're almost the same. Less cognitive load.</li>
</ul>
<div class="separator"></div>
<p>The first thing to know is that these incensed debates on programming languages is not of a recent making. Python vs Javascript and Rust vs Zig are just continuing a tradition that Backus equates to medieval debates:</p>
<blockquote>
<p>Discussions about programming languages often resemble medieval debates about the number of angels that can dance on the head of a pin instead of exciting contests between fundamentally differing concepts.</p>
</blockquote>
<p>Backus's primary dig is at what he terms as the &quot;von Neumann-style&quot; of programming that has its intellectual genesis in the <em>von Neumann architecture</em>.</p>
<p>All the way from Assembly to Fortran (which Backus created/spearheaded), this architecture has influenced how we think about programming and how people think about the syntax and structures of a programming language.</p>
<blockquote>
<p><a href="https://en.wikipedia.org/wiki/Von_Neumann_architecture">the von Neumann architecture consists of</a> three parts: a central processing unit (or CPU), a store, and a connecting tube that can transmit a single word between the CPU and the store (and send an address to the store). I propose to call this tube the <em>von Neumann bottleneck</em>. The task of a program is to change the contents of the store in some major way; when one considers that this task must be accomplished entirely by pumping single words back and forth through the von Neumann bottleneck, the reason for its name becomes clear.</p>
<p>Ironically, a large part of the traffic in the bottleneck is not useful data but merely names of data, as well as operations and data used only to compute such names.</p>
</blockquote>
<p>That is, a lot of the code and syntax is about the assignments, the loops, the busywork of storing and retrieving data instead of the core logic of the program itself:</p>
<blockquote>
<p>Thus programming is basically planning and detailing the enormous traffic of words through the von Neumann bottleneck, and much of that traffic concerns not significant data itself but where to find it.</p>
</blockquote>
<p>This &quot;traffic&quot; gets expressed as assignment statements which splits the world into two: statements and expressions:</p>
<blockquote>
<p>von Neumann languages also split programming into a world of expressions and a world of statements; the first of these is an orderly world, the second is a disorderly one, a world that structured programming has simplified somewhat, but without attacking the basic problems of the split itself and of the word-at-a-time style of conventional languages.</p>
</blockquote>
<p>The most common &quot;statement&quot; is the assignment statement which itself is a combination of a statement and an expression.</p>
<pre><code>c := c + a[i] * b[i]
</code></pre>
<blockquote>
<p>Moreover, the assignment statement splits programming into two worlds. The first world comprises the right sides of assignment statements. This is an orderly world of expressions, a world that has useful algebraic properties (except that those properties are often destroyed by side effects). It is the world in which most useful computation takes place.</p>
<p>The second world of conventional programming languages is the world of statements. The primary statement in that world is the assignment statement itself. All the other statements of the language exist in order to make it possible to perform a computation that must be based on this primitive construct: the assignment statement.</p>
</blockquote>
<p>To Backus, the world of statements is unwieldy, does not lend itself to mathematical or logical scrutiny.</p>
<blockquote>
<p>This world of statements is a disorderly one, with few useful mathematical properties. Structured programming can be seen as a modest effort to introduce some order into this chaotic world, but it accomplishes little in attacking the fundamental problems created by the word-at-a-time von Neumann style of programming, with its primitive use of loops, subscripts, and branching flow of control.</p>
</blockquote>
<p>Backus also focuses his criticism on the idea that conventional languages are rigid structures and offer very limited changeable parts. There's no scope for composition (<em>combining forms</em>), and the state transition rules are all built into the framework itself so the user has to just play by the rules and cannot invent new forms.</p>
<blockquote>
<p>A programming language comprises a framework plus some changeable parts. The framework of a von Neumann language requires that most features must be built into it; it can accommodate only limited changeable parts (e.g., user-defined procedures) because there must be detailed provisions in the &quot;state&quot; and its transition rules for all the needs of the changeable parts, as well as for all the features built into the framework. The reason the von Neumann framework is so inflexible is that its semantics is too closely coupled to the state: every detail of a computation changes the state.</p>
</blockquote>
<p>Backus takes the case of the &quot;inner-product&quot;. Here's the conventional program and Backus's criticism of it:</p>
<pre><code>c := 0
for i := 1 step 1 until n do
   c := c + a[i]×b[i]
</code></pre>
<blockquote>
<p>Several properties of this program are worth noting:</p>
<p>a) Its statements operate on an invisible &quot;state&quot; according to complex rules.</p>
<p>b) It is not hierarchical. Except for the right side of the assignment statement, it does not construct complex entities from simpler ones. (Larger programs, however, often do.)</p>
<p>c) It is dynamic and repetitive. One must mentally execute it to understand it.</p>
<p>d) It computes word-at-a-time by repetition (of the assignment) and by modification (of variable i).</p>
<p>e) Part of the data, n, is in the program; thus it lacks generality and works only for vectors of length n.</p>
<p>f) It names its arguments; it can only be used for vectors a and b. To become general, it requires a procedure declaration. These involve complex issues (e.g., call-by-name versus call-by-value).</p>
<p>g) Its &quot;housekeeping&quot; operations are represented by symbols in scattered places (in the <strong>for</strong> statement and the subscripts in the assignment). This makes it impossible to consolidate housekeeping operations, the most common of all, into single, powerful, widely useful operators. Thus in programming those operations one must always start again at square one, writing &quot;<strong>for</strong> i := ...&quot; and &quot;<strong>for</strong> j := ...&quot; followed by assignment statements sprinkled with i's and j's.</p>
</blockquote>
<p>So what's Backus's solution?</p>
<p>By this time (1978), computing has seen two or more new ideas come into the academic mainstream. Church's Lambda calculus and APL were influential in Backus's proposal.</p>
<blockquote>
<p>An alternative functional style of programming is founded on the use of combining forms for creating programs. Functional programs deal with structured data, are often nonrepetitive and nonrecursive, are hierarchically constructed, do not name their arguments, and do not require the complex machinery of procedure declarations to become generally applicable. Combining forms can use high level programs to build still higher level ones in a style not possible in conventional languages.</p>
</blockquote>
<p>In Backus's FP, the inner product is this:</p>
<pre><code>Def Innerproduct
    ≡ (Insert +)∘(ApplyToAll ×)∘Transpose
</code></pre>
<blockquote>
<p>Or, in abbreviated form:</p>
</blockquote>
<pre><code>Def IP ≡ (/+)∘(α×)∘Trans.
</code></pre>
<blockquote>
<p>Composition (∘), Insert (/), and ApplyToAll (α) are <em>functional forms</em> that combine existing functions to form new ones.</p>
</blockquote>
<p>ApplyToAll is essentially <code>map</code>. Insert is <code>reduce</code> (although, more technically, it's <code>reduceRight</code>). Composition has no JS equivalent but it's fundamentally the <code>compose</code> function from <a href="https://ramdajs.com/docs/#compose">Ramda</a>/<a href="https://sanctuary.js.org/#compose">Sanctuary</a>.</p>
<p>How does this definition work?</p>
<p>Transpose takes two vectors of arbitrary length and &quot;transposes&quot; them:</p>
<pre><code>Transpose:&lt;1,2,3&gt; &lt;4,5,6&gt; = &lt;&lt;1,4&gt;,&lt;2,5&gt;,&lt;3,6&gt;&gt;
</code></pre>
<p>ApplyToAll applies the binary <code>×</code> to each vector:</p>
<pre><code>ApplyToAll ×: &lt;&lt;1,4&gt;,&lt;2,5&gt;,&lt;3,6&gt;&gt; = &lt;&lt;1×4&gt;,&lt;2×5&gt;,&lt;3×6&gt;&gt; = &lt;&lt;4&gt;,&lt;10&gt;,&lt;18&gt;&gt; = &lt;4,10,18&gt;
</code></pre>
<p>And finally the Insert:</p>
<pre><code>Insert +: &lt;4,10,18&gt; = 4 + 10 + 18 = 32.
</code></pre>
<p>Right away, we can notice a few things about this program:</p>
<ul>
<li>no arguments specified. <a href="https://en.wikipedia.org/wiki/Tacit_programming">Point-free</a>. The functions work on vectors of arbitrary length. Eliminates that <code>n</code> from the conventional program,</li>
<li>The whole logic is built from smaller functions by way of composition. That's what Backus calls <em>combining forms</em>;</li>
<li>no hidden states (<code>n</code>, <code>i</code>, accumulating <code>c</code>).</li>
</ul>
<p>In the paper, he explains the benefits:</p>
<blockquote>
<p>a) It operates only on its arguments. There are no hidden states or complex transition rules. There are only two kinds of rules, one for applying a function to its argument, the other for obtaining the function denoted by a functional form such as composition, <em>f</em>∘<em>g</em>, or ApplyToAll, αf, when one knows the functions <em>f</em> and <em>g</em>, the <em>parameters</em> of the forms.</p>
<p>b) It is hierarchical, being built from three simpler functions (+, ×, Trans) and three functional forms <em>f</em>∘<em>g</em>, α<em>f</em>, and /<em>f</em>.</p>
<p>c) It is static and nonrepetitive, in the sense that its structure is helpful in understanding it without mentally executing it. For example, if one understands the action of the forms <em>f</em>∘<em>g</em> and α<em>f</em>, and of the functions × and Trans, then one understands the action of α× and of (α×)∘Trans, and so on.</p>
<p>d) It operates on whole conceptual units, not words; it has three steps; no step is repeated.</p>
<p>e) It incorporates no data; it is completely general; it works for any pair of conformable vectors.</p>
<p>f) It does not name its arguments; it can be applied to any pair of vectors without any procedure declaration or complex substitution rules.</p>
<p>g) It employs housekeeping forms and functions that are generally useful in many other programs; in fact, only + and × are not concerned with housekeeping. These forms and functions can combine with others to create higher level housekeeping operators.</p>
</blockquote>
<p>The fundamental idea that Backus keeps coming back to, with his push for functional programming, is this:</p>
<blockquote>
<p>... programs can be expressed in a language that has an associated algebra. This algebra can be used to transform programs and to solve some equations whose &quot;unknowns&quot; are programs, in much the same way one solves equations in high school algebra.</p>
</blockquote>
<p>Interesting note: recursion is already baked into the definition of the formal representation of a functional program expression:</p>
<pre><code>Def l ≡ r
</code></pre>
<blockquote>
<p>where the left side <em>l</em> is an unused function symbol and the right side <em>r</em> is a functional form (which may depend on <em>l</em>).</p>
</blockquote>
<p>What about &quot;state&quot; that Backus said conventional programs make complex?</p>
<p>Pure expressions are generally not useful by way of programs. A program has to do something (think, side-effects like writing to the disk, thereby changing some form of a global state of the system).</p>
<p>If you're familiar with ideas of <a href="https://redux.js.org/">Redux</a> (which has its ideological roots in Elm's <a href="https://guide.elm-lang.org/architecture/">TEA</a>), Backus's words might ring familiar:</p>
<blockquote>
<p>Unlike von Neumann languages, these systems have semantics loosely coupled to states-only one state transition occurs per major computation.</p>
</blockquote>
<blockquote>
<p>The applicative subsystem cannot change the state D and it does not change during the evaluation of an expression. A new state is computed along with output and replaces the old state when output is issued.</p>
</blockquote>
<p>Here, Backus is proposing something of the form:</p>
<pre><code>State -&gt; (Value, State)
</code></pre>
<p>That is, there's a global state. The functional program does nothing to it. It <em>uses</em> the global state, to compute a new one, along with an output. When the computation is done, it replaces the old state with the new one. So that's, approximately in 1978, when the ideological seed for the <a href="https://wiki.haskell.org/index.php?title=State_Monad">State Monad</a>, <a href="https://guide.elm-lang.org/architecture/">TEA</a> etc are sown.</p>
<p>Backus does this because this form, or this idea, lends itself better to algebraic scrutiny, formalization and even composition.</p>
<div class="separator"></div>
<p>All said and done, the von Neumann architecture is still kind of the bedrock of our computers. And that paradigm continues to have its influence across languages.</p>
<p>But somewhere, a consortium of ideas like applicative-style, strong structural types, algebraic systems of expressions etc. have seeped enough to influence a new crop of programming languages in recent times.</p>
<p>Credit for some parts of that certainly goes to John Backus.</p>
]]></description>
<pubDate>Fri, 07 Aug 2026 12:00:00 +0000</pubDate>
</item><item>
<title>Reacting to React's use()</title>
<link>https://notes.druchan.com/reacting-to-use</link>
<guid>https://notes.druchan.com/reacting-to-use</guid>
<description><![CDATA[<p>Years ago, I used to work as a tech blogger covering iOS how-tos for the iPhone 4 series. Apple iOS was a very restrictive system unlike Android, and the only way you could customize your iPhone beyond the limited native options was to &quot;jailbreak&quot; the phone, install something like <a href="https://www.cydiafree.com/">Cydia</a> (a marketplace for apps that can only be installed on a jailbroken iPhone), and download the apps that made it possible to customize the phone.</p>
<p>You couldn't even customize the notification sheet, or the status bar on a normal iPhone. But once jailbroken, almost everything was possible.</p>
<p>The most weird bit was this: many of the customizations that jailbreaking offered would eventually be supported natively by Apple. It wasn't just the Android folks that would make fun of Apple because it was so late to the party and yet making it sound like it was so innovative. The jailbreaking community too made fun of Apple for the very same reason.</p>
<p>That is precisely how I feel about <code>use()</code>.</p>
<p>The idea goes by many names in other ecosystems (and frameworks within the JS ecosystem). You can call it an AsyncWrapper, or a DataWrapper, or LCE (Load/Content/Error), or QueryWrapper or whatever. The basic concept is simple:</p>
<p>A wrapper takes an async function call that could return some data or an error, and then it will show you one of three things:</p>
<ul>
<li>A loading state when the async function is being called and awaited</li>
<li>An error state if the result is an error/exception</li>
<li>A content state if the result is content</li>
</ul>
<p>Almost a decade ago, we used to write simple wrapping components that could be used like these:</p>
<pre><code class="language-jsx">&lt;DataWrapper
    query={asyncFunction}
    loader={&lt;LoadingComponent /&gt;}
    error={(e) =&gt; &lt;ErrorComponent err={e} /&gt;}
&gt;
{(content) =&gt; &lt;Render data={content} /&gt;}
&lt;/Data&gt;
</code></pre>
<p>Literally. A decade ago. We figured out the syntax of the abstraction a decade ago. The abstraction itself predates most of us.</p>
<p>And now you're telling me this is better?</p>
<pre><code class="language-jsx">const UserPage = () =&gt; {
    const userPromise = fetch(...);
    return (
        &lt;ErrorBoundary fallback={&lt;ErrorMsg /&gt;}&gt;
            &lt;Suspense fallback={&lt;LoadingComponent /&gt;}&gt;
                &lt;UserProfile userPromise={userPromise} /&gt;
            &lt;/Suspense&gt;
        &lt;/ErrorBoundary&gt;
    )
}

const UserProfile = ({ userPromise }) =&gt; {
    const data = use(userPromise);
    return &lt;UserCard data={data} /&gt;
}
</code></pre>
<p>How is it better?</p>
<ul>
<li>I have to ensure and repeat the Suspense and ErrorBoundary components are present, otherwise the app will crash</li>
<li>I have to create a &quot;called&quot; promise function (it's not even a thunk) and then pass <em>that</em> to the child. I've heard of passing data and then I've heard of passing functions. What nonsense is this passing of a called promise?</li>
<li>There are restrictions anyway on <code>use</code> where it can't be called inside a function that's not a component or a hook — and not in <code>try / catch</code> blocks either</li>
<li>Error-boundaries in React are weirdly shaped and you'd better rely on another package for easy error boundaries (which still has its own complications).</li>
</ul>
<p>Am I getting older or are React folks really complicating things? The <code>use</code> is a good example of, &quot;look, we know our earlier hooks had various conditions, so here's a new one that removes those conditions but brings a new set of its own.&quot;</p>
<p>React has made building web apps insanely simple with a lot of bells and whistles for sure, but just like the parent (Facebook) where it was incubated, <em>at what cost</em>?</p>
]]></description>
<pubDate>Sun, 31 May 2026 12:00:00 +0000</pubDate>
</item><item>
<title>Court Chronicles</title>
<link>https://notes.druchan.com/court-visit-chronicles</link>
<guid>https://notes.druchan.com/court-visit-chronicles</guid>
<description><![CDATA[<p>My colleague and I were to meet at the court complex for my initiation into how courtrooms work. As a joke-quip, I said to my colleague, &quot;See you in court!&quot;</p>
<p>And so, for the next handful of hours, for every query of mine regarding a legal process, her example would begin: &quot;So let's say you and I are involved in a dispute.&quot; For the entire day spent there, we were constantly up against each other in some exemplified dispute or the other.</p>
<div class="separator"></div>
<p>The fact that anyone could enter the court complex, walk into a courtroom, and detonate a few kilos of C4 or hurl country-bombs is unsettling. I was expecting a moderately-serious, Namma Bengaluru Metro-level security checks at the entrance. Zilch. So the first thought as I stepped into the court complex building hurling my backpack (which, by the way, had a combustible material -- Macbook Pro) was this macabre what-if. What if I was a low-esteem terrorist trying to blow a junior judge's courtroom to make a mediocre point?</p>
<div class="separator"></div>
<p>You're in a conversation with someone in a room abuzz with chitter-chatter of so many other voices it's impossible to distinguish the words of any one conversation. And yet, your ears perk up and your head turns when you hear your name.</p>
<p>I think for lawyers it's their case numbers being called out by the clerk. In every courtroom that had some senior (read, very old) lawyers sitting in the bay, right under the nose of the presiding judge, one or more was dozing off. It was either pre-lunch fatigue or post-lunch food-coma. There was nary an attempt to be subtle either. It was full-on. Chin-touching-your-bands-level head-drooping. I was partly hoping to be in a courtroom that one of these sleeping lawyers let out a loud snore in the middle of a judge's dictation.</p>
<div class="separator"></div>
<p>Have you seen the defense attorney give up and conduct a pointless chitchat with a random lawyer seated next to him while his client was being grilled by the opposite's lawyer and the judge and the client makes statement upon statement weakening his position? I can now say I have.</p>
<div class="separator"></div>
<p>My colleague's enthusiasm to help me understand legal processes is palpable. Just that occasionally I feel the eyes of a stern judge on us as my colleague animatedly explains something to me amidst the proceedings. School-day traumas of being caught by the teacher for chitchat and a summary dress-down or banishment from the class came crashing.</p>
<p>But I also wanted to tell my colleague, &quot;should we bet on if we'll get caught talking by this judge in their courtroom?&quot;</p>
]]></description>
<pubDate>Mon, 04 May 2026 12:00:00 +0000</pubDate>
</item><item>
<title>How many layers to track an objective?</title>
<link>https://notes.druchan.com/how-many-layers-to-an-objective</link>
<guid>https://notes.druchan.com/how-many-layers-to-an-objective</guid>
<description><![CDATA[<p>Linear has this hierarchy of layers to track, say, a feature. Not too dissimilar from all this &quot;epic, story, task, sub-task&quot; kind of nonsense that goes around. Linear calls it &quot;project -&gt; issue -&gt; sub-issue&quot; etc.</p>
<p>I am going through a project I am working on and someone has set up projects for each feature, and each project has similar-looking issues: <code>&lt;feature&gt; frontend implementation</code>, <code>&lt;feature&gt; backend implementation</code>, <code>&lt;feature&gt; research</code>, <code>&lt;feature&gt; acceptance test</code> and so on. Our backlog is dozens of these tickets.</p>
<p>Alright. Let me take a look at the status of a feature. That means I go to the &quot;projects&quot; page. That page lists the issues each of which is <code>&lt;feature&gt; ____</code> and if I want to look at what's the status on, say, the frontend of it, I have to go into the issue named <code>&lt;feature&gt; frontend implementation</code>. (The overall status is visible for each issue without going into it, yes, but by <em>status</em> I mean what's actually happening in this issue? Are there comments left by someone? Are there commits pushed towards this issue?)</p>
<p>You'd think this is OK. No. It sucks.</p>
<p>Each stage is a layer. Each layer is a different page. Each layer has its own set of metadata and concepts to grok. Each layer comes with a change in context that's so subtle yet throws you off-kilter if you aren't razor focused about what it is that you're looking for every step of the way. And boy have reels done their number on our focus.</p>
<p>Linear has one of the simplest, cleanest interfaces I've ever used. Despite that, all the different layers, the hierarchies, and the metadata and their visual representations felt jarring. Too much <em>effort</em> to get to the info I need.</p>
<p>--</p>
<p>When I began working on a feature — which was a &quot;project&quot; with 4 different issues on Linear — I closed all tickets and created just one ticket for the feature. All action-items / sub-tasks of that ticket were just markdown checklists:</p>
<pre><code class="language-text">Feature Abcd

- [ ] Implement frontend
- [ ] Implement backend
...
</code></pre>
<p>Updates on the feature became comments under the ticket. Extra info relevant to the implementations became part of the description:</p>
<pre><code class="language-text">Feature Abcd

- [ ] Implement frontend
- [ ] Implement backend
...

--

We'll use [this open-source project](link) for the server implementation.

-- and other info goes here...
</code></pre>
<p>The simplification helped. I didn't have to drag myself through layers of UI to get or set information on some task. One ticket was all it needed.</p>
<p>--</p>
<p>I can hear the argument. &quot;This won't work for teams working on multiple parts of the same feature!&quot; &quot;This won't work for epics that are inherently complex and involve lots of different threads!&quot;</p>
<p>Sure. Maybe.</p>
<p>The thing is, Linear is a means to an end. The end is shipping the feature to users. There are two core reasons for Linear (and the likes):</p>
<ul>
<li>Capture what needs to be worked on (features, bugs, optimizations, explorations etc.)</li>
<li>Have a communication layer that is much more refined than a PM pinging everyone and asking verbose questions and reading verbose answers.</li>
</ul>
<p>What I mean is, &quot;OK, what's the status of the UI for feature XYZ?&quot; can be answered with a checkbox and some comments under a ticket. Or by going to the project/epic, finding the correct story/issue and clicking it, then finding the right task/sub-issue and clicking it, only to find that <em>that</em> particular item hasn't been updated since inception because the developer couldn't be bothered to update an item so far down the layer-hole.</p>
<p>Oh, also, multiple people working on the same feature can update the same ticket.</p>
<p>--</p>
<p>Yeah, yeah, this is about to turn into the same-old complaint of &quot;project-management-as-a-job&quot; ruining the pleasures of just working on stuff.</p>
<p>Linear, which started out as this really simple antidote to Jira and the likes, is now probably getting there itself. I am sure user feedback is what drives these decisions: users want layers, users want hierarchies etc. So it feels totally justified in introducing these &quot;carefully-designed&quot; complexities into the product.</p>
<p>The gripe is that the feedback comes from folks who see project management as an end and not a means?</p>
<p>Also, it's not just about the app. How do we end up using something? The app provides the &quot;flexibility&quot;, but that doesn't mean we add 5 layers of information to track a simple objective.</p>
<p>--</p>
<p>Organizational management is a deeply and richly studied thing. No doubt about it. The stupidity is that we imported the complex layers of NASA's and military organizations' management styles, pretending to be building things just as humongous or of similar sophistication when all we're building, Andy, is a web app.</p>
]]></description>
<pubDate>Sun, 22 Mar 2026 12:00:00 +0000</pubDate>
</item><item>
<title>Power studies journal #1</title>
<link>https://notes.druchan.com/power-studies-journal-1</link>
<guid>https://notes.druchan.com/power-studies-journal-1</guid>
<description><![CDATA[<p>This is hopefully the first of a regular frequency of journal entries / updates during the course of studies in power.</p>
<p>Power cuts across multiple dimensions and levels. There's a lot of power dynamics in nature, within species, across species. In humans (sociologically), there's individual power, there's collective power, there's power of nations -- all acted out in relation to other parties. Power dynamics dictate all sorts of interactions (and bullying and leverage and so on).</p>
<p>In my dictionary, this sociological power has always carried a negative connotation (but, obviously, that is not necessarily the case). Evil, so to speak. &quot;Power corrupts.&quot; Patriarchy, casteism, racism, elitism, wealth-gap etc. are all driven by power structures emerging from privilege, power imbalances and the &quot;misuse&quot; of said privilege. And the resistance to and overcoming of such a power is by way of dismantling the power through collective action. The leftist ideal, so to speak.</p>
<p>When a bad-actor uses power (of privilege, economics, military-might etc.) to commit bad acts, we hear about it from the lens of &quot;misusing/abusing&quot; their power. When a good-actor does some good, the coverage of that doesn't look at it from the angle of power; rather, it's usually seen from the lens of responsibility or philanthropy or altruism.</p>
<p>I guess power can be studied from a utilitarian standpoint (this is what the Thiels and the Musks do and then leverage that knowledge to screw the world while completely believing that they're a force for good!). And it can be studied as an intellectual curiosity.</p>
<p>There's a lot going on here that I need to understand. Hypothesis that I implicitly seem to hold true - like power inherently corrupts at some point - need to be cross-referenced with existing literature (beyond Julius Caesar). That's just one example.</p>
<p>--</p>
<p>For starters, I have a bunch of books I've long-listed (in no sort order). Who knows how much of it I would make through before something else comes up.</p>
<ul>
<li>Influence: Psychology of Persuasion, Robert Cialdini</li>
<li>Power: Why Some People Have It and Some Don't, Jeffrey Pfeffer</li>
<li>The Prince, Machiavelli</li>
<li>Rules for Radicals, Saul Alinsky</li>
<li>48 Laws of Power, Robert Greene</li>
<li>Who's Pulling Your Strings? Harriet B. Braiker</li>
<li>Games People Play, Eric Berne</li>
<li>Never Split the Difference, Chris Voss</li>
<li>Discourses on Livy, Machiavelli</li>
<li>The Crowd: A Study of Popular Mind, Gustave Le Bon</li>
<li>The Art of Worldly Wisdom, Baltasar Gracián</li>
<li>Without Conscience: The Disturbing World of Psychopaths Among Us (Robert Hare)</li>
<li>The Gift of Fear (Gavin de Becker)</li>
<li>33 Strategies of War, Robert Greene</li>
<li>In Sheep's Clothing: Understanding and Dealing with Manipulative People, George K. Simon, Jr.</li>
<li>The Mind and Society, Vilfredo Pareto</li>
<li>Brave New World &amp; Brave New World Revisited, Aldous Huxley</li>
<li>The Machiavellians: Defenders of Freedom, James Burnham (on the elites argument)</li>
<li>Discourses on Voluntary Servitude, Étienne de La Boétie</li>
<li>Propaganda: The Formation of Men's Attitudes, Jacques Ellul</li>
<li>Propaganda, Edward Bernays</li>
<li>The Dictator's Handbook, Bruce Bueno de Mesquita ()</li>
<li>The Grand Chessboard, Zbigniew Brzezinski (former NSA writes on why US should control Eurasia)</li>
<li>The Power Broker, Robert Caro (abt an influential New Yorker, Robert Moses)</li>
<li>Han Feizi, Han Fei (Chinese legalist classic on how a ruler should be)</li>
<li>Art of War, Sun Tzu</li>
<li>Arthashastra, Kautilya</li>
<li>Vidura Niti, Mahabharata</li>
<li>Niti Shatakam, Bhartrhari</li>
<li>Chanakya Niti, Chanakya</li>
<li>The Book of Ghost Valley Master, Guiguzi</li>
<li>Thick Face, Black Heart - Chin-Ning Chu (trans of Thick Black Theory by Li Zongwu)</li>
<li>The Craft of Power, R.G.H. Siu</li>
</ul>
<p>Interestingly, the book ordering kind of reflects the western-oriented structures of internet search, online data and general inclination of the world. When we talk of power, it's almost impossible to go without talking about Machiavelli's Prince. Not so much Kautilya's Arthashastra. (Sun Tzu is perhaps an exception, but the credit to that goes to western propaganda). Internet searches reflect this big time. Loads of recommendations like 'Discourses on Livy', 'Art of Worldly Wisdom', 'Power Broker', and none of the oriental books till I prodded.</p>
<p>There are some 'popsci' kinda books in the list (Robert Greene, notably). But the most interesting one is 'Rules for Radicals', a '71 book from a community activist.</p>
<p>--</p>
<p>India's foreign minister, S. Jaishankar, writes (in his book, 'The India Way'):</p>
<blockquote>
<p>The one society that has elevated dissimulation to the highest level of statecraft, as one of our foremost Sinologists pointed out, is China. Its virtues are repeatedly lauded in the Three Kingdoms epic, where many of the decisive encounters are won by trickery rather than by force. The 36 Stratagems in the Book of Qi are further proof of how deeply such approaches have percolated into popular Chinese thinking. 'Deceiving the heavens to cross the ocean' or' making a sound in the East to then strike West' are among its most well-known aphorisms. No less are 'decking trees with false blossoms' or the empty fort strategy. Unlike in India, there is neither guilt nor doubt in dissembling; in fact, it is glorified as an art. Some analysts have even suggested that China's extraordinary rise has drawn heavily on its cultural attributes.</p>
</blockquote>
<p>Sun Tzu is sharp and incisive but looks like even he feels mellow compared to the kinds of 'Thick Face, Black Heart' (Li Zongwu, end of Qing dynasty). Anyway, the point is: the cultural happenstances of a system get encoded into literary works and then those go on to dictate (amplify, preach, sanction) all sorts of behavior into the cultural DNA of the descendants of that system. True of Sun Tzu, true of Machiavelli, perhaps true of Kautilya too.</p>
<p>I have notes from 'Acting with Power' that I need to revisit. And I started off with (the populist) '48 Laws of Power' to get a broader sense of what's out there. It's not so much a serious study-book (and I may be wrong about that), but Greene has distilled a broad collection of prior work, I might just get a good look at the layout of the land and the bibliography helps.</p>
]]></description>
<pubDate>Thu, 12 Mar 2026 12:00:00 +0000</pubDate>
</item><item>
<title>500 days of rdigest</title>
<link>https://notes.druchan.com/500-days-of-rdigest</link>
<guid>https://notes.druchan.com/500-days-of-rdigest</guid>
<description><![CDATA[<p><a href="https://github.com/chandru89new/rdigest"><code>rdigest</code></a> is a small CLI-based tool I made in late 2024. It began as a way to manage my daily reading (online digital consumption) because YouTube's UI was distracting, RSS feed readers and their infinitely-scrolling pages were overwhelming and I had cut out social media from life eons ago. TL;DR, digital content consumption was at some unmanageable crossroads in life and I had to find a way to deal with it.</p>
<p>I've been using <code>rdigest</code> for 500+ days now. Of the handful of side-projects I built to scratch my own itch, this remains a powerful daily-driver.</p>
<p>--</p>
<h6 id="contents" tabindex="-1"><a class="header-anchor" href="#contents">Contents</a></h6>
<ul>
<li><a href="#i.">A quick brief of what <code>rdigest</code> is</a></li>
<li><a href="#ii.">Learning by building</a></li>
<li><a href="#iii.">Hand-crafting software and LLMs</a></li>
<li><a href="#iv.">Scratching an itch vs. building for others</a></li>
<li><a href="#v.">Sporadicity</a></li>
</ul>
<p>--</p>
<h6 id="i." tabindex="-1"><a class="header-anchor" href="#i.">I.</a></h6>
<p>Now, this part about what <code>rdigest</code> is (and why) is for the accidental reader who landed here god knows how:</p>
<p><code>rdigest</code> is technically a feed reader but it's also not really a feed reader. It collects links from all the feeds you follow and then creates a daily digest for you. The daily digest is just a finite bunch of links. A bunch of links grouped by source and zero algorithm. A bunch of links you look at, skim through, click on the ones you want to actually read or view... and then you're done with your digital content catch up!</p>
<p>That last bit is the critical piece, the linchpin ideology.</p>
<p>The way we consume digital content today is horrible. There's an infinite, never-ending stream hitting at us at all times. All kinds of platforms have interfaces that are designed cunningly to trick your brain into staying on the platform for as long as possible. You're thinking about Twitter, Instagram, TikTok and YouTube, but even other outlets like blogging engines, content management systems, AT-Proto interfaces (Mastodon/Bluesky) and even popular feed readers promote and enable these &quot;infinite stream&quot; interfaces.</p>
<p>This leads to all kinds of problems. Attention is low, ability to sustain a longform is gone, and no interface or product gives you this feeling of closure. The same mechanics of constant connectivity over work Slack ruining work-life boundaries are at play: it never feels like you're done reading, seeing, hearing the things you want to for a given day.</p>
<p>Alright, so that's the tirade against dark-pattern-embracing products streaming endless content and hacking into our neurons.</p>
<p>There may be many antidotes to this. <code>rdigest</code>'s idea is borrowed from the old, physical newspaper model that I <a href="https://notes.druchan.com/escape-from-algotraz#v.-%22done%22-for-the-day">harp about</a>. Imagine the morning newspaper (ie, if you're old enough). The paper arrives. You skim through the headlines, read the ones that interest you, and then you're done for the day. There's nothing more to do there (unless you were some hotshot that got the <em>evening</em> paper too). <code>rdigest</code> pretty much does the same, except it is about links from RSS feeds you follow and it's got no frills. Just a page of links like this:</p>
<p>
<a href="/images/rdigest.png" target="_blank">
<img src="/images/rdigest.png" />
</a>
</p>
<p>--</p>
<h6 id="ii." tabindex="-1"><a class="header-anchor" href="#ii.">II.</a></h6>
<p>Reminiscing about a &quot;hand-written&quot; side-project in the age of LLM-written software seems weird and futile. There's nothing special anymore about building software except for the big picture bits and the devil-is-in-the-details bits.</p>
<p>And yet, artisanal software, especially of the crude, <a href="https://www.robinsloan.com/notes/home-cooked-app/">home-cooked</a> kind might retain its charm.</p>
<p>I had two hopes when I began <code>rdigest</code>. One, to build something that eventually helps me manage my daily digital consumption (that had spiralled out of control to the point of giving up on online reading). Two, to learn a programming language (Haskell in this case) along the way.</p>
<p>I <a href="https://notes.druchan.com/haskell-journal-1">kept a journal</a> while I built <code>rdigest</code>. The first entry goes:</p>
<blockquote>
<p>Decided to finally build something in Haskell to learn the language. So far, I've been solving puzzles and similar tasks, but nothing has given me the confidence to say, &quot;Yes, I can build that in Haskell.&quot;</p>
</blockquote>
<p>As I built out <code>rdigest</code>, I ended up learning nuanced things about file I/O, batched concurrency, safely interacting with SQLite, implementing a small migration module, and more, all from within the Haskell ecosystem. Like all side-projects, it was fun, <a href="https://notes.druchan.com/haskell-journal-1#day-12">it was frustrating at times</a>, and thankfully it also ended up being rewarding.</p>
<p>--</p>
<h6 id="iii." tabindex="-1"><a class="header-anchor" href="#iii.">III.</a></h6>
<p>Work on <code>rdigest</code> began in late 2024. By this time, I was using ChatGPT at work as an intelligent rubber-duck that talks back. Whatever I'd have googled or Stack Overflowed, I ChatGPT'd.</p>
<p><code>rdigest</code> was built by hand but definitely helped by inputs from ChatGPT. Of course there were also many instances when the LLM sent me on wild goose-chases and proffered irrelevant complexities.</p>
<blockquote>
<p>Wrote some initial code based on ChatGPT's example of scraping. However, ChatGPT got the <code>attr</code> function wrong.</p>
</blockquote>
<blockquote>
<p>ChatGPT suggested <code>optparse-applicative</code>, but I decided it was overkill for what I needed. A simple <code>--url &lt;url&gt;</code> argument was enough.</p>
</blockquote>
<blockquote>
<p>I had a long chat with ChatGPT about these things, asking it about the idea of bubbling up the errors from ExceptT without having to do <code>runExceptT</code> wherever I wanted the error to be bubbled up but the ideas it returned were not working or not useful — or in some cases, it was just reinventing the ExceptT or ReaderT monad transformers.</p>
</blockquote>
<p>But also:</p>
<blockquote>
<p>... I learned how to bundle the template as part of the binary by inlining/embedding it using the <code>file-embed</code> package—all of this thanks to ChatGPT.</p>
</blockquote>
<blockquote>
<p>Asked ChatGPT for a good web scraping library in Haskell. It suggested <code>tagsoup</code> and <code>html-conduit</code> (for fetching the source). Took a look at the examples and docs... seemed a little hard to grasp. Asked ChatGPT for a simpler alternative, and it suggested <code>scalpel</code>. Liked it, and decided to use it.</p>
</blockquote>
<p>Claude had not yet come up as a significant competitor. Today, I don't use ChatGPT almost ever.</p>
<p>--</p>
<h6 id="iv." tabindex="-1"><a class="header-anchor" href="#iv.">IV.</a></h6>
<p>For a very long time — ie, over a year — <code>rdigest</code> remained a CLI-only tool. The only way to add feeds, manage them, produce a daily digest, and so on was to use the tool in a terminal.</p>
<p>But right there on my <a href="https://notes.druchan.com/haskell-journal-1#day-1">day 1 journal entry</a>, I had wanted to also make <code>rdigest</code> spin up a local server so that the feeds could be managed and daily digests could be viewed on a browser.</p>
<p>Life got in the way. I would occasionally push an update or two. I even built a now-defunct feature that sent the daily digest links via Telegram. But the server feature never happened.</p>
<p>I finally managed to find some motivation to build out this feature in the last week. What's special about this is the stack: the heavy-lifting backend, server and CLI are all in <a href="https://www.haskell.org/">Haskell</a>, a pure functional language, and the frontend application that renders a near-brutalist, minimal web interface is written in <a href="https://elm-lang.org/">Elm</a>, a pure functional language inspired by Haskell. There was a brief moment where I considered <a href="https://htmx.org/">htmx</a>, but chose Elm eventually.</p>
<p>The local server feature is not something I use every day. I have <a href="https://github.com/chandru89new/rdigest-data/blob/main/.github/workflows/refresh.yml">a different setup</a> to make <a href="https://chandru89new.github.io/rdigest-data/">the daily digests available &quot;on the cloud&quot;</a> so I can view them no matter where I am, even if I don't have my laptop. In retrospect, maybe this was the friction that kept me from building the local-server feature; I didnt really need it.</p>
<p>But, like my other project <a href="https://vaak.druchan.com/">vāk</a> where I keep wobbling between &quot;make this usable for everyone&quot; and &quot;just build things for myself&quot;, the thrust for <code>rdigest</code>'s local-server feature comes from wanting to make this tool easier to use for others as well. You know, just in case. The odds of someone using it are lower than the odds of a comet striking our planet in the next fifty years. But just in case.</p>
<p>--</p>
<h6 id="v." tabindex="-1"><a class="header-anchor" href="#v.">V.</a></h6>
<p>Work on <code>rdigest</code> happens sporadically. The <a href="https://github.com/chandru89new/rdigest/commits/main">commit history</a> says I worked on it for a few concerted days in Jan 2025, then March 2025, then a big sabbatical till November 2025 and then now in March 2026. Big periods of inactivity, small chunks of moderately intense activity. Basically, the tale of every other side-project that gets used routinely.</p>
<p>This pattern repeats itself in <code>vāk</code> too, and then also on my toy npx-powered game <a href="https://github.com/chandru89new/lvnshtn/"><code>wordladder</code></a>.</p>
<p>It's worth talking about because going back to these projects after a long hiatus does not involve broken builds or security conflagration or fuzzy/messy recollection of the modules/functions... you know, the kind of things you'd expect in projects built in weak languages unfortunately powering the world.</p>
<p>Instead, there's clarity, assurance, and guarantee. I attribute most of this to the semantics of the languages. <code>vāk</code> and <code>wordladder</code> use PureScript (a Haskell-inspired language targeting Node/JS environments). <code>rdigest</code> uses Haskell and Elm. Changes and even massive refactors are not scary.</p>
<p>--</p>
<p>So yeah. 500 days of <code>rdigest</code>.</p>
<p>I know. All you've been thinking of is, &quot;the project needs a better name.&quot;</p>
]]></description>
<pubDate>Sat, 07 Mar 2026 12:00:00 +0000</pubDate>
</item>
  </channel>
</rss>