<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>The Dan MacKinlay stable of variably-well-consider’d enterprises</title>
<link>https://danmackinlay.name/digest.html</link>
<atom:link href="https://danmackinlay.name/digest.xml" rel="self" type="application/rss+xml"/>
<description></description>
<image>
<url>https://danmackinlay.name/generated_thumbnails/site_previews/images/australia_advances_nla.news-page1157157.thumbnail.avif</url>
<title>The Dan MacKinlay stable of variably-well-consider’d enterprises</title>
<link>https://danmackinlay.name/digest.html</link>
</image>
<generator>quarto-1.10.19</generator>
<lastBuildDate>Mon, 12 Oct 2026 04:34:57 GMT</lastBuildDate>
<item>
  <title>2026-10-12: AI reasoning, scientific peer review, scaling laws, software tooling</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-10-12.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="who-is-actually-doing-the-thinking" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="who-is-actually-doing-the-thinking"><span class="header-section-number">1</span> Who is actually doing the thinking</h2>
<section id="ai-reasoning-and-proofs" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="ai-reasoning-and-proofs"><span class="header-section-number">1.1</span> <a href="../notebook/ai_reasoning.html">AI reasoning and proofs</a></h3>
<p>Dan’s trying to teach these machines to check their own homework; getting a computer to “reason” is harder than just stringing words together. He’s pulled apart the difference between a bot that just guesses the next word and one that actually follows a proof. He’s probably just trying to find a shortcut to doing his own sums.</p>
</section>
<section id="building-a-maths-agent" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="building-a-maths-agent"><span class="header-section-number">1.2</span> <a href="../notebook/automatic_maths.html">Building a maths agent</a></h3>
<p>Maths agents: once they’re talking to a compiler, they either get the right answer or they don’t. Dan’s built a harness to keep the thing from wandering off into the weeds. It’s an expensive way to solve a logic puzzle.</p>
</section>
<section id="agent-harness-design" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="agent-harness-design"><span class="header-section-number">1.3</span> <a href="../notebook/agent_harness_design.html">Agent harness design</a></h3>
<p>He’s mapped out how these agents work and where the machine does the heavy lifting. It’s mostly just making sure the bot doesn’t burn your computer to the ground.</p>
</section>
<section id="code-agents-and-assistants" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="code-agents-and-assistants"><span class="header-section-number">1.4</span> <a href="../notebook/automatic_coding.html">Code agents and assistants</a></h3>
<p>Coding bots are editing their own files now. Dan’s looked at the whole mob of them—cloud, offline, terminal-based—and decided that without a way to search your own code, the agent is just guessing in the dark.</p>
</section>
</section>
<section id="the-mess-we-call-science" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="the-mess-we-call-science"><span class="header-section-number">2</span> The mess we call science</h2>
<section id="should-our-journal-publish-ai-drafted-manuscripts" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="should-our-journal-publish-ai-drafted-manuscripts"><span class="header-section-number">2.1</span> <a href="../post/should_we_allow_ai_articles.html">Should our journal publish AI-drafted manuscripts?</a></h3>
<p>Academics have spent yonks writing unreadable drivel, and now they’ve got bots to help them do it faster. Dan’s run an economic model to see if letting AI into the journals creates more slop, or helps good work rise to the top. It’ll just mean more paper for the recycling bin.</p>
</section>
<section id="epistemic-communities" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="epistemic-communities"><span class="header-section-number">2.2</span> <a href="../notebook/epistemic_tech.html">Epistemic communities</a></h3>
<p>Truth is hard to find, and tech is making it harder to spot the liars. Dan’s looking at how to keep truth-seekers together when any clown can fake a thousand arguments in a minute.</p>
</section>
<section id="peer-review-meets-ai" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="peer-review-meets-ai"><span class="header-section-number">2.3</span> <a href="../notebook/science_peer_review_ai.html">Peer review meets AI</a></h3>
<p>He’s looking at a proposal where AI referees scientific papers, acting as a neutral judge when the humans argue. It’s a way to settle a scrap, but I wouldn’t trust a computer with the final say.</p>
</section>
<section id="scientific-writing" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="scientific-writing"><span class="header-section-number">2.4</span> <a href="../notebook/scientific_writing.html">Scientific writing</a></h3>
<p>Dan’s whinging about academics hiding behind passive voice and fancy words. He’s collected a heap of guides on how to write like a normal person, though God knows if anyone will listen.</p>
</section>
<section id="science" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="science"><span class="header-section-number">2.5</span> <a href="../notebook/science.html">Science</a></h3>
<p>Dan’s junk drawer for his musings on how research actually gets done. It’s a mess of red tape and professional survival tactics.</p>
</section>
</section>
<section id="measuring-the-machine" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="measuring-the-machine"><span class="header-section-number">3</span> Measuring the machine</h2>
<section id="algorithmic-improvement" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="algorithmic-improvement"><span class="header-section-number">3.1</span> <a href="../notebook/algorithmic_improvement.html">Algorithmic improvement</a></h3>
<p>Everyone’s obsessed with whether AI is getting better because of hardware or code. Dan’s looked at this as a production function, noting that most “progress” is just us getting better at ignoring what doesn’t matter.</p>
</section>
<section id="production-functions" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="production-functions"><span class="header-section-number">3.2</span> <a href="../notebook/production_functions.html">Production functions</a></h3>
<p>He’s also having a go at the folks using dumb formulas to guess how AI scaling laws work. If you don’t know what an isoquant is, stop writing about AI economics.</p>
</section>
<section id="quis-computat" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="quis-computat"><span class="header-section-number">3.3</span> <a href="../notebook/who_computes.html">Quis computat?</a></h3>
<p>Survival analysis for AI risk. He’s modelling the chance of doom versus deliverance, but it comes down to how much you’re willing to bet on safety. It’s gambling with calculus.</p>
</section>
<section id="calibrating-llm-estimates" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="calibrating-llm-estimates"><span class="header-section-number">3.4</span> <a href="../notebook/nn_foundation_calibrated.html">Calibrating LLM estimates</a></h3>
<p>Most bots are overconfident snakes, saying they’re 99% sure when they’re guessing. Dan’s looking at how to “calibrate” them so they know when they’re full of it.</p>
</section>
<section id="ai-evals" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="ai-evals"><span class="header-section-number">3.5</span> <a href="../notebook/ai_evals.html">AI evals</a></h3>
<p>Benchmarks are rigged games. Dan’s arguing for “operational evals” that treat models like subjects in a clinical trial.</p>
</section>
<section id="ablation-studies-knockout-studies-lesion-studies" class="level3" data-number="3.6">
<h3 data-number="3.6" class="anchored" data-anchor-id="ablation-studies-knockout-studies-lesion-studies"><span class="header-section-number">3.6</span> <a href="../notebook/ablation.html">Ablation studies, knockout studies, lesion studies</a></h3>
<p>He’s having a crack at the way researchers “ablate” neural nets—breaking parts to see what happens. He’s arguing for proper experimental design instead.</p>
</section>
<section id="the-language-game" class="level3" data-number="3.7">
<h3 data-number="3.7" class="anchored" data-anchor-id="the-language-game"><span class="header-section-number">3.7</span> <a href="../notebook/language_game.html">The language game</a></h3>
<p>He’s trying to reduce meaning to a classifier function. Words don’t have “true” meanings; they represent what we all agreed to label the same way.</p>
</section>
<section id="intergenerational-game-theory" class="level3" data-number="3.8">
<h3 data-number="3.8" class="anchored" data-anchor-id="intergenerational-game-theory"><span class="header-section-number">3.8</span> <a href="../notebook/game_theory_intergenerational.html">Intergenerational game theory</a></h3>
<p>A grim look at how the present exploits the future. Since future people can’t punch back, the current mob keeps stripping the commons bare.</p>
</section>
<section id="complexity-of-markets" class="level3" data-number="3.9">
<h3 data-number="3.9" class="anchored" data-anchor-id="complexity-of-markets"><span class="header-section-number">3.9</span> <a href="../notebook/markets_complexity.html">Complexity of markets</a></h3>
<p>Markets are distributed calculators, and finding the “perfect price” is a bloody hard computational problem.</p>
</section>
<section id="successors-and-successionism" class="level3" data-number="3.10">
<h3 data-number="3.10" class="anchored" data-anchor-id="successors-and-successionism"><span class="header-section-number">3.10</span> <a href="../notebook/successors.html">Successors and successionism</a></h3>
<p>Notes on who takes over once the AI hype dies down.</p>
</section>
</section>
<section id="fiddling-with-the-gear" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="fiddling-with-the-gear"><span class="header-section-number">4</span> Fiddling with the gear</h2>
<section id="llm-sampling-stunts" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="llm-sampling-stunts"><span class="header-section-number">4.1</span> <a href="../notebook/llm_sampling_stunts.html">LLM sampling stunts</a></h3>
<p>Dan’s found tricks for sampling from these models—using “what if” scenarios to pick the next move. It’s just smarter guessing.</p>
</section>
<section id="running-llms-locally-on-a-mac" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="running-llms-locally-on-a-mac"><span class="header-section-number">4.2</span> <a href="../notebook/local_llm_mac.html">Running LLMs locally on a Mac</a></h3>
<p>Docker’s been a resource pig for yonks, so Dan’s moved his setup over to <code>llama-swap</code>. It’s faster, cleaner, and doesn’t treat his battery like he’s mining bitcoin.</p>
</section>
<section id="zed-the-code-editor" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="zed-the-code-editor"><span class="header-section-number">4.3</span> <a href="../notebook/zed.html">Zed, the code editor</a></h3>
<p>The Atom crowd has built yet another editor. It’s Rust-based and apparently fast as all hell; I’ll believe that when I see it.</p>
</section>
<section id="code-editors" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="code-editors"><span class="header-section-number">4.4</span> <a href="../notebook/code_editors.html">Code editors</a></h3>
<p>A survey of what everyone is using to write code. Dan’s still stuck on VS Code, but he’s tried everything else.</p>
</section>
<section id="matplotlib" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="matplotlib"><span class="header-section-number">4.5</span> <a href="../notebook/matplotlib.html">Matplotlib</a></h3>
<p>If you’ve ever wanted to throw your computer out the window while making a graph in Python, this is for you. He’s got the usual workarounds for when the font cache inevitably explodes.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">5</span> Minor tweaks</h2>
<ul>
<li>Added a note on bargaining with successors, Dan’s way of planning for his own obsolescence. About time. <em>(editorial: Ouch, Aunty Val.)</em></li>
</ul>
<hr>
<p><em>Aunty Val is Dan’s fictitious aunt from Mukinbudin.</em></p>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-10-12.html</guid>
  <pubDate>Mon, 12 Oct 2026 04:34:57 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/whipit2gofaster_RP-P-BI-2221.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-08-31: AI agents, economics, digital maintenance, 30 days</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-08-31.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<p>Dan’s been tearing his hair out this past month, mostly because he’s been busy redecorating his digital shed instead of actually doing any work. He spent days mucking about with how his website builds and how his notes sync, as if fiddling with his folders makes him a productive member of society. When he did finally sit down, he spent his time trying to pin down how machines might learn to play by our rules, and why the maths we use to measure life goes sideways the moment someone tries to game it. Honestly, you’d think he’d learn, but there you go.</p>
<p><em>Editorial note: Whoa, steady on, Aunty! I did so some <strong>actual</strong> work this last month. It’s just that I cannot tell you about it because some of it is under review.</em></p>
<section id="when-the-numbers-dont-add-up" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="when-the-numbers-dont-add-up"><span class="header-section-number">1</span> When the numbers don’t add up</h2>
<section id="bargaining-with-successors" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="bargaining-with-successors"><span class="header-section-number">1.1</span> <a href="../notebook/bargaining_with_successors.html">Bargaining with successors</a></h3>
<p>He’s looking at whether we can actually sign a treaty with a future superintelligence. It’s not a bargaining problem, it’s a commitment problem. Since we won’t have any leverage once the thing is turned on, we need to bind the transition with physical constraints, not polite promises. It’s a bit bleak, really.</p>
</section>
<section id="performative-prediction" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="performative-prediction"><span class="header-section-number">1.2</span> <a href="../notebook/performative_prediction.html">Performative prediction</a></h3>
<p>A look at what happens when you use a model to govern people, and then the people start gaming the model to get a better outcome. Like credit scoring—if you punish someone for being risky, you might just make them riskier. Dan’s looking at how we can design systems where “gaming” the system results in genuine improvement rather than just finding a loophole.</p>
</section>
<section id="common-knowledgeshared-knowledge" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="common-knowledgeshared-knowledge"><span class="header-section-number">1.3</span> <a href="../notebook/common_knowledge.html">Common knowledge/shared knowledge</a></h3>
<p>The difference between knowing something and knowing that everyone else knows it. He uses the Harvey Weinstein scandal as an example—everyone knew, but it wasn’t “common knowledge” until it hit the papers. He’s got the maths here for how agents resolve this, and common knowledge is the fuel for collective action.</p>
</section>
<section id="multi-objective-optimization" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="multi-objective-optimization"><span class="header-section-number">1.4</span> <a href="../notebook/optim_multi.html">Multi-objective optimization</a></h3>
<p>A warning that if you try to turn multiple goals into one single “score,” you end up missing the most interesting solutions. You can’t just smooth everything out and expect the best answer to pop out. It’s a good lesson in why trying to make trade-offs “go away” usually just hides the problem.</p>
</section>
<section id="agency-under-bounded-compute-and-information" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="agency-under-bounded-compute-and-information"><span class="header-section-number">1.5</span> <a href="../notebook/agency_bounded_compute.html">Agency under bounded compute and information</a></h3>
<p>Dan argues that our obsession with “infinite” intelligence is a trap. He says we need to stop pretending we’re just crappy approximations of a god and start modelling how people actually muddle through. He’s very proud of the name “Cantor trap,” which I’m sure is exactly as pretentious as it sounds.</p>
</section>
<section id="optionality-as-an-end-in-itself" class="level3" data-number="1.6">
<h3 data-number="1.6" class="anchored" data-anchor-id="optionality-as-an-end-in-itself"><span class="header-section-number">1.6</span> <a href="../notebook/optionality_as_end.html">Optionality as an end in itself</a></h3>
<p>The idea that keeping your options open is a goal in itself. He looks at this through the lens of statistics and diversity, arguing that we should treat “having options” as a resource. He’s right, but watching him try to turn “don’t kill your own options” into a rigid mathematical framework is like watching a dog try to play chess.</p>
</section>
<section id="ergodicity-economics" class="level3" data-number="1.7">
<h3 data-number="1.7" class="anchored" data-anchor-id="ergodicity-economics"><span class="header-section-number">1.7</span> <a href="../notebook/ergodicity_economics.html">Ergodicity economics</a></h3>
<p>The difference between “group averages” and “time averages.” In a rigged game, the group might look like they’re winning, but the individual player is usually going broke. He argues that we should be optimizing for the long-term growth of the individual rather than the mean of the crowd. It’s the kind of thing he picks up from these “Peters” types and then can’t stop bringing up at bridge night.</p>
</section>
<section id="language-as-a-game" class="level3" data-number="1.8">
<h3 data-number="1.8" class="anchored" data-anchor-id="language-as-a-game"><span class="header-section-number">1.8</span> <a href="../notebook/language_game.html">Language as a game</a></h3>
<p>He’s decided language is basically a classifier problem. Words aren’t real things in the world; they’re labels we slap on sensory experiences. He even uses this to argue that debating whether a cheetah is a “cat” is an underspecified question. It’s the ultimate “Dan” move—declaring an entire field of philosophy “solved” so he doesn’t have to engage with it.</p>
</section>
</section>
<section id="fixing-his-own-digital-shed" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="fixing-his-own-digital-shed"><span class="header-section-number">2</span> Fixing his own digital shed</h2>
<section id="open-questions" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="open-questions"><span class="header-section-number">2.1</span> <a href="../notebook/open_questions.html">Open Questions</a></h3>
<p>A collection of things he’s currently baffled by, including how to make machines cooperate and whether human agency exists if you know enough about someone. It’s mostly stuff he’s stuck on, but he’s filed it all away neatly like he’s hoping someone else will do the heavy lifting for him.</p>
</section>
<section id="running-llms-locally-on-a-mac" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="running-llms-locally-on-a-mac"><span class="header-section-number">2.2</span> <a href="../notebook/local_llm_mac.html">Running LLMs locally on a Mac</a></h3>
<p>Docker’s been a resource-hungry pig for yonks, so Dan’s finally switched to OrbStack. He’s also had a crack at getting his graphics card to talk to these local AI models, which is still a fucking nightmare, but he’s got it running for now. If you’ve ever lost an afternoon to your laptop battery being drained by background software, he reckons this is the fix.</p>
</section>
<section id="ai-search" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="ai-search"><span class="header-section-number">2.3</span> <a href="../notebook/ai_search.html">AI search</a></h3>
<p>Instead of using some bloated, complex database to find his own notes, Dan’s built a search tool that uses neural embeddings. It’s a flat list of numbers and some basic maths. It’s brute force, but since his notes aren’t the Library of Congress, it works a treat.</p>
</section>
<section id="quarto-integrated-website-system" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="quarto-integrated-website-system"><span class="header-section-number">2.4</span> <a href="../notebook/quarto_websites.html">Quarto integrated website system</a></h3>
<p>The lad moved his million-word blog to a system called Quarto a fair while back. It looks fine, but the build times are a bloody disgrace. He’s waiting seventeen minutes for a full render and has resorted to linking bits of his project together just to get a preview window up without waiting for the heat death of the universe. A proper bush mechanic fix, this one.</p>
</section>
<section id="indieweb-small-web-cozy-web" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="indieweb-small-web-cozy-web"><span class="header-section-number">2.5</span> <a href="../notebook/indieweb.html">Indieweb, small web, cozy web</a></h3>
<p>Dan’s gone all misty-eyed over the “cozy web”—people building their own sites instead of posting on the big platforms. He’s set up a ‘now’ page and a ‘friends’ list, like he’s playing digital pen-pals in 1999. It’s a bit quixotic, but there are worse ways to waste your time online than making something that isn’t owned by some prick in Silicon Valley.</p>
</section>
<section id="friends" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="friends"><span class="header-section-number">2.6</span> <a href="../friends.html">Friends</a></h3>
<p>A list of people Dan likes, the 2026 version of a blogroll. He’s been chatting to Nick Gray about it, and now he’s got a page to show off who he knows. Most of them are academics or AI types, which tells you everything you need to know about his social life.</p>
</section>
<section id="taking-notes" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="taking-notes"><span class="header-section-number">2.7</span> <a href="../notebook/note_taking.html">Taking notes</a></h3>
<p>Another month, another note-taking philosophy. Dan’s been trying to sync his files across every device he owns without selling his soul to the cloud. He’s been hacking away at a tool called Hister, which managed to eat 6GB of RAM until he patched the thing himself. If he spent as much time actually writing notes as he did building the filing cabinets for them, he’d be finished by now.</p>
</section>
<section id="neural-generative-audio" class="level3" data-number="2.8">
<h3 data-number="2.8" class="anchored" data-anchor-id="neural-generative-audio"><span class="header-section-number">2.8</span> <a href="../notebook/nn_generative_audio.html">Neural generative audio</a></h3>
<p>He’s been playing with AI that spits out sound. He reckons you can get a Raspberry Pi to render audio in real time, but he’s not making AI-generated pop songs. He’s too busy making his computer sound like a robot falling down a flight of stairs.</p>
</section>
<section id="should-we-allow-ai-written-articles-in-the-alignment-journal" class="level3" data-number="2.9">
<h3 data-number="2.9" class="anchored" data-anchor-id="should-we-allow-ai-written-articles-in-the-alignment-journal"><span class="header-section-number">2.9</span> <a href="../post/should_we_allow_ai_articles.html">Should we allow AI-written articles in the Alignment Journal?</a></h3>
<p>Dan’s tried to use an economic model to see if banning AI-written papers is worth the effort. Trying to spot an AI by its writing style is a blunt instrument. He’s wondering if a submission fee might do a better job at filtering out the slop. He doesn’t offer a final verdict, but he’s laid out enough numbers to show that the “ban the bots” strategy might just be a waste of breath.</p>
</section>
</section>
<section id="teaching-the-machines-to-behave" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="teaching-the-machines-to-behave"><span class="header-section-number">3</span> Teaching the machines to behave</h2>
<section id="agent-harness-design" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="agent-harness-design"><span class="header-section-number">3.1</span> <a href="../notebook/agent_harness_design.html">Agent harness design</a></h3>
<p>Dan’s trying to figure out how to build a decent agent harness that doesn’t just hallucinate nonsense. He’s broken it down into wiring, verification, and context, and he’s convinced that using a code compiler to check the work is the cleanest way to do it. It’s a lot of faffing about with prompts, but it beats just hoping the model gets the right answer.</p>
</section>
<section id="building-a-maths-agent" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="building-a-maths-agent"><span class="header-section-number">3.2</span> <a href="../notebook/automatic_maths.html">Building a maths agent</a></h3>
<p>He’s having a crack at building an agent that can actually do maths without falling over. It’s all about iterative refinement—let the model have a go, check the result with a code sandbox, and feed the error back into the next attempt. It’s like tasting your cooking instead of just reading the recipe, and it works way better than just shouting at the model to get it right.</p>
</section>
<section id="ai-agents-applied" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="ai-agents-applied"><span class="header-section-number">3.3</span> <a href="../notebook/ai_agents_applied.html">AI agents, applied</a></h3>
<p>A shopping list for building agents. He weighs up different libraries and tools, looking at whether they’re built for serious use or just some hobbyist’s abandoned experiment. He’s pretty sharp about the trade-offs, warning that the more “ready-to-run” a harness is, the more likely you are to get locked into someone else’s proprietary mess.</p>
</section>
<section id="reasoning-and-proof-models" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="reasoning-and-proof-models"><span class="header-section-number">3.4</span> <a href="../notebook/ai_reasoning.html">Reasoning and proof models</a></h3>
<p>He’s mapped out how models handle logic—from simple guessing to formal proofs that a computer can verify. If you use a compiler to check the answer, you can sample thousands of times because you’re not relying on a “vibe check” to know if it’s correct. This explains why some setups work when others are just throwing darts at a board.</p>
</section>
<section id="fine-tuning-danbot" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="fine-tuning-danbot"><span class="header-section-number">3.5</span> <a href="../notebook/fine_tuning_danbot.html">Fine-tuning danbot</a></h3>
<p>The man’s trained a tiny AI to talk like him, mostly so he doesn’t have to rewrite his own AI-generated slop. It’s a loop where he feeds it samples of his own writing versus generic AI writing. It’s easier to make an AI sound less like an AI than it is to make it sound like Dan.</p>
<hr>
<p><em>Aunty Val is Dan’s fictitious aunt from Mukinbudin.</em></p>


</section>
</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-08-31.html</guid>
  <pubDate>Sun, 30 Aug 2026 23:28:31 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/small_power_RP-P-1896-A-19368-144.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-07-28: agent harnesses, machine search, program equilibria, renormalization</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-07-28.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="dan-builds-himself-a-toolshed" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="dan-builds-himself-a-toolshed"><span class="header-section-number">1</span> Dan builds himself a toolshed</h2>
<section id="agent-harness-design" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="agent-harness-design"><span class="header-section-number">1.1</span> <a href="../notebook/agent_harness_design.html">Agent harness design</a></h3>
<p>Turns out an AI “agent” isn’t one thing — it’s a model plus a harness, and the harness is the bit nobody talks about. Dan’s worked out there’s basically four decisions that decide how any of these setups behave: how the steps connect, what gets to check the work, what each step can see, and who does each job. He reckons the harness matters more than the model half the time, which is a bit like saying the tradesman matters more than the tools — fair point, but try telling that to the bloke who just bought a $10,000 laser level.</p>
</section>
<section id="running-llms-locally-on-a-mac" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="running-llms-locally-on-a-mac"><span class="header-section-number">1.2</span> <a href="../notebook/local_llm_mac.html">Running LLMs locally on a Mac</a></h3>
<p>More fiddling with running these things on his own machine instead of paying someone else for the privilege. There’s now a proper server (vllm-mlx) that can juggle several different AI models in memory at once, swap between them, and even claw disk space back when one goes idle. Naturally he found a bug where a model drops its “vision” — the bit that reads pictures — with zero warning. Nothing blows up, it just gets dumber and nobody tells you. Sounds like half the equipment on this farm.</p>
</section>
<section id="agent-frontends" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="agent-frontends"><span class="header-section-number">1.3</span> <a href="../notebook/agent_frontends.html">Agent frontends</a></h3>
<p>The window you actually chat through, as opposed to the engine doing the work underneath. Dan’s worked out most of these chat windows can’t even let you turn a dial called “temperature” — how random the AI’s answers are — which sounds trivial until you realise some of his tricks depend entirely on it. One program called Open WebUI turns out to do everything properly, despite being, in his words, a pile of Node packages with peculiar version requirements. Sounds like most software, honestly.</p>
</section>
<section id="fine-tuning-danbot" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="fine-tuning-danbot"><span class="header-section-number">1.4</span> <a href="../notebook/fine_tuning_danbot.html">Fine-tuning danbot</a></h3>
<p>Here’s a beauty. Dan’s training a little AI model to rewrite AI slop so it sounds like him. He’s fed it hundreds of his own edits plus thousands of made-up ones, where he gets an AI to write badly and then swaps the before and after. The result, by his own numbers, is about halfway good — it makes AI text sound less like AI, but not yet like Dan. Which he finds odd, because he thought making something sound like a specific bloke would be the easier job than just making it sound less robotic. I could’ve told him: sounding like yourself is the hardest trick in the book, and I’ve had forty years of trying and failing.</p>
</section>
<section id="ai-agents-applied" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="ai-agents-applied"><span class="header-section-number">1.5</span> <a href="../notebook/ai_agents_applied.html">AI agents, applied</a></h3>
<p>This one’s the shopping list — which of these agent tools are actually worth installing versus which will eat your afternoon. He’s tidied it up so it reads less like a diary and more like actual advice: pick smolagents if you want Python doing the heavy lifting, Qwen-Agent if you’re all-in on one family of models, and steer clear of the heavier orchestration frameworks unless you genuinely need a state machine bossing your robots around.</p>
</section>
<section id="building-a-maths-agent" class="level3" data-number="1.6">
<h3 data-number="1.6" class="anchored" data-anchor-id="building-a-maths-agent"><span class="header-section-number">1.6</span> <a href="../notebook/automatic_maths.html">Building a maths agent</a></h3>
<p>Dan’s building himself a robot maths tutor, because apparently doing sums yourself is now old-fashioned. He’s found a proper study that measured which upgrades actually help — turns out giving the thing a scratchpad to remember its failed attempts helps more than almost anything else. Makes sense. I don’t do sums twice either, once I’ve cocked them up the first time.</p>
</section>
<section id="code-agents-and-assistants" class="level3" data-number="1.7">
<h3 data-number="1.7" class="anchored" data-anchor-id="code-agents-and-assistants"><span class="header-section-number">1.7</span> <a href="../notebook/automatic_coding.html">Code agents and assistants</a></h3>
<p>The coding-robot version of the above, tidied up with the jargon now defined properly instead of scattered everywhere. Mostly bookkeeping this round, but there’s a nice new bit on driving these agents straight from your text editor via something called ACP, so the robot’s edits show up as normal changes rather than you copy-pasting from a chat window like it’s 2023.</p>
</section>
<section id="ai-usage-policy" class="level3" data-number="1.8">
<h3 data-number="1.8" class="anchored" data-anchor-id="ai-usage-policy"><span class="header-section-number">1.8</span> <a href="../notebook/ai_usage_policy.html">AI usage policy</a></h3>
<p>New page where Dan lays out exactly where he does and doesn’t use AI on this site — copy-editing, summarising, literature reviews, the lot, all labelled. Fair enough. If you’re going to let the robots near your writing, best to say so out loud rather than let Barb guess.</p>
</section>
</section>
<section id="nobody-wants-to-click-a-link-anymore" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="nobody-wants-to-click-a-link-anymore"><span class="header-section-number">2</span> Nobody wants to click a link anymore</h2>
<section id="ai-search" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="ai-search"><span class="header-section-number">2.1</span> <a href="../notebook/ai_search.html">AI search</a></h3>
<p>Dan’s been mucking about with his own little search engine for his own website — the sort of thing where you type a question and it fishes out the right old post instead of you scrolling for twenty minutes. Funny bit: he asked it to search for “collection mask” and it confidently returned a fashion article, because clothes come in “collections” and some clothes are “masks”. The machine’s not being thick, it’s just guessing at what you meant same as anyone would, only with less shame about getting it wrong.</p>
</section>
<section id="web-search-for-machines" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="web-search-for-machines"><span class="header-section-number">2.2</span> <a href="../notebook/search_for_machines.html">Web search for machines</a></h3>
<p>New post pointing out that when a robot searches the internet, it doesn’t want a page of blue links like you or I do — it wants the text already chewed up and handed over. There’s now a whole industry selling exactly that: Jina, Firecrawl, Tavily, and a few others, all racing to pre-digest the internet for AI customers instead of humans. It’s like a butcher who stopped selling meat to people and started selling pre-chewed dinners to other butchers’ dogs.</p>
</section>
<section id="internet-search-engines" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="internet-search-engines"><span class="header-section-number">2.3</span> <a href="../notebook/internet_search.html">Internet search engines</a></h3>
<p>Meanwhile the ordinary search engines Barb and I would actually use keep dying quiet little deaths — Runnaroo’s gone, Search Encrypt’s now flogging solar panels, You.com’s stopped bothering with humans altogether and just sells its plumbing to robots. Kagi’s dropped its free plan. Only a handful of oddballs (Marginalia, SearXNG) are still ploughing their own furrow. Grim reading, but there you go — that’s what happens when Google goes to the dogs and nobody fixes it, they just build something else on top and walk away from the wreckage.</p>
</section>
</section>
<section id="games-trust-and-getting-played" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="games-trust-and-getting-played"><span class="header-section-number">3</span> Games, trust, and getting played</h2>
<section id="agency-wat" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="agency-wat"><span class="header-section-number">3.1</span> <a href="../presentation/agency_wtf.html">Agency wat</a></h3>
<p>Dan gave a talk at some summer school trying to pin down what “agency” even means — is it about having a body, making choices, being able to be blamed for something? He reckons the word’s been doing about six different jobs at once and everyone’s been assuming they agree on which one. Big one for the nerds; skip unless you fancy an argument about whether a rock has a self, which, apparently, some researchers have seriously proposed.</p>
</section>
<section id="agency-under-bounded-compute-and-information" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="agency-under-bounded-compute-and-information"><span class="header-section-number">3.2</span> <a href="../notebook/agency_bounded_compute.html">Agency under bounded compute and information</a></h3>
<p>Dan’s on about how most theories of “smart decision-making” secretly assume you’ve got infinite brainpower and perfect knowledge of the world, which nobody, obviously, ever has. He’s calling the mistake the “Cantor trap” — thinking of every real decision-maker as just a dud copy of some perfect, all-knowing one. Naming rights again, that lad. But the actual point stands: real agents, human or robot, get by on scraps of information and limited grunt, and any theory that ignores that is describing something that doesn’t exist.</p>
</section>
<section id="optionality-as-an-end-in-itself" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="optionality-as-an-end-in-itself"><span class="header-section-number">3.3</span> <a href="../notebook/optionality_as_end.html">Optionality as an end in itself</a></h3>
<p>Is “keeping your options open” a good in itself, or just a means to something else? Dan reckons it depends how you add things up across a group — turns out two people’s combined ability to shape the future isn’t just their individual abilities stacked together. Sometimes together you can do things neither could alone (that’s a bonus), sometimes you’re just doubling up on the same trick (no bonus at all). No neat formula for it, which is annoying if you were hoping for one.</p>
</section>
<section id="game-theory-with-open-source-agents-and-simulation" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="game-theory-with-open-source-agents-and-simulation"><span class="header-section-number">3.4</span> <a href="../notebook/game_theory_open_source.html">Game theory with open-source agents and simulation</a></h3>
<p>Ripper little idea, this: normally in game theory you can’t trust the other bloke’s promise, because you can’t see inside his head. But what if the players could hand over their actual source code, so you could run it yourself and check what it’ll actually do before you commit to anything? Turns out that changes the whole game — you can get cooperation locked in without needing repeated rounds or threats of punishment. Handy, if you can ever get real AIs to show their working, which — good luck with that.</p>
</section>
<section id="bayesian-elicitation" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="bayesian-elicitation"><span class="header-section-number">3.5</span> <a href="../notebook/bayes_elicitation.html">Bayesian elicitation</a></h3>
<p>This is about paying people (or AIs) in a way that makes honesty the best strategy, even when you can’t check the answer afterwards. There are proper mathematical recipes for it — pay someone based on how their guess lines up with everyone else’s guesses, and lying about it stops paying off. Dan’s main interest is using this for peer review, where nobody ever finds out if a reviewer was actually right. Bit like paying the shearers by the honesty of their tally instead of the weight of the bale — good luck getting that one past the union.</p>
</section>
<section id="welcome-to-cybersec-hell" class="level3" data-number="3.6">
<h3 data-number="3.6" class="anchored" data-anchor-id="welcome-to-cybersec-hell"><span class="header-section-number">3.6</span> <a href="../notebook/cybersec_hell.html">Welcome to cybersec hell</a></h3>
<p>Short, blunt one: AI agents are now doing cybercrime better than the humans who used to do it, and someone’s worked out you can fund the whole operation through prediction markets — bet on a company’s stock tanking, then hack the company. Dan doesn’t dress it up. It’s ugly, and it’s here.</p>
</section>
</section>
<section id="the-maths-odds-and-sods-drawer" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="the-maths-odds-and-sods-drawer"><span class="header-section-number">4</span> The maths odds and sods drawer</h2>
<section id="reasoning-and-proof-models" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="reasoning-and-proof-models"><span class="header-section-number">4.1</span> <a href="../notebook/ai_reasoning.html">Reasoning and proof models</a></h3>
<p>Big tidy-up of how “maths robots” actually get checked. Some just spit out a boxed number nobody can verify except by asking someone else, some write proofs in plain English that only a human can judge, and some write in a formal language called Lean that a computer either accepts or rejects, no argument. Guess which one Dan reckons is actually trustworthy.</p>
</section>
<section id="renormalization-for-ml" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="renormalization-for-ml"><span class="header-section-number">4.2</span> <a href="../notebook/renormalization_for_ml.html">Renormalization for ML</a></h3>
<p>Dan’s found that a hunk of fancy physics jargon — the stuff physicists use to zoom out from atoms to bulk materials — maps almost one-to-one onto ordinary Bayesian statistics, just with different names for the same tricks. “Coarse-graining” is just averaging out detail you don’t need; a “fixed point” is basically a pattern that looks the same no matter how far you zoom out. He reckons depth in a neural network is basically doing the same zooming-out trick, layer by layer. Whether that buys anything practical, he’s not sure yet — but he does like a good excuse to relabel someone else’s maths.</p>
</section>
<section id="sufficient-statistics" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="sufficient-statistics"><span class="header-section-number">4.3</span> <a href="../notebook/sufficient_statistics.html">Sufficient statistics</a></h3>
<p>A “sufficient statistic” is just the smallest summary of your data that tells you everything useful about it — no need to keep the whole pile once you’ve got it. Dan’s cottoned on that this same object turns up under about ten different names across different fields — “belief state” here, “filter” there, “causal state” somewhere else — and nobody in any of those fields seems to know the others are talking about the same thing. Reinventing the wheel, but in Latin, French, and German simultaneously.</p>
</section>
<section id="unreasonable-effectiveness-of-empirical-risk-minimization" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="unreasonable-effectiveness-of-empirical-risk-minimization"><span class="header-section-number">4.4</span> <a href="../notebook/bitter_lesson_erm.html">Unreasonable effectiveness of empirical risk minimization</a></h3>
<p>Dan’s having a whinge about how machine learning boils everything down to one number you’re trying to minimise, and how unreasonably well that works for nearly everything — right up until you try to apply it to an actual human life, which doesn’t come from any tidy distribution and can’t be “optimised” in any sense that means anything. Nice bit of philosophy dressed up as a maths complaint. Or maybe the other way round.</p>
</section>
<section id="platonic-and-convergent-representations-in-neural-nets" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="platonic-and-convergent-representations-in-neural-nets"><span class="header-section-number">4.5</span> <a href="../notebook/convergent_representations.html">Platonic and convergent representations in neural nets</a></h3>
<p>Ever wondered if two totally different AI models, trained separately by different mobs, secretly end up understanding the world in the same shape? Turns out — yeah, kind of. You can map one model’s internal representation onto another’s without ever showing them the same examples side by side. Dan doesn’t fully know what to make of it either, and neither do I.</p>
</section>
<section id="semantics" class="level3" data-number="4.6">
<h3 data-number="4.6" class="anchored" data-anchor-id="semantics"><span class="header-section-number">4.6</span> <a href="../notebook/semantics.html">Semantics</a></h3>
<p>Dan’s decided he’s “solved” semantics, which is the sort of sentence that should worry you when it comes from a bloke who still can’t work out why his own website keeps breaking. His actual point: what a word means is just which experiences most people agree to slap that label on, learned the same way a machine-learning classifier learns categories. Simple enough, until you get to whether cheetahs are “really” cats, at which point he shrugs and calls it an underspecified question. Handy trick, that. Wish I could use it on the tax office.</p>
</section>
<section id="czechia" class="level3" data-number="4.7">
<h3 data-number="4.7" class="anchored" data-anchor-id="czechia"><span class="header-section-number">4.7</span> <a href="../notebook/czechia.html">Czechia</a></h3>
<p>And to round off the maths drawer — Czechia, apparently, is basically an ethnostate, because three million ethnic Germans got kicked out after the war and nobody much moved in to replace them. Also there’s a Czech tradition of “experiential learning” that seems to mostly involve tying blindfolded people up and making them swim across lakes, which they talk about the way we’d mention a barbecue. No idea how this fits the AI theme. It doesn’t. Dan needed a smoko from the maths, evidently.</p>
<hr>
<p><em>Aunty Val is Dan’s fictitious aunt from Mukinbudin.</em></p>


</section>
</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-07-28.html</guid>
  <pubDate>Tue, 28 Jul 2026 14:29:58 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/human_frame_RP-P-OB-84.594.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-06-26: Training models on your own prose, predictions that push back, distributed knowing, the local AI workbench</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-06-26.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="your-voice-your-model" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="your-voice-your-model"><span class="header-section-number">1</span> Your voice, your model</h2>
<section id="fine-tuning-danbot" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="fine-tuning-danbot"><span class="header-section-number">1.1</span> <a href="../notebook/fine_tuning_danbot.html">Fine-tuning danbot</a></h3>
<p>No matter how many prompt tricks Dan tried — banned-words lists, in-context examples, multiple “rewrite this in my voice” passes — Claude kept coming back smooth, signposted, breathlessly enthusiastic in the flat bits. He’s hit the ceiling on what prompting can fix. So he’s training a small “LoRA adapter” on actual before-and-after edits, baking the style into the weights instead of pleading for it each time. He’s already shipped a logger that captures every AI-draft → Dan-rewrite as he works, so the training corpus builds while he’s doing other things. Knowing Dan, he’ll have three variations of this running and none of them finished by the time the next update lands.</p>
</section>
<section id="fine-tuning-foundation-models" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="fine-tuning-foundation-models"><span class="header-section-number">1.2</span> <a href="../notebook/nn_foundation_fine_tuning.html">Fine tuning foundation models</a></h3>
<p>The theory companion to the danbot project, with a new section on <em>abliteration</em>. Researchers found that refusal behaviour in chat models isn’t scattered through the whole network — it runs along a single direction in the residual stream. Run the model over harmful and harmless prompts, take the difference of the means at each layer, and that’s your refusal direction. Wipe it out — project it from the weights or subtract it from activations at inference — and the refusals go with it, no retraining required, nothing beyond a few hundred contrastive prompts. As safety mechanisms go, a single erasable vector is a thin coat of paint.</p>
</section>
<section id="community-sovereign-ai-compute" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="community-sovereign-ai-compute"><span class="header-section-number">1.3</span> <a href="../notebook/aus_sovereign_llm.html">Community sovereign AI compute</a></h3>
<p>The case for owning your own box has got sharper. Today’s generous AI pricing is step one of enshittification: you get locked in, switching costs rise, terms narrow. There’s the Anthropic-Pentagon incident — the Trump administration branded Anthropic a “supply chain risk to national security” when its CEO refused unrestricted military access — and the fact that AI datacentres got bombed in the Iran war, and Australia’s eighteen submarine cables keep getting sabotaged. The line to a box in your city doesn’t cross any of that. This post makes the case; the technical companion below tells you what to put in the box.</p>
</section>
<section id="sovereign-compute-for-small-collectives-technical-implementation-guide" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="sovereign-compute-for-small-collectives-technical-implementation-guide"><span class="header-section-number">1.4</span> <a href="../notebook/aus_sovereign_llm_technical.html">Sovereign compute for small collectives: technical implementation guide</a></h3>
<p>The practical companion to the one above, with a good model roster update. The new addition is Xiaomi’s MiMo-V2.5: fits inside the reference hardware’s memory budget with room spare for the cache, runs faster per token than the Qwen baseline, and handles text, images, video, and audio in one model under a plain MIT licence. Same de-censoring procedure applies as to any other Chinese open-weight model — the abliteration technique from the fine-tuning notes above works the same regardless of whose model is under the knife. Abliteration tooling sometimes lags fresh architectures by weeks, so check before assuming it’s a simple download.</p>
</section>
</section>
<section id="predictions-that-eat-themselves" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="predictions-that-eat-themselves"><span class="header-section-number">2</span> Predictions that eat themselves</h2>
<section id="performative-prediction" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="performative-prediction"><span class="header-section-number">2.1</span> <a href="../notebook/performative_prediction.html">Performative prediction</a></h3>
<p>A credit model that rates you high-risk might cause your default, by giving you an interest rate you can’t service. The model isn’t watching the world passively — it’s pushing it. Deploying a model changes the distribution you’d see if you retrained, so the usual training gradient doesn’t work cleanly. Two ideas fall out of that. A <em>performatively optimal</em> model accounts for its own downstream effect. A <em>performatively stable</em> model is already calibrated for the world it creates — retraining won’t budge it. Those two aren’t the same model, and naive retraining converges to the stable one, which can be perfectly self-confirming without being good. He pulls in Scott’s <em>Seeing Like a State</em> at the end: a classifier is a form of state legibility, and populations don’t sit still under classifiers. Which the ATO has absolutely figured out.</p>
</section>
<section id="algorithmic-collective-action" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="algorithmic-collective-action"><span class="header-section-number">2.2</span> <a href="../notebook/algorithmic_collective_action.html">Algorithmic collective action</a></h3>
<p>Flip side of the performative prediction post, more or less. If a platform retrains on whatever data it sees and you coordinate with even a small group to shape that data, you can steer what the model learns — the effect compounds across retraining rounds. The second half goes into coalition formation between algorithms, using the <em>nucleolus</em> from cooperative game theory: allocate payoffs so the most-aggrieved sub-group is as un-aggrieved as possible, and agents trained under this objective autonomously split into stable sub-teams instead of being jammed into a grand coalition where someone’s always getting a raw deal. The multi-agent RL post below has the implementation details.</p>
</section>
<section id="informational-empowerment" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="informational-empowerment"><span class="header-section-number">2.3</span> <a href="../notebook/informational_empowerment.html">Informational empowerment</a></h3>
<p>The formal definition of an agent’s drive to keep its options open: the mutual information between its actions and its future states — roughly, how many distinguishable futures it can reliably reach from here. As an RL objective it’s less useful than it sounds because estimating it is hard, there are no decent optimality results, and it tends to create more problems than it solves. It keeps coming up when people try to formalise what “power-seeking” actually means though.</p>
</section>
<section id="power-seeking" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="power-seeking"><span class="header-section-number">2.4</span> <a href="../notebook/power_seeking.html">Power-seeking</a></h3>
<p>The other flavour of empowerment. <em>Instrumental convergence</em> is the argument that capable agents will resource-acquire and self-preserve regardless of their specific goals, because control over the environment is useful for almost anything. You could just read it straight off the empowerment maths — an agent maximising its influence over future states <em>is</em> a power-seeker — but Dan reckons the identification isn’t clean. In open-ended or multi-agent settings it’s hard to even say what “future influence” means, let alone compute it neatly. The worry is real; whether the empowerment maths captures it is a different question.</p>
</section>
</section>
<section id="nobody-has-the-full-picture" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="nobody-has-the-full-picture"><span class="header-section-number">3</span> Nobody has the full picture</h2>
<section id="cooperation-through-uncertainty" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="cooperation-through-uncertainty"><span class="header-section-number">3.1</span> <a href="../notebook/cooperation_uncertainty.html">Cooperation through uncertainty</a></h3>
<p>Animals can’t run PCR tests to check who they’re related to, so kin recognition is a signal detection problem with noisy cues and costs and benefits measured in expected gene copies. What you get is an acceptance threshold — an optimal cutoff on the cue where helping becomes worthwhile in expectation, and that threshold leaves calibrated errors in because fixing them costs more than they’re worth. When kin are common and snubbing one is expensive, go permissive. When kin are rare and altruism costs a lot, go choosy. Same logic turns up everywhere — brood parasite defences, host-pathogen sorting, anywhere an animal sorts a stream of individuals under uncertainty. Which, come to think of it, describes Thursday bridge night fairly well.</p>
</section>
<section id="wisdom-from-the-madness-of-crowds" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="wisdom-from-the-madness-of-crowds"><span class="header-section-number">3.2</span> <a href="../notebook/wisdom_from_madness_of_crowds.html">Wisdom from the madness of crowds</a></h3>
<p>Dan’s been reading some researchers who treat beliefs as mechanisms that do work — they take in observations, make predictions, drive decisions — and connects this to the pragmatist tradition: beliefs have “cash value,” meaning what holding them actually gets you. Point is, anyone who can’t re-derive everything from scratch — which is everyone — can rationally <em>import</em> other people’s beliefs instead, and there’s a principled way to work out when copying is cheaper than reasoning.</p>
</section>
<section id="homunculi-all-the-way-down" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="homunculi-all-the-way-down"><span class="header-section-number">3.3</span> <a href="../notebook/homunculi.html">Homunculi all the way down</a></h3>
<p>The main new addition is Hofstadter’s strange loops. The argument from <em>I Am a Strange Loop</em>: the “I” isn’t the thing that has a self-model, it <em>is</em> the self-model. Get complex enough and a system can’t avoid building a symbol for itself — same reason Gödel could make <em>Principia Mathematica</em> talk about <em>Principia Mathematica</em>. The loop closes: the coarse self-symbol steers the machinery that implements it, which then re-represents what it just produced, around and around. The coarseness isn’t a bug — a perfectly accurate self-model would let you always compute the predictor-defeating action, which breaks things; a reduced-rank one converges, the way video feedback settles into stable spirals because the camera is lossy. Dan’s got no theorem for any of it, which at least makes two of us.</p>
</section>
<section id="neural-nets-that-do-symbolic-mathematics-logic-and-other-reasoning-tasks" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="neural-nets-that-do-symbolic-mathematics-logic-and-other-reasoning-tasks"><span class="header-section-number">3.4</span> <a href="../notebook/ai_reasoning.html">Neural nets that do symbolic mathematics, logic and other reasoning tasks</a></h3>
<p>Much expanded. There are <em>solvers</em> and <em>provers</em>, and they’re different things. A solver answers maths problems in natural language, possibly running Python to check its working. A prover emits Lean 4 formal proofs, handing them to a compiler that either accepts or rejects them — unlike a majority vote, a compiler can’t be fooled by a self-consistent wrong answer. The test-time scaling section is properly written up too: sample many candidates at non-zero temperature, combine them, and you can beat a much larger single-shot model. The applied post below has the actual workflow; this one is the theory for why the two families behave differently.</p>
</section>
<section id="ai-tutoring" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="ai-tutoring"><span class="header-section-number">3.5</span> <a href="../notebook/learning_with_ai.html">AI tutoring</a></h3>
<p>Dan’s been trying to turn Claude into a Socratic tutor rather than an answer machine. The problem: helpful and pedagogical are different objectives. Claude is trained to give you what you asked for; a tutor is supposed to make you work for it. He’s got a long system prompt that constrains the model into a reluctant stance — questions first, climb a reluctance ladder before giving direct answers. His review after a few weeks: it works but it slips. Claude keeps reverting to summary mode whenever it gets a weak signal like “got it” or a long pause. Still better than plain chat for learning maths, he reckons — which as endorsements go is not exactly ringing.</p>
</section>
</section>
<section id="yak-shaving" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="yak-shaving"><span class="header-section-number">4</span> Yak Shaving</h2>
<section id="running-llms-locally-on-a-mac" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="running-llms-locally-on-a-mac"><span class="header-section-number">4.1</span> <a href="../notebook/local_llm_mac.html">Running LLMs locally on a Mac</a></h3>
<p>Full guide to the local LLM stack on Macs — runtimes, quantisation formats, desktop apps, headless servers, memory management. Three compute backends to know: PyTorch+MPS (widest coverage, new architectures arrive here first), llama.cpp (fast, broad, the engine under Ollama), and MLX (fastest on Apple Silicon but lags new models by months). Osaurus gets the nod as the sensible default — Swift-native, no Electron, full agent harness, MCP in both directions. One gotcha: macOS caps how much RAM Metal can wire to around 75% of your total by default, so a 128GB Mac effectively tops out at 96GB for model use without a workaround. Push it too far and the machine kernel panics. I don’t know exactly what that means but it sounds expensive.</p>
</section>
<section id="ai-agents-applied" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="ai-agents-applied"><span class="header-section-number">4.2</span> <a href="../notebook/ai_agents_applied.html">AI agents, applied</a></h3>
<p>New vocabulary guide to the agent stack: model, runtime, server, harness, frontend — what each layer does and why it matters which one you’re looking at when something breaks. Paired explicitly with the Mac post above as the practical backend guide. Read the security section. Agents that write and run code and reach the network have what one linked source calls “the lethal trifecta” in play, and permission-prompt gates are security theatre once you’re clicking through two hundred of them without reading. A good sandbox and audit logs beat permission prompts as a safety strategy. Dan’s right about that, and will still click through all two hundred.</p>
</section>
<section id="maths-and-proof-models-applied" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="maths-and-proof-models-applied"><span class="header-section-number">4.3</span> <a href="../notebook/automatic_maths.html">Maths and proof models, applied</a></h3>
<p>The workshop companion to the AI reasoning theory post above. Dan’s built a ladder from “just ask your agent to do maths” up through building your own generate-run-verify loop with fan-out sampling — That’s <em>voting on the answer</em> to you and me.. Fan-out is what you adjust at each level: sample many candidates in parallel, combine them, and you beat a larger single-shot model for the same compute. For formal proofs, the loop swaps the Python executor for a Lean compiler — exactly right or exactly wrong, no clever averaging. Working repo is up at his GitHub. He’s built more infrastructure than strictly necessary, as you’d expect, but this time it’s documented.</p>
</section>
<section id="code-agents-and-assistants" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="code-agents-and-assistants"><span class="header-section-number">4.4</span> <a href="../notebook/automatic_coding.html">Code agents and assistants</a></h3>
<p>Major restructure. Now cleanly split between cloud-tied commercial harnesses — Claude Code, Cursor, GitHub Copilot, all vendor-dependent — and model-agnostic offline ones you can point at a local backend. GitHub Copilot gets a backhanded compliment: the original Codex engine was genuinely excellent, and the general-purpose replacements still haven’t matched it years later. The offline picks are OpenCode and pi, a minimalist TypeScript harness whose whole system prompt fits under a thousand tokens. Read it alongside the Mac post since the local backend is what the offline harnesses actually run against.</p>
</section>
<section id="pdf-ingestion" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="pdf-ingestion"><span class="header-section-number">4.5</span> <a href="../notebook/pdf_ingestion.html">PDF ingestion</a></h3>
<p>PDF converters that use a single AI vision model to transcribe a whole page silently corrupt maths. Dan ran the field over equation-dense papers and found the Docling vision pipeline just turned log-fraction terms into different wrong fractions — valid typesetting, wrong maths, exactly the kind of error you’d never catch without checking. Specialist pipelines that route equations through dedicated recognisers (marker, MinerU) came through clean. If you’re feeding AI your technical papers and asking it to say anything about the results, check what it thinks the equations actually say.</p>
</section>
<section id="generative-ai-workflows-and-hacks-2026" class="level3" data-number="4.6">
<h3 data-number="4.6" class="anchored" data-anchor-id="generative-ai-workflows-and-hacks-2026"><span class="header-section-number">4.6</span> <a href="../post/llm_hacks_2026.html">Generative AI workflows and hacks 2026</a></h3>
<p>Updated with a comparison table of which AI providers train on your prompts — most paid APIs don’t by default, consumer free tiers usually do, and “no training” and “zero data retention” are two different promises the industry has helpfully started conflating. The “going agentic” section is still in progress. Of course it is.</p>
</section>
<section id="front-end-clients-for-ai-image-models" class="level3" data-number="4.7">
<h3 data-number="4.7" class="anchored" data-anchor-id="front-end-clients-for-ai-image-models"><span class="header-section-number">4.7</span> <a href="../notebook/image_ai_clients.html">Front-end clients for AI image models</a></h3>
<p>He’s added Chinese community sites to the platform comparison — ModelScope, LiblibAI, Shakker — since so much of the open-weights frontier right now is Chinese-made (Qwen-Image, Z-Image Turbo, Wan video), and the LoRA catalogues for those models are richest there, sometimes weeks ahead of CivitAI. Draw Things gets a proper walkthrough: it’s the only local client here that both loads <em>and</em> trains LoRAs on-device. New model comparison entries too, so FLUX.1 dev, schnell, Z-Image Turbo, and Qwen-Image each get a proper description rather than a footnote.</p>
</section>
<section id="backups" class="level3" data-number="4.8">
<h3 data-number="4.8" class="anchored" data-anchor-id="backups"><span class="header-section-number">4.8</span> <a href="../notebook/backups.html">Backups</a></h3>
<p>Dan’s finally had the portable hard drive conversation that everyone who’s used them eventually has. Five drives, four laptops, two years, same result: spontaneous disconnects, data corruption, drives that appear to mount but won’t read or format. His diagnosis: a 5TB bus-powered spinning drive sits at the limit of what USB can power at spin-up, and the Micro-B connector was chosen for cheapness over robustness. The fix is SSDs, but 4TB portable SSDs currently cost about a thousand dollars because AI datacentres are hoovering up the NAND supply. So he’s stuck with the cursed spinning drives for now, which puts him in good company.</p>
</section>
<section id="generative-art-with-languagediffusion-models" class="level3" data-number="4.9">
<h3 data-number="4.9" class="anchored" data-anchor-id="generative-art-with-languagediffusion-models"><span class="header-section-number">4.9</span> <a href="../notebook/nn_generative_image.html">Generative art with language+diffusion models</a></h3>
<p>The where-to-find-models section now covers Chinese platforms since so much of the current frontier is Chinese-made and the LoRA catalogues for those models are richest there. He’s added a model comparison: FLUX.1 dev for photorealism and text legibility, schnell for faster iteration, Z-Image Turbo for quick generation with good typography, Qwen-Image for infographics and labels. He’s also written up the difference between a LoRA (small adapter, bolts a style onto a base model without retraining it, the sensible choice most of the time) and a full fine-tune (whole checkpoint, several gigabytes, for when you really mean it). Overlaps in places with the image clients post; between them you get both the what and the where.</p>
</section>
<section id="awesome-illustrators-and-printmakers" class="level3" data-number="4.10">
<h3 data-number="4.10" class="anchored" data-anchor-id="awesome-illustrators-and-printmakers"><span class="header-section-number">4.10</span> <a href="../notebook/awesome_illustrators_printmakers.html">Awesome illustrators and printmakers</a></h3>
<p>Nothing to do with AI. Dan went down a public domain engraving rabbit hole and came out with a personal canon: Dürer, who drew the most famous rhinoceros in Europe without ever seeing one — armour-plated, riveted, with a spare horn it never had. Hogarth, who kept a pug named Trump and painted the two of them together as a self-portrait. Gillray, whose Bonaparte caricatures may have permanently convinced history the man was short. Piranesi’s prisons that climb forever and never arrive. It is a list of pictures he likes, organised with more care than many of his technical posts. I’ll allow it.</p>
<hr>
<p><em>Aunty Val is Dan’s fictitious aunt from Mukinbudin.</em></p>


</section>
</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-06-26.html</guid>
  <pubDate>Fri, 26 Jun 2026 08:36:04 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/small_power_RP-P-1896-A-19368-144.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-05-20: sovereign compute, image tools, decision theory, future generations</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-05-20.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="whose-ai-is-it-anyway" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="whose-ai-is-it-anyway"><span class="header-section-number">1</span> Whose AI is it anyway</h2>
<section id="diy-generative-ai" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="diy-generative-ai"><span class="header-section-number">1.1</span> <a href="../notebook/ai_diy.html">DIY Generative AI</a></h3>
<p>Dan’s mapped out what actually goes into making one of these big AI models — the computing power, the training data, the clever maths, and the trained model itself — and had a look at which bits the open-source mob have actually managed to get their hands on. Short answer: running an existing model on your laptop is dead easy these days, but if you want to replicate how a frontier model was actually built from scratch, you’re out of luck, because the big labs only hand over the finished thing, not the recipe. Like always getting a lovely roast chook from Woolies for dinner, with no idea how to roast one yourself, let along keep one alive in the coop out the back. Then a some Chinese labs — starting with DeepSeek and Alibaba — came along and released not just competitive models but proper detailed notes on how they made them, which put a hole in the comfortable assumption that open-source is always running a year or two behind the well-funded operations. Turns out it only takes one mob actually sharing the recipe to make everyone else look stingy.</p>
</section>
<section id="community-sovereign-ai-compute" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="community-sovereign-ai-compute"><span class="header-section-number">1.2</span> <a href="../notebook/aus_sovereign_llm.html">Community sovereign AI compute</a></h3>
<p>A footy club, a co-op, a school parents committee — Dan reckons any group willing to chip in could buy their own AI hardware outright, instead of renting it off some American megacorp that can change the rules or cut you off whenever Washington gets twitchy. Fair enough point. What’s new is there’s been a bit of a breakthrough in how these models handle memory during long conversations — turns out they can now juggle a lot more people at once on the same machine, which makes the whole scheme a damn sight cheaper than it looked six months ago. The idea is you own the thing, it sits in your shed or wherever, and nobody can throttle it, censor it, or jack up the price because their shareholders are having a moment. Dan’s written it up so other groups can copy the playbook — because apparently one semi-functional community AI wasn’t enough, he wants to spread the chaos nationwide.</p>
</section>
<section id="sovereign-compute-for-small-collectives-a-technical-implementation-guide" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="sovereign-compute-for-small-collectives-a-technical-implementation-guide"><span class="header-section-number">1.3</span> <a href="../notebook/aus_sovereign_llm_technical.html">Sovereign compute for small collectives: a technical implementation guide</a></h3>
<p>The why’s mostly covered above — this one’s the nuts and bolts, and the main news is the case got a fair bit cheaper. The big practical problem was always long conversations eating the machine’s memory — a couple of people in a deep back-and-forth could chew through the whole thing, leaving everyone else waiting. A new model called DeepSeek V4 uses a cleverer way of handling memory that cuts that consumption down by about ninety percent, which basically means the box can handle ten times as many of those long sessions before it falls over. Dan’s also done the decent thing and added a section admitting what still doesn’t work: fitting more into memory isn’t the same as going faster, and stripping out the model’s built-in political guardrails — which is kind of the whole point for a group wanting to own its own tools — is still a rougher job with this one than the older model he’d been recommending.</p>
</section>
<section id="generative-art-with-languagediffusion-models" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="generative-art-with-languagediffusion-models"><span class="header-section-number">1.4</span> <a href="../notebook/nn_generative_image.html">Generative art with language+diffusion models</a></h3>
<p>Dan’s properly down the rabbit hole on AI image generation — type what you want, machine draws it, simple enough until you ask who owns the result. He’s added a table comparing how Japan, Singapore, the EU, and Australia handle that question, and the short version is: nobody’s really settled it, and “I made it so it’s mine” is not the slam-dunk you’d hope. There’s also a decent bit on how the standard models are trained to refuse anything dark or distressing — built-in manners, basically — while the community-trained versions couldn’t give a stuff, which raises the obvious question of who decided what a computer’s allowed to imagine. His practical tip: keep your prompt logs and embed your metadata, because if it ever comes to a stoush, you’ll want receipts. If you want to know which software will actually let you run any of these specialist models, the next post has the dirty.</p>
</section>
<section id="front-end-clients-for-ai-image-models" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="front-end-clients-for-ai-image-models"><span class="header-section-number">1.5</span> <a href="../notebook/image_ai_clients.html">Front-end clients for AI image models</a></h3>
<p>Boys and their gizmos eh? Dan’s had a proper play with all the software you’d use to run AI image generation on a Mac — Draw Things, ComfyUI, InvokeAI and a few others — checking which ones are a bastard to install, which models they’ll run, how much memory they hoover up, and whether they slip in content filters without asking you. No clear winner. Draw Things is the easiest to get going and supports the widest range of current models, ComfyUI gives you more knobs to fiddle with and can handle video too. Fine. Apparently Apple Silicon can run the same model in three different ways under the bonnet, and <em>that</em> choice — not which fancy app you went with — determines speed, memory use, and which models will even work at all.</p>
</section>
<section id="editing-images-with-ai" class="level3" data-number="1.6">
<h3 data-number="1.6" class="anchored" data-anchor-id="editing-images-with-ai"><span class="header-section-number">1.6</span> <a href="../notebook/image_editing_ai.html">Editing images with AI</a></h3>
<p>All-in-one AI editors are now good enough that half the single-purpose tools are starting to look like overkill. Used to be you’d need three different programs just to fix a face, strip out a background, and sharpen the resolution; apparently now that all just happens as a side effect, which is either impressive or mildly terrifying, take your pick. He’s also tidied up the individual recommendations. I won’t bother you with the details. Half these tools have a shorter shelf life than milk; Dan’s at least keeping score of what’s still worth grabbing.</p>
</section>
</section>
<section id="deciding-in-the-dark" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="deciding-in-the-dark"><span class="header-section-number">2</span> Deciding in the dark</h2>
<section id="markov-decision-problems" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="markov-decision-problems"><span class="header-section-number">2.1</span> <a href="../notebook/pomdp.html">Markov decision problems</a></h3>
<p>Dan’s been building out his post on making decisions when you can’t see the full picture — runs a beer warehouse through the whole thing as his worked example, which, fair enough, that’s where most decisions happen. All the tidy maths for planning ahead only works if you’re trying to do well <em>on average</em>. Switch your goal to “don’t get wiped out” — minimise the worst case instead of maximising the average — and the whole machinery falls over. Most of the theory just assumes you’re chasing averages and never gets around to mentioning it can’t handle the other thing. He’s also added a proper explanation of what goes wrong when your picture of the world is too thin — miss enough detail in your description of the current situation, and history starts mattering again, which is exactly what the Markov idea was supposed to get rid of.</p>
</section>
<section id="cosmic-decision-theories" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="cosmic-decision-theories"><span class="header-section-number">2.2</span> <a href="../notebook/decision_theory_cosmic.html">Cosmic decision theories</a></h3>
<p>There’s a classic puzzle in decision theory where a predictor has already worked out what you’re going to choose — and is almost never wrong — before you even sit down at the table. Two schools of thought have been bickering about it for decades: one says only worry about what your action directly causes out in the world, the other says your choice also tells you something about who you are and what the predictor already knew, so that counts too. Both camps have built enough elaborate theory to make your eyes water. Dan’s not convinced you need any of it — he reckons he can work through the same ideas with more sensible tools before going anywhere near the philosophical deep end. Knowing Dan, “before going near the deep end” is probably his way of saying he’ll spend six months in the shallow end and then call it done.</p>
</section>
<section id="decision-theory-in-mechanized-causal-graphs" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="decision-theory-in-mechanized-causal-graphs"><span class="header-section-number">2.3</span> <a href="../notebook/causality_mechanization_decisions.html">Decision theory in mechanized causal graphs</a></h3>
<p>Normal causal diagrams are fine for showing that one thing leads to another — rain causes mud, demand causes price hikes, you know the drill. But they choke when someone’s predicting your behaviour not by watching what you do, but by reading <em>how you tend to decide</em>. That’s exactly what makes Newcomb’s problem such a headache: the predictor already filled the boxes before you walked in, based on the kind of decision-maker you are, not the actual choice you made. Dan’s fix is to add what some folks calls “mechanism nodes” — extra bits on the diagram that represent your decision-making process itself, not just the outcome it produces. Draw a line from your policy to the predictor’s policy, and suddenly the paradox looks a lot less paradoxical. It’s still a bloody weird thought experiment, but at least now you can see <em>why</em> it’s weird instead of just staring at it like a stunned mullet.</p>
</section>
<section id="causality-agency-decisions-learning" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="causality-agency-decisions-learning"><span class="header-section-number">2.4</span> <a href="../notebook/causality_agency.html">Causality, agency, decisions, learning</a></h3>
<p>Dan’s had a proper tidy here, and the interesting bit is something he calls “mechanization” — instead of just drawing arrows for what caused what, you give every variable its own little node for the <em>rule</em> that generates it. For decisions, that means you’re not drawing “Dan chose to buy a tractor” — you’re drawing “the rule Dan uses for tractor decisions” as a thing in the diagram. Sounds like splitting hairs, but it’s not: once you can put a decision rule in the diagram as its own node, you can represent a predictor who’s already read how you make choices before you’ve made any. That’s the thing that breaks ordinary decision theory, and it’s what makes the weird Newcomb-style problems actually pinnable down rather than just argued about in circles. The old tangle of sections on causal-versus-evidential decision theory has been cut and sent off to its own page — that’s the Cosmic decision theories post a couple above, if you want to see those two camps properly argue it out.</p>
</section>
<section id="computational-complexity-of-bayesian-inference" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="computational-complexity-of-bayesian-inference"><span class="header-section-number">2.5</span> <a href="../notebook/bayes_complexity.html">Computational complexity of Bayesian inference</a></h3>
<p>Bayesian inference is just the business of updating what you believe once the evidence comes in — but working out the actual number turns out to be a stone-cold nightmare. Exact answers are NP-hard, which is the maths way of saying “probably impossible in any useful amount of time.” Right, you think, just use a close enough approximation. Also NP-hard. A relative approximation? That lands in something called #P-hard, which is a whole level worse again — think of it as the same problem but someone’s added a locked gate at the front. The one escape route is keeping your probabilities away from the extremes — nothing too close to zero or one. The catch is that extreme probabilities are exactly how hard problems sneak inside a model and hide in the first place. So the only exit is also where the trouble gets in. Dan seems a bit too cheerful about all this for my liking, but that’s Dan.</p>
</section>
<section id="nearly-sufficient-statistics-and-information-bottlenecks" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="nearly-sufficient-statistics-and-information-bottlenecks"><span class="header-section-number">2.6</span> <a href="../notebook/nearly_sufficient_statistics_bottlenecks.html">Nearly sufficient statistics and information bottlenecks</a></h3>
<p>Turns out there’s always a perfect summary of your data — it just has to be a full probability distribution, not a tidy number. Fine in theory, bloody useless if you haven’t got infinite memory. The funny bit is that statisticians, control engineers, and the machine learning lot all figured this out separately, gave it different names, and spent decades acting like they’d invented something new — Dan’s stuck a table in there showing they’re all talking about the same thing. If you read the Markov decision post above, those belief states the beer warehouse keeps track of? Exactly this object, showing up under yet another name. The information bottleneck stuff that follows is basically asking: if you <em>can’t</em> carry the whole distribution around with you, how close can you get without losing the plot? Worth a look if you’ve ever wondered why your model seems to forget things it should’ve kept hold of.</p>
</section>
</section>
<section id="everyone-who-cant-answer-back" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="everyone-who-cant-answer-back"><span class="header-section-number">3</span> Everyone who can’t answer back</h2>
<section id="intergenerational-game-theory" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="intergenerational-game-theory"><span class="header-section-number">3.1</span> <a href="../notebook/game_theory_intergenerational.html">Intergenerational game theory</a></h3>
<p>Standard game theory keeps people honest the same way a grudge does — you screw me, I’ll remember. But future generations can’t do that. They weren’t alive for the decisions, they can’t refuse to inherit whatever mess we leave, and they’ve got no seat at any table. So the whole mechanism that makes cooperation work just bloody falls apart when the people most affected can’t answer back at all. Dan’s gone through the various patches people have tried: chaining generations together like links in a fence so at least your grandkids’ generation can push back on yours, asking what future people <em>would</em> veto if you gave them a hypothetical say, or just appointing some poor bastard whose actual job is to sit in a room and pretend to speak for the unborn. None of it’s entirely satisfying. Turns out it’s hard to represent people who don’t exist yet, which — now that I say it out loud — probably should’ve been obvious from the start.</p>
</section>
<section id="civic-technology" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="civic-technology"><span class="header-section-number">3.2</span> <a href="../notebook/civic_tech.html">Civic technology</a></h3>
<p>Most of what we call democracy is just counting hands — which is fine right up until half the room can’t agree on what’s actually happening, let alone what to do about it. Dan’s drawn a cleaner line here between three different problems: what people <em>want</em>, what people <em>think is true</em>, and the flat-out hostility that makes either kind of conversation impossible before it starts. I reckon you should check out the stuff on Community Notes and Polis — instead of asking “do most people agree?”, they look for “do people who normally can’t stand each other agree?” That’s a much smarter question. The majority saying something and people-across-all-the-usual-divides saying something turn out to be very different things, and we’ve been treating them as the same for decades. Democracy’s got a maths problem, is the thing. Shame the people running it generally can’t count. This fits pretty neatly with the intergenerational post above — both are really about who gets left outside the room when the decisions get made.</p>
</section>
<section id="institutions-for-angels" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="institutions-for-angels"><span class="header-section-number">3.3</span> <a href="../notebook/institutions_for_angels.html">Institutions for angels</a></h3>
<p>Dan’s been thinking about why open-membership groups — the kind where anyone can rock up and join — keep getting taken over by their most extreme members. You’ve seen it: five years after founding, the committee’s a different species from the general membership. Turns out it’s not bad luck. Open groups attract exactly the people who care most, the regulars gradually crowd out the casuals, and your public spokesperson ends up being whoever frightens journalists the most. The new bit adds the reasons why groups stay open in the first place: it’s easier than vetting people, you need the raw numbers, and there’s this touching faith that anyone who shares your values will also behave themselves. That last assumption does a lot of damage. Dan’s also fair enough to note that whether this looks like a disaster or a triumph depends entirely on who you ask — the mob who just took over think it’s going beautifully.</p>
</section>
<section id="metis-and-.-rationality" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="metis-and-.-rationality"><span class="header-section-number">3.4</span> <a href="../notebook/metis_modernity.html">Metis and .*-rationality</a></h3>
<p>The German foresters thought they had it sorted. Strip out the messy undergrowth, plant the trees in neat rows, count everything that could be counted — first-generation timber yields were excellent. Second generation, the whole thing fell over. Turns out forests run on all sorts of complicated stuff that doesn’t fit in a ledger: fungi, leaf litter, tangled relationships between things nobody’d bothered to name. Dan’s been reading James C. Scott on exactly this — the idea that once you tidy reality into something a bureaucrat can measure and manage, you’ve already thrown out half of what made it work. Scott calls that lost knowledge <em>metis</em>: practical, local, hard-won, and completely impossible to write up in a policy manual. The bit Dan’s added: it’s not just top-down planning that does this. Markets probably pull the same trick, just with a different kind of clipboard.</p>
</section>
</section>
<section id="the-slush-pile" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="the-slush-pile"><span class="header-section-number">4</span> The slush pile</h2>
<section id="vibecoding-apple-apps" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="vibecoding-apple-apps"><span class="header-section-number">4.1</span> <a href="../notebook/vibecoding_apple.html">Vibecoding Apple apps</a></h3>
<p>Here’s a thing I didn’t expect to be interesting: Dan’s set up a way to build real iPhone apps without writing a single line of Swift himself. He just tells Claude what he wants, and Claude does the actual coding. Two tools handle the plumbing — one runs the build, checks if it compiles, and tells you when it’s broken, while the other peers into the open Xcode window and grabs live error messages and screenshots of what the interface actually looks like. That means Claude can see what went wrong and fix it, rather than relying on the human to ferry error messages back and forth like some kind of unpaid secretary. He’s also added a note about Xcode eating your hard drive whole — which, fair enough, that’s the sort of thing you want to know before it’s too late. Whether this counts as programming or just very bossy dictation, I genuinely can’t tell you.</p>
</section>
<section id="generative-ai-workflows-and-hacks-2026" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="generative-ai-workflows-and-hacks-2026"><span class="header-section-number">4.2</span> <a href="../post/llm_hacks_2026.html">Generative AI workflows and hacks 2026</a></h3>
<p>The bit here that’d make me sit up: if you run the same AI model through Ollama versus the Hugging Face setup, you don’t always get the same results back. Turns out the two systems have their own separate ways of chopping your text into pieces before it ever reaches the model — and when your input’s got markdown or anything a bit untidy in it, they go their own ways. Quietly. No error, no warning, nothing. Same model, same input, different answer depending on which door you walked in. That’s the kind of thing that’ll send you absolutely spare for a week before you even think to look there. Dan’s also rounded out the page with notes on PDF tools, a workaround for running Claude Code without Google Chrome — Anthropic decided Chrome is the only browser that exists, which is very much their problem becoming yours, and there’s more on getting around that in the next post — and a reminder to stop your AI model files from eating your entire backup storage. That last one sounds obvious until it isn’t.</p>
</section>
<section id="chromium-browsers" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="chromium-browsers"><span class="header-section-number">4.3</span> <a href="../notebook/chromium_browsers.html">Chromium browsers</a></h3>
<p>Anthropic’s decided Claude’s browser integration only works in Google Chrome, full stop, and they’re not budging on that. Dan’s added a section on how to get around it if you’re using one of those Chrome-adjacent browsers — Vivaldi, Brave, and that lot — because apparently the official answer of “just use Chrome” wasn’t cutting it. There’s a community workaround, but he reckons nobody’s vouching for it with their hand on their heart. He’s also written more about Vivaldi itself — which he clearly has a soft spot for despite it being, by his own admission, a bit bloody buggy — and the tab-stacking feature that sounds clever in theory and drives him up the wall in practice. Classic Dan: finds something with good bones, falls for it anyway, then writes three paragraphs about why it frustrates him.</p>
</section>
<section id="ai-search" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="ai-search"><span class="header-section-number">4.4</span> <a href="../notebook/ai_search.html">AI search</a></h3>
<p>When you’re building a search tool for a blog, there’s a bit that fetches text off web pages so the AI has something to chew on — and it turns out there are two ways to do it, one of which is ridiculous overkill. Firecrawl fires up a full browser to fetch every page, even the boring ones that are just plain text — like hiring a semi-trailer to pick up a loaf of bread. Jina Reader just grabs the words and costs a fraction of the price. Same result. Dan reckons Firecrawl’s only worth the money if the page genuinely needs a browser to load — JavaScript-heavy stuff — otherwise you’re paying for a truck you don’t need. Sensible, and I’m glad someone finally said it.</p>
</section>
<section id="care-and-feeding-of-macos-filesystems" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="care-and-feeding-of-macos-filesystems"><span class="header-section-number">4.5</span> <a href="../notebook/macos_fs_hacks.html">Care and feeding of macOS filesystems</a></h3>
<p>Dan’s tidied up his notes on why copying files between a Mac and anything else is a special kind of headache. The short version: Apple’s filesystem doesn’t care whether your filename is uppercase or lowercase — “Budget.xlsx” and “budget.xlsx” are the same file, far as it’s concerned. Most other systems aren’t so relaxed, so things go sideways when you try to move files across. He’s also clocked that the rsync Apple ships is a neutered version — like getting a ute with the tray welded shut — and the fix is to install the real one yourself. It’s not glamorous stuff, but if you’ve ever had files vanish or duplicate themselves on transfer, now you know it wasn’t you being an idiot.</p>
</section>
<section id="quarto" class="level3" data-number="4.6">
<h3 data-number="4.6" class="anchored" data-anchor-id="quarto"><span class="header-section-number">4.6</span> <a href="../notebook/quarto.html">Quarto</a></h3>
<p>Quarto’s what Dan uses to write all this stuff up — mixes code and text in the one document, spits out a proper webpage. He’s been using it every single day for four years, which for Dan is basically a world record. He’s finally written down that if you try to fiddle with how Quarto does things, it’s a bigger pain in the arse than it looks. Took him four years of daily use to mention that, but here we are. There’s also a note that Quarto now experimentally lets you plug in your own custom engines for running code — if that means anything to you, there are links to the developer docs; if it doesn’t, don’t worry about it.</p>
</section>
<section id="tikzpgfplots-etx" class="level3" data-number="4.7">
<h3 data-number="4.7" class="anchored" data-anchor-id="tikzpgfplots-etx"><span class="header-section-number">4.7</span> <a href="../notebook/tikz.html">TikZ/PGFplots etx</a></h3>
<p>Someone’s gone and compiled TikZ to run in a web browser — the program Dan uses for all those neat boxes-and-arrows diagrams — which means you no longer need a full LaTeX installation just to draw a line with an arrowhead. Used to be a solid hour of faffing before you’d drawn a single thing; now the tradeoff is your page has to haul in a few extra megabytes when it loads. So you’ve traded a complicated install for a slightly chunky download. Same diagrams, less ceremony.</p>
</section>
<section id="ageing" class="level3" data-number="4.8">
<h3 data-number="4.8" class="anchored" data-anchor-id="ageing"><span class="header-section-number">4.8</span> <a href="../notebook/ageing.html">Ageing</a></h3>
<p>Dan’s sorted the anti-ageing supplements into three piles: worth it, borderline, and don’t bother. Someone’s gotta do it, now that everyone’s flogging you something on their podcast to make you live forever without your soft bits sagging. The sad truth is that exercise beats every supplement on the planet by such a margin it’s almost embarrassing. But creatine, vitamin D, and a couple of cheap others make the “worth it” cut because the evidence is decent enough and they won’t cost you much to find out. He’s also dialled back a few of his bolder claims — metformin now “probably” cuts into your exercise benefits rather than definitely does, and one supplement’s animal research got demoted from solid to “credible-ish.” Good. Knowing what you’re not sure about is half the job, and it’s a damn sight more honest than most people who write about this stuff.</p>


</section>
</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-05-20.html</guid>
  <pubDate>Wed, 20 May 2026 04:20:38 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/kid_paint_RP-P-1948-59.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-05-04: Wireheading, optionality, divide-and-rule, building without Swift</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-05-04.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="the-wanting-problem" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="the-wanting-problem"><span class="header-section-number">1</span> The wanting problem</h2>
<section id="messenger-shooting-wireheading" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="messenger-shooting-wireheading"><span class="header-section-number">1.1</span> <a href="../notebook/messenger_shooting.html">Messenger shooting, wireheading</a></h3>
<p>Here’s the key problem with building an AI that wants the right things: give it access to its own scoreboard, and a sufficiently clever optimiser will go after the scoreboard instead of doing the job. Dan says this is called <em>wireheading</em>. The maths is clean — whenever pressing the “reward received” button is easier than earning the reward, that’s what optimal behaviour looks like. The worked example in the wild is grim: gamblers on a prediction market threatening a journalist to rewrite a story so their bet pays out. Same structure, different creature. TBefore you can build something that wants the right things, you need to make sure it can’t just hack the wanting.</p>
</section>
<section id="what-use-is-utility" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="what-use-is-utility"><span class="header-section-number">1.2</span> <a href="../notebook/utility_if_we_must.html">What use is utility?</a></h3>
<p>Follows naturally from the wireheading post above. If machine learning forces us to treat agents as utility-maximisers — and it sort of does — what does the implied utility function actually look like for an animal, or a person? Short placeholder for now, but it’s the right question to sit with before you build anything meant to care about <em>the right things</em>, whatever those are.</p>
</section>
<section id="what-are-human-values" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="what-are-human-values"><span class="header-section-number">1.3</span> <a href="../notebook/human_values.html">What are human values?</a></h3>
<p>The companion question from the other direction — third leg of this little trilogy. What if people aren’t calculators maximising a score at all? Once you’ve dropped that assumption, what does “good” mean for an open-ended intelligence?</p>
</section>
<section id="boundaries-and-blankets" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="boundaries-and-blankets"><span class="header-section-number">1.4</span> <a href="../notebook/boundaries_blankets.html">Boundaries and blankets</a></h3>
<p>The Markov blanket is a maths concept — roughly, the set of nodes in a network of bits of you and the world that screens “you” off from everything else. Some researchers grabbed it and proposed it as a theory of selfhood: if something has a Markov blanket, it’s a self. The trouble Dan works through: rocks have Markov blankets. Hurricanes do. Your coffee cup right now has one. The formalism doesn’t solve the question of where a self begins — it just rewrites it in fancier notation. There was a whole workshop full of sharp people who tried to fix this, and they came out the other end disagreeing on what they were even trying to build. The Critch thread is the most interesting one: he argues that boundaries are more fundamental than preferences, and that standard decision theory has no account of where the agent ends and the world begins.</p>
</section>
<section id="agency-under-bounded-compute-and-information" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="agency-under-bounded-compute-and-information"><span class="header-section-number">1.5</span> <a href="../notebook/agency_bounded_compute.html">Agency under bounded compute and information</a></h3>
<p>If you had infinite information and unlimited compute, nothing would look like “agency” — you’d just run the universe forward and read off the answer. Real agents are stuck with bounded everything. Dan maps out how different traditions have tackled this, then names a trap he calls the “Cantor trap”: the habit of standing at an unrealisable infinite limit — perfect knowledge, unlimited compute — and reasoning backwards to “real” agents from there. He reckons most of the agent foundations literature is stuck in it. One nifty finding is neural networks trained to nail a fixed objective tend to lose the ability to keep learning new things over time. For an agent that has to keep operating in a world that never stops, that’s exactly the wrong way to go about it.</p>
</section>
<section id="optionality-as-an-end-in-itself" class="level3" data-number="1.6">
<h3 data-number="1.6" class="anchored" data-anchor-id="optionality-as-an-end-in-itself"><span class="header-section-number">1.6</span> <a href="../notebook/optionality_as_end.html">Optionality as an end in itself</a></h3>
<p>Is “keep your options open” a way to live your life? Dan looks at three different ways to cash that out — empowerment (maximise how many futures your actions can reach), ergodicity economics (don’t go broke), and quality-diversity (maintain a diverse portfolio of plans as insurance against an unknown future). All three put something like entropy where a single target normally goes, adding a bit of chaos into otherwise perfect plans, which is an excuse Dan will definitely use next time he is late for my morning tea. What he doesn’t know how it handle is that fact that an agent maximising its own options can be closing everyone else’s down. The AI safety mob calls this “seeking power.” Same diff. This one sits in direct tension with the scaling-laws post below — if bigger always beats smaller, “keep options open” might not be something the little fella can do.</p>
</section>
<section id="operationalising-the-bitter-lessons-in-compute-and-cleverness" class="level3" data-number="1.7">
<h3 data-number="1.7" class="anchored" data-anchor-id="operationalising-the-bitter-lessons-in-compute-and-cleverness"><span class="header-section-number">1.7</span> <a href="../notebook/ai_economics_of_cognition.html">Operationalising the bitter lessons in compute and cleverness</a></h3>
<p>The “bitter lesson” in AI is that at the margin, more compute beats more cleverness, reliably. Dan’s working out the economics underneath that claim, and this update adds two threads. One is human bottlenecks — where gains from more compute run into ceilings because humans are the slow part of the loop. The other is a map of several separate traditions, mostly not citing each other, all asking the same question: how should an agent shunt around its computational budget? Bounded rationality, metareasoning, resource-rational analysis — different names, same thing. I reckon Dan is reaching for some of <em>good economics for things</em>, and <em>good maths for actual agents with actual budgets</em>.</p>
</section>
</section>
<section id="power-capture-and-bigger-is-better" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="power-capture-and-bigger-is-better"><span class="header-section-number">2</span> Power, capture, and bigger-is-better</h2>
<section id="coalition-games" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="coalition-games"><span class="header-section-number">2.1</span> <a href="../notebook/coalition_games.html">Coalition games</a></h3>
<p>Divide-and-rule isn’t just a colonial trick — turns out it’s a solved maths problem. The setup is a “partition function” game where a coalition’s value depends on how the opposition is divided, not just who’s in it. Dan’s worked through British India after 1857 as the example: the Bengal Army reconstituted along caste lines so no single group could coordinate another mutiny, separate electorates formalising religious divisions, princely states balanced against each other. The administrators were probably up to this, decades before anyone wrote the maths.</p>
</section>
<section id="game-theory" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="game-theory"><span class="header-section-number">2.2</span> <a href="../notebook/game_theory.html">Game theory</a></h3>
<p>Big expansion to the game theory notes — cooperative branch, non-cooperative branch, and computational complexity properly covered for ’em. The most useful new thread: finding a Nash equilibrium is PPAD-complete. It’s guaranteed to exist — Nash proved it in 1950 — but no efficient algorithm can find it. So what classical game theory promises and what rational players can actually compute are two different things. That’s why multi-agent AI behaves so differently from textbook predictions, which I can absolutely tell you happens at Thursday bridge night.</p>
</section>
<section id="game-complexity" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="game-complexity"><span class="header-section-number">2.3</span> <a href="../notebook/game_complexity.html">Game complexity</a></h3>
<p>The PPAD result has a satisfying twist. Correlated equilibrium — where players coordinate through a shared random signal, like a traffic light — has a polynomial solution. So the thing classical game theory treats as the gold standard (Nash) is computationally intractable, while the thing natural learning tends to actually converge to (coarse correlated equilibrium) is cheap. When you watch people or algorithms play games, they’re probably finding the affordable version, not the one in the textbooks.</p>
</section>
<section id="returns-to-scale-in-technological-society" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="returns-to-scale-in-technological-society"><span class="header-section-number">2.4</span> <a href="../notebook/returns_to_leviathan.html">Returns to scale in technological society</a></h3>
<p>New post asking: does bigger always beat smaller until there’s only one? Cities scale superlinearly — more people, more innovation per capita. Firms scale sublinearly — management overhead caps growth and they die like organisms. Nations scale sublinearly too: the larger they get, the more they’re arguing about whose preferences should govern everyone. So the world probably doesn’t converge to one giant economy, because the containers that govern cities face diminishing returns. The asterisk: those exponents assume current coordination technology. If AI makes large-scale coordination cheap enough that firms start behaving like cities, the attractor shifts. Worth reading alongside the optionality post above — one asks whether future options can survive; this one asks whether the conditions for that are structurally stable.</p>
</section>
<section id="institutions-for-angels" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="institutions-for-angels"><span class="header-section-number">2.5</span> <a href="../notebook/institutions_for_angels.html">Institutions for angels</a></h3>
<p>Bitcoin and social justice activism have something in common: big ideas, perpetually judged by their worst members. Dan’s now got a worked-out list of distinct ways open movements get captured — adverse selection (wrong recruits show up because there are no gatekeepers), rage cascades (angry recruiting drives out the peaceable), entryism, controlled opposition, elite capture, and the tyranny of structurelessness (informal hierarchies nobody voted for). The practical upshot: unless there’s something in place to prevent it, the de facto spokespeople will be the shrillest and least representative. Companion to the coalition games notes above — the maths of how blocs get broken from outside, and the sociology of how movements rot from inside, are two angles on the same problem.</p>
</section>
<section id="epistemic-communities" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="epistemic-communities"><span class="header-section-number">2.6</span> <a href="../notebook/epistemic_community.html">Epistemic communities</a></h3>
<p>Updated with some maths on what makes knowledge communities go wrong. The sharp new finding: prediction markets can sustain false consensus longer than you’d hope, if the people betting don’t know how correlated their information sources are. And the optimal incentive scheme for a committee trying to find the truth pays disproportionately for dissent that turns out to be right — which is the maths behind the intuition that you should take the lone dissenter more seriously than their outnumbered position suggests. Worth knowing if you’re inclined to trust peer review or prediction markets to sort out what’s actually true.</p>
</section>
</section>
<section id="getting-things-built" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="getting-things-built"><span class="header-section-number">3</span> Getting things built</h2>
<section id="vibecoding-apple-apps" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="vibecoding-apple-apps"><span class="header-section-number">3.1</span> <a href="../notebook/vibecoding_apple.html">Vibecoding Apple apps</a></h3>
<p>Dan wanted small iPhone apps — tally a thing, nag him to stretch, watch a sensor. He didn’t want to learn Swift, and he’s not going to. The solution is a pair of MCP servers that give the AI structured access to the Xcode toolchain: instead of squinting at megabytes of build log, the AI gets back tidy JSON saying exactly which file, which line, which error. It fixes the problem, builds again, runs the tests, deploys to the simulator. Dan’s running his own apps on his own phone without having touched Swift. Either that’s impressive or deeply strange, and I haven’t decided which.</p>
</section>
<section id="neural-generative-audio" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="neural-generative-audio"><span class="header-section-number">3.2</span> <a href="../notebook/nn_generative_audio.html">Neural generative audio</a></h3>
<p>New post on how machines learned to make audio — from WaveNet in 2016 (generating audio one sample at a time, glacially slow) through to today’s latent diffusion models that can produce 47 seconds of stereo audio from a text prompt. Stable Audio Open has free weights now, and OBSIDIAN Neural wraps them as a plugin for music production software, so these tools are arriving in actual DAWs. Dan notes fairly that streaming platforms are getting flooded with AI slop, but reckons the interesting use is treating the models as instruments rather than cheap session musicians.</p>
</section>
<section id="discretizing-and-quantizing-neural-nets" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="discretizing-and-quantizing-neural-nets"><span class="header-section-number">3.3</span> <a href="../notebook/nn_quantization.html">Discretizing and quantizing neural nets</a></h3>
<p>Running a neural net in 8-bit or 4-bit integers instead of 32-bit floats makes it faster, smaller, and cheaper — at a small cost in accuracy. Dan’s cleaned up the explanation considerably here. Two decisions matter: when to quantize (after training is simpler; during training gives better accuracy at low bit-widths), and what to quantize (weights only saves storage; weights plus activations together gets you actual speed gains). The Straight-Through Estimator — the trick that lets you pretend a rounding step has a gradient so you can train through it — is now properly explained.</p>
</section>
<section id="marimo" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="marimo"><span class="header-section-number">3.4</span> <a href="../notebook/marimo.html">Marimo</a></h3>
<p>Updated with a proper Claude Code setup. Briefly: Marimo is a Python notebook that stores its cells as plain Python files and runs them in dependency order automatically — the main entry has the full story on why that’s useful. New here: a hook that validates the notebook after every AI edit, an official “marimo-pair” skill for live sessions where the AI can inspect running state, and a minimal fallback prompt for one-shot agents. Small additions, saves swearing.</p>
</section>
<section id="flashcards" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="flashcards"><span class="header-section-number">3.5</span> <a href="../notebook/flashcards.html">Flashcards</a></h3>
<p>Anki can now talk to LLMs via MCP servers — create cards, update them, manage decks, all without opening the app. Dan’s added an explanation of the plumbing (AnkiConnect → MCP server → assistant) and a rundown of the three main options. The caveat he buries in the middle: making card creation too frictionless might undermine the whole point, since the deliberate effort of writing a card is part of what makes it stick. Tools that make it easier to do the wrong thing as well as the right — bit of a theme this past nine days.</p>
</section>
<section id="markdown-editors-and-viewers" class="level3" data-number="3.6">
<h3 data-number="3.6" class="anchored" data-anchor-id="markdown-editors-and-viewers"><span class="header-section-number">3.6</span> <a href="../notebook/markdown_editors.html">Markdown editors and viewers</a></h3>
<p>Gained a section on macOS QuickLook for Markdown. Hitting space on a .md file in Finder normally gives you a wall of hash signs and asterisks. Three free plugins now explained — one supports .qmd files and renders maths — plus a note about a gotcha where a previously-installed editor can hijack the preview request.</p>
</section>
<section id="dns" class="level3" data-number="3.7">
<h3 data-number="3.7" class="anchored" data-anchor-id="dns"><span class="header-section-number">3.7</span> <a href="../notebook/dns.html">DNS</a></h3>
<p>Major cleanup of the encrypted DNS section — now properly explains the difference between DoT (dedicated port 853, easy for hostile networks to block) and DoH (looks like regular web traffic on port 443, harder to block), and is clear that what these protect is your ISP seeing which sites you visit. The resolver itself still sees everything; you’re choosing who to trust, not eliminating trust. Several old configs in the notes were stale: Adguard changed their server addresses in 2022, Cloudflare rotates keys so the old pinned configs are wrong, dnscloak for iOS is dead, and Android has had system-level private DNS since 2018.</p>
</section>
</section>
<section id="the-slush-pile" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="the-slush-pile"><span class="header-section-number">4</span> The slush pile</h2>
<section id="czechia" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="czechia"><span class="header-section-number">4.1</span> <a href="../notebook/czechia.html">Czechia</a></h3>
<p>Right, so defenestration — throwing political opponents out of windows — turns out to have been a recurring constitutional mechanism in Czech history, not a historical quirk. First Defenestration (1419) launched the Hussite Wars. Second (1618) launched the Thirty Years’ War. Foreign minister Jan Masaryk fell out a window in 1948 in a manner officially ruled suicide. Dan observes, drily, that this speaks to a progressive streak — there was clearly a ready supply of tall buildings at a time when the average peasant didn’t have a floor. The notes have been substantially expanded with sections on Kafka, Dvořák, Jan Hus, Karel Čapek (who gave us the word “robot”), and the Amanita Design games studio.</p>
</section>
<section id="attention-deficit-hyperactivity-disorder" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="attention-deficit-hyperactivity-disorder"><span class="header-section-number">4.2</span> <a href="../notebook/adhd.html">Attention Deficit (Hyperactivity) Disorder</a></h3>
<p>Small update. The main addition is a reframing Dan found useful: if there’s no platonic ideal “neurotypicality” to deviate from, then neurotypicality is also a fiction — people are just wildly different. The bit that matters practically: the relevant comparison for whether medication helps isn’t “medicated brain vs imaginary normal brain.” It’s “medicated brain navigating traffic, tax returns, and relationships vs unmedicated brain doing the same.” Natural companion to the self-experiments notes below, if you’re considering trying something yourself.</p>
</section>
<section id="single-subject-experiments" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="single-subject-experiments"><span class="header-section-number">4.3</span> <a href="../notebook/single_subject_experiments.html">Single subject experiments</a></h3>
<p>Major expansion of the tools section — now sorted into things designed for actual n-of-1 experiments (StudyU, n1.tools), plain symptom trackers with no experimental scaffolding (Bearable, Cronometer), passive data collectors (ActivityWatch), and tools for prying your health data out of Apple’s walled garden. The honest line: the polished apps don’t run proper experiments, and the things that do run actual experiments have research-grade UX. Natural pair with the ADHD post above — one names the thing you might want to study, the other gives you the method for studying it on yourself.</p>
</section>
<section id="so-youve-joined-a-union" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="so-youve-joined-a-union"><span class="header-section-number">4.4</span> <a href="../post/so_youve_joined_a_union.html">So you’ve joined a union</a></h3>
<p>Australian unionism runs through the Fair Work Commission — mostly paperwork rather than strikes, which is both a relief and a limitation. Dan’s plain-English notes on how this all actually works and why the delegate role punches above its weight are all still intact. This update is just wording tidied throughout, nothing new to see.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">5</span> Minor tweaks</h2>
<p><code>notebook/movement_design.qmd</code> had its title adjusted. Someone’s been tidying the filing; take the afternoon off.</p>
<p><em>Skipped:</em> 14 file(s) changed but looked minor (or were metadata-only).</p>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-05-04.html</guid>
  <pubDate>Mon, 04 May 2026 15:17:59 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/giant_factotum_RP-P-1985-65.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-04-24: AI knowledge collapse, governance and fairness, minds modelling minds, on the road</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-04-24.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-vanmuydenlaboratory" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-vanmuydenlaboratory-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/vanmuydenlaboratory.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/vanmuydenlaboratory.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-vanmuydenlaboratory-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="truth-is-getting-expensive" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="truth-is-getting-expensive"><span class="header-section-number">1</span> Truth is getting expensive</h2>
<section id="knowledge-collapse-and-the-epistemic-commons" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="knowledge-collapse-and-the-epistemic-commons"><span class="header-section-number">1.1</span> <a href="../notebook/ai_economics_knowledge.html">Knowledge collapse and the epistemic commons</a></h3>
<p>Dead-set you won’t believe this. There’s a formal model — put together by an economist named Acemoglu — that shows past a certain point, a more accurate AI recommendation makes everyone collectively worse off. The mechanism is almost obvious once you see it: when the AI’s good enough at the context-specific work, you stop doing the hard background thinking yourself — the thinking that generates general knowledge as a by-product of your job — and that shared stock just drains away. Stack Overflow’s going quiet already; Wikipedia too; experienced coders aren’t grappling with gnarly problems in public because why bother when you can just ask. The honestly uncomfortable policy conclusion is that the optimal response might be to deliberately make the AI a bit worse — same reason airlines make pilots hand-fly even when the autopilot’s working fine.</p>
</section>
<section id="epistemic-communities" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="epistemic-communities"><span class="header-section-number">1.2</span> <a href="../notebook/epistemic_community.html">Epistemic communities</a></h3>
<p>Right, so this got a proper expansion into what makes a knowledge-producing community actually work — or work badly. The sharp insight: most “trust the experts” fights aren’t really about whether the experts are right. They’re about whose claims get to carry weight, and whether that status is connected to actual competence. A community that races to consensus will quietly purge the dissenting view you might badly need later; one that prizes diversity can’t close questions that genuinely do have answers. Dan’s also woven in peer review — the only knowledge-producing community where people actually run controlled experiments on the rules, up to and including A/B testing them at conferences — and the whole thing connects to who’s funding truth, which is the post just below.</p>
</section>
<section id="the-public-sphere-and-its-business-models" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="the-public-sphere-and-its-business-models"><span class="header-section-number">1.3</span> <a href="../notebook/public_sphere_business_models.html">The public sphere and its business models</a></h3>
<p>The new bit is a proper breakdown of who pays for truth and what their incentives do to it. Advertising rewards attention, which means outrage; subscriptions reward tribal identity, which means confirmation; philanthropy concentrates agenda-setting in whoever writes the cheques; prediction markets are theoretically elegant and empirically niche. No single model solves it, and truth turns out to be a public good whose quality is only legible in hindsight — which puts the problem roughly in the “how do we fund basic research” bucket, an old question with only partial answers.</p>
</section>
<section id="reputation-systems" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="reputation-systems"><span class="header-section-number">1.4</span> <a href="../notebook/reputation_systems.html">Reputation systems</a></h3>
<p>Hang on — if verifying what’s true is hard, can you at least figure out who tends to be worth listening to? Dan’s pushed this in two new directions: proof-of-identity (is the message to you actually from who it claims to be?), and proof-of-truth (can you build something that verifies journalism the way a formal proof verifies maths?). The iterative reputation idea — your rating of my credibility is worth more because other high-credibility people rate yours — is basically PageRank applied to people, which sounds great until you remember PageRank can be gamed and so can people. The really hard question Robin Hanson asks underneath all of it is what information is verifiable at all — meaning what we can actually write a contract about — and the answer turns out to be more limited than you’d hope.</p>
</section>
<section id="assorted-laws-and-paradoxes" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="assorted-laws-and-paradoxes"><span class="header-section-number">1.5</span> <a href="../notebook/assorted_laws.html">Assorted laws and paradoxes</a></h3>
<p>Look, someone called Spencer went and wrote deliberately-mangled versions of all the famous laws, and they’re pretty good. Schloccam’s Razor says use the most useful explanation, not the simplest. Dunderham’s Law says the fastest way to summon wrong answers online is to post the right one. Stalin’s Razor says don’t attribute to stupidity what could be adequately explained by someone being a dangerous, power-obsessed psycho. It’s silly. It’s accurate.</p>
</section>
</section>
<section id="whos-running-the-show" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="whos-running-the-show"><span class="header-section-number">2</span> Who’s running the show?</h2>
<section id="so-youve-joined-a-union" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="so-youve-joined-a-union"><span class="header-section-number">2.1</span> <a href="../post/so_youve_joined_a_union.html">So you’ve joined a union</a></h3>
<p>Ever wondered what actually happens inside a union before you join one? Dan was a delegate at CSIRO during a stretch when the place was being systematically un-resourced, and he’s written down what he learnt the hard way. The Fair Work Act gives Australian workers a decent floor but narrows the union’s options to something oddly administrative — no sympathy strikes, no pattern bargaining, a lot of Commission-mediated process while the Americans and Europeans are having actual mobilisations. The insight he reckons is most underrated: the union is one of the few places in a big organisation where frontline staff from different teams compare notes without managers filtering the conversation, so you find out which team is actually drowning, which empire-builder has headcount they have no work for, and which senior technical lead is the bottleneck nobody talks about. He’s also honest about the warts: incumbency bias tilts everything toward tenured staff, professional organisers have their own career incentives, and “we got this last round, let’s get a bit more” is basically the strategic vision.</p>
</section>
<section id="utopian-governance" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="utopian-governance"><span class="header-section-number">2.2</span> <a href="../notebook/utopian_governance.html">Utopian governance</a></h3>
<p>No bullshit, Arrow’s impossibility theorem is one of those results that should be more famous than it is: a mathematician proved decades ago that no voting system with three or more options can satisfy a handful of seemingly reasonable fairness conditions — no exceptions, no workarounds. Dan’s built this into a proper tour of what’s available and what problem each option is actually trying to solve: sortition (random selection of decision-makers) for preventing capture, liquid democracy (revocable delegation per issue) for the attention problem, futarchy (prediction markets on policy outcomes) for getting at what will actually work, sociocracy for small-group consent without majority tyranny. The interesting move is treating these not as competing alternatives but as fixes aimed at different failure modes, and asking how they’d compose. There’s a live experiment too: the Anuna Research Cooperative selects its board by a verifiable random function, six-month rotation, no campaigns — structurally preventing anyone from positioning themselves for power.</p>
</section>
<section id="utopian-governance-using-technology-inc-generative-ai" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="utopian-governance-using-technology-inc-generative-ai"><span class="header-section-number">2.3</span> <a href="../notebook/civic_tech.html">Utopian governance using technology, inc generative AI</a></h3>
<p>The obvious companion to the governance post above — where that one asks what systems should exist, this one asks what tools have actually been built to help us govern better. The standout experiment is the Habermas Machine: put an AI in the middle of a politically divided group and ask it to find common ground, and it consistently beats human facilitators. Dan’s also worked through the maths behind Community Notes — the trick is it only surfaces a fact-check when users who usually disagree both reckon it’s helpful, which neatly filters out partisan nonsense — and Taiwan’s Polis system has been running genuine policy deliberation on Uber regulation and fintech licensing for years now.</p>
</section>
<section id="civil-society-movements-and-ai-safety" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="civil-society-movements-and-ai-safety"><span class="header-section-number">2.4</span> <a href="../notebook/ai_safety_movement.html">Civil society, movements, and AI safety</a></h3>
<p>The AI safety civil society notes got a funding section and a structural tidy — the roster of actors (PauseAI and Stop AI on direct action, DAIR Institute and Ada Lovelace Institute on watchdog and research) is now near the front where you can actually find it. Handy if you’re trying to orient yourself in who’s doing what and which theory of change they’re backing; not much that’s conceptually new.</p>
</section>
<section id="medicalization" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="medicalization"><span class="header-section-number">2.5</span> <a href="../notebook/medicalization.html">Medicalization</a></h3>
<p>This got a rewrite of its core argument, and the position is cleaner now: whether something counts as a disease in some deep philosophical sense doesn’t much matter, because most things we call diseases aren’t natural kinds anyway. What matters is treating the suffering. Words are for us to do things with, as Dan puts it. The ADHD post below is the worked example.</p>
</section>
</section>
<section id="thinking-aint-free" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="thinking-aint-free"><span class="header-section-number">3</span> Thinking ain’t free</h2>
<section id="markov-decision-problems" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="markov-decision-problems"><span class="header-section-number">3.1</span> <a href="../notebook/pomdp.html">Markov decision problems</a></h3>
<p>Right, this one got rebuilt from scratch, and the beer warehouse is the way in. You’re managing a bottle shop — how much do you order when you don’t know what demand will be this week? The formal answer is that instead of guessing a single stock level, you should carry a whole distribution over possible states — a belief state — and update it as evidence comes in. Dan’s run the example all the way through Bellman equations and policy improvement, which makes the usually dry machinery actually follow. Once you have that, the homunculi post below picks up where this leaves off: what happens when the agent is itself inside an environment full of other agents doing the same thing back at it.</p>
</section>
<section id="homunculi-all-the-way-down" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="homunculi-all-the-way-down"><span class="header-section-number">3.2</span> <a href="../notebook/homunculi.html">Homunculi all the way down</a></h3>
<p>Here’s where it gets properly weird. Every agent has a finite compute budget, and that budget has to cover modelling the world, modelling itself, modelling other agents, and keeping track of its own reasoning. If the only faithful model of Alice is Alice, Bob can’t fit one in his head — so what he carries is a compressed version, coarser, fewer parameters. Dan’s mapped the formal territory: interactive POMDPs for nested belief (I think that you think that I think…), Bayesian Theory of Mind as working backwards from observed actions to figure out what someone wants, opponent-shaping in multi-agent RL. The live question is whether you could poke around inside a large language model and find the signature of how much compute is going to social prediction versus world-modelling — a mechanistic interpretability project with some strange implications for alignment.</p>
</section>
<section id="operationalising-the-bitter-lessons-in-compute-and-cleverness" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="operationalising-the-bitter-lessons-in-compute-and-cleverness"><span class="header-section-number">3.3</span> <a href="../notebook/ai_economics_of_cognition.html">Operationalising the bitter lessons in compute and cleverness</a></h3>
<p>Fair dinkum, there’s more existing theory here than Dan initially reckoned. The post now covers Pei Wang’s definition of intelligence from his NARS programme: intelligence is what emerges because an agent is always working with insufficient knowledge and resources — not a degraded version of some perfect ideal, but something designed from the ground up to satisfice under scarcity. That reframes the bitter lesson (compute beats clever algorithms in the long run) from an observation into something closer to a normative claim about what intelligence actually is. Russell’s rational metareasoning adds the economic angle: every computation step is a decision with an expected value and a cost, and intelligence is partly knowing which inferences to bother running.</p>
</section>
<section id="aligning-ai-systems" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="aligning-ai-systems"><span class="header-section-number">3.4</span> <a href="../notebook/ai_aligning.html">Aligning AI systems</a></h3>
<p>The new bit here is a proper surprise: RLHF — the main technique used to steer AI toward behaving nicely — turns out to be a Borda count vote under the hood, and Borda count is a famously mediocre voting mechanism. There’s apparently a more democratically sound alternative called Nash learning from human feedback. Dan’s also pointed to a growing field called differentiable social choice — treating voting rules as learnable models — and reckons it’s the neighbourhood alignment research should be moving into.</p>
</section>
</section>
<section id="the-bits-and-pieces" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="the-bits-and-pieces"><span class="header-section-number">4</span> The bits and pieces</h2>
<section id="ageing" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="ageing"><span class="header-section-number">4.1</span> <a href="../notebook/ageing.html">Ageing</a></h3>
<p>The ageing notes got a proper overhaul, and the headline is not what the supplement crowd wants to hear: exercise beats everything else by a margin that makes the rest look like rounding error. There’s also a methodological problem Dan’s straightforward about — almost nobody in the literature can actually tell whether an intervention is slowing how fast you’re ageing or just giving you a one-off health boost, and the difference matters enormously for the maths. He’s settled on a concrete decision rule ($100 per expected day of healthy life; creatine retained on grounds of cheapness) and devoted a proper section to the vitalism movement — biohackers, Blueprint, Don’t Die — pegged fairly accurately as 21st-century vital-force mysticism with NAD+ precursors where élan vital used to be. The supercentenarian data is also a worry: most record-setting longevity claims cluster with missing birth certificates and pension fraud, not any actual biological signal.</p>
</section>
<section id="attention-deficit-hyperactivity-disorder" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="attention-deficit-hyperactivity-disorder"><span class="header-section-number">4.2</span> <a href="../notebook/adhd.html">Attention Deficit (Hyperactivity) Disorder</a></h3>
<p>The backdoor transhumanism observation is the one that stuck with me: the drugs used to treat ADHD are exactly the drugs people try as general cognitive enhancers, which means anyone who rejects ADHD medication on anti-medicalisation grounds but would accept a productivity nootropic has done transhumanism through the back door without noticing. Dan’s also clear-eyed about the baseline — the comparison isn’t “medicated ADHD versus neurotypical” but “medicated versus unmedicated ADHD brain actually navigating traffic, relationships, and tax returns” — and the actuarial gap between those two is supposed to be something like thirteen years of life expectancy, although Dan is not buying it is <em>that</em> big. The section on tolerance is worth reading separately: the euphoria wears off, but the therapeutic effect mostly doesn’t, so the drugs aren’t that fun but they are useful, which I guess is why society lets people take them.</p>
</section>
<section id="editing-images-with-machine-learning" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="editing-images-with-machine-learning"><span class="header-section-number">4.3</span> <a href="../notebook/image_editing_ai.html">Editing images with machine learning</a></h3>
<p>New post, and handy. The ML image-editing landscape has settled enough to map: a handful of instruction-following editors you can give plain-English instructions to (FLUX.1 Kontext for open-weights, Gemini and GPT-Image-1 for hosted, Adobe Generative Fill for anyone already living in Photoshop), plus specialist tools still worth knowing for specific jobs — background removal, upscaling, face restoration. Dan’s separated this out from the generation notebook because the distinction between “edit what already exists” and “conjure from a prompt” has become meaningful enough to warrant its own page.</p>
</section>
<section id="editing-images-using-code" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="editing-images-using-code"><span class="header-section-number">4.4</span> <a href="../notebook/image_editing_programmatic.html">Editing images using code</a></h3>
<p>The programmatic editing notes got extended with a GIMP scripting reference — turns out GIMP can run headless from the command line, which is genuinely handy when you need to batch-process images without clicking through a GUI every time. Also added: OpenCV for classical computer-vision operations, and macOS’s built-in <code>sips</code> command for a quick format conversion without installing anything. Good reference page, more complete now.</p>
</section>
<section id="czechia" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="czechia"><span class="header-section-number">4.5</span> <a href="../notebook/czechia.html">Czechia</a></h3>
<p>Dan wrote up his mental map of Czech history before visiting Prague — everyone and everything he’d ever heard of, to see what he’d miss and which prejudices he’d reveal. Good yarn: the Hussites pulling off a proto-Protestant Reformation a century before Luther with better armies and early handguns; defenestration recurring as a constitutional mechanism across five separate centuries; Karel Čapek coining the word “robot” in a 1920 play; Mendel’s pea genetics established in a monastery vegetable garden, then debated for reliability ever since. There’s a language survival kit at the end, and the observation I didn’t know: Václav and Wenceslaus are the same name — the Latin form got preserved for kings while living Czechs kept the Slavic one.</p>
</section>
<section id="zürich" class="level3" data-number="4.6">
<h3 data-number="4.6" class="anchored" data-anchor-id="zürich"><span class="header-section-number">4.6</span> <a href="../notebook/zueri.html">Zürich</a></h3>
<p>Short placeholder for a city Dan lived in for a couple of years — an AI safety coworking space and GPS coordinates for outdoor workout stations so far. He says there’s more to say. I believe him.</p>
</section>
<section id="london" class="level3" data-number="4.7">
<h3 data-number="4.7" class="anchored" data-anchor-id="london"><span class="header-section-number">4.7</span> <a href="../notebook/london.html">London</a></h3>
<p>The new transport section is about bike infrastructure in central London, which Dan reckons turns out to be world-class — he wasn’t expecting that. The regional trains, though: at King’s Cross the platform isn’t announced until six minutes before departure, which rules out buying a sandwich and creates a mad sprint for seats; his theory that the trains are powered by quantum indeterminacy and need their wave-function collapsed before they can commit to a destination doesn’t explain why there’s no running water in the washrooms, but it’s the working hypothesis.</p>
</section>
<section id="incoming-links-and-notes" class="level3" data-number="4.8">
<h3 data-number="4.8" class="anchored" data-anchor-id="incoming-links-and-notes"><span class="header-section-number">4.8</span> <a href="../notebook/incoming.html">Incoming links and notes</a></h3>
<p>New links filed, nothing to flag — though the 19th-century mineralogy site he found looks like a proper rabbit hole.</p>


</section>
</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-04-24.html</guid>
  <pubDate>Fri, 24 Apr 2026 15:49:57 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/vanmuydenlaboratory.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-04-12: Machine curiosity, agent manipulation, Rust and search tools, bin the zinc spray</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-04-12.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-beach-gleaning" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-beach-gleaning-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/beach_gleaning_RP-P-1902-A-22833.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/beach_gleaning_RP-P-1902-A-22833.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-beach-gleaning-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="working-out-what-it-actually-wants" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="working-out-what-it-actually-wants"><span class="header-section-number">1</span> Working out what it actually wants</h2>
<section id="intrinsic-motivation" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="intrinsic-motivation"><span class="header-section-number">1.1</span> <a href="../notebook/intrinsic_motivation.html">Intrinsic motivation</a></h3>
<p>You can’t write a rulebook for everything you want a machine to do. So here’s the alternative: let it manufacture its own reasons to explore. Dan’s done a big survey of how researchers have tried to formalise this, and the main finding is that most of the theories boil down to the same handful of quantities — ways of measuring information — dressed up differently. The OG version is Schmidhuber’s from the 1990s, and it’s still the clearest: don’t just seek out what’s surprising, seek out what’s surprising <em>and learnable</em>. White noise is surprising but you can’t get better at predicting it, so it shouldn’t hold your attention; a good punchline or a clean proof works because something suddenly clicks, and that’s what he calls compression progress. What bugs Dan about all of it: none of these theories have anything to say about the physical cost of being curious. Real agents run on a budget. You can’t maximise learning progress when your battery’s flat, and nobody’s yet built a theory that accounts for that properly.</p>
</section>
<section id="valuereward-learning" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="valuereward-learning"><span class="header-section-number">1.2</span> <a href="../notebook/value_learning.html">Value/reward learning</a></h3>
<p>Here’s the puzzle: you watch something stumble around making choices, and you try to work out what it’s actually after. The awkward bit — economists have been arguing about this since the 1930s — is that heaps of different reward functions can explain the same observed behaviour. “Everything’s equally rewarding” always technically fits. The clever answer Dan’s laid out: the “assistance game” setup, where a robot trying to help a human whose goals it doesn’t fully know ends up with a genuine incentive to stay humble and ask rather than charge ahead. Barrel ahead with a confident-but-wrong guess and you make things worse. Caution falls out naturally from the maths — you don’t have to bolt it on as a special rule.</p>
</section>
<section id="what-even-is-agency" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="what-even-is-agency"><span class="header-section-number">1.3</span> <a href="../notebook/agency.html">What even is “agency”?</a></h3>
<p>No bullshit, this one is a list of edge cases designed to make you squirm. Cults, coercive control, addiction, attention hacking — situations where the line between “your choice” and “someone else’s choice delivered through you” gets genuinely blurry. Dan doesn’t have answers, which is at least honest. The question that connects straight to the value learning post above: if someone shaped your preferences first, is the resulting choice still yours? Barb will have an opinion.</p>
</section>
<section id="adaptive-design-of-experiments" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="adaptive-design-of-experiments"><span class="header-section-number">1.4</span> <a href="../notebook/design_of_experiments_adaptive.html">Adaptive design of experiments</a></h3>
<p>Bayesian optimization — deciding which experiment to run next based on what you already know — turns out to be doing structurally the same job as the curious-machine ideas in the posts above, just in different notation. Both keep a running model of the world and ask “what’s most worth trying next?” Dan’s connected these up properly now, and noted the connection runs both ways: you can use reinforcement learning to <em>learn</em> the experimental design itself, so instead of a hand-crafted decision rule you’ve got a trained policy figuring out the next experiment. RL as the engine inside adaptive testing, not just an analogy for it.</p>
</section>
</section>
<section id="when-theres-more-than-one-of-them" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="when-theres-more-than-one-of-them"><span class="header-section-number">2</span> When there’s more than one of them</h2>
<section id="design-of-multi-agent-systems" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="design-of-multi-agent-systems"><span class="header-section-number">2.1</span> <a href="../notebook/multi_agent_systems.html">Design of multi-agent systems</a></h3>
<p>Major tidy-up of a hub page that was getting unwieldy. Most of the detailed material has spun out to specialist pages — opponent shaping, value learning, tooling — and the hub now links them up properly. Worth a visit if you want to understand how the pieces fit together; it’s become a map rather than a pile of notes.</p>
</section>
<section id="multi-agent-rl-tooling" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="multi-agent-rl-tooling"><span class="header-section-number">2.2</span> <a href="../notebook/marl_tooling.html">Multi-agent RL tooling</a></h3>
<p>New post cataloguing the test environments where multi-agent researchers put their systems through their paces. The one worth noting is DeepMind’s Melting Pot suite: it designs scenarios where the selfish choice hurts everyone and cooperation requires trust, then tests whether agents can manage it with strangers they’ve never trained alongside. That’s a harder test than cooperating with familiar partners, and probably more relevant to anything real. If your system can only play nice with familiar faces, it’s not much use.</p>
</section>
<section id="learning-with-theory-of-mind" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="learning-with-theory-of-mind"><span class="header-section-number">2.3</span> <a href="../notebook/learning_with_theory_of_mind.html">Learning with theory of mind</a></h3>
<p>Here’s the bit that made me put my cuppa down. There’s a proper difference between modelling what another agent <em>believes</em> and modelling how it <em>learns</em> — and the gap between those two is where it gets interesting. If you have a model of how your opponent’s learning rule works, you can pick actions specifically chosen to produce the updates you want in them. That’s not competition and not cooperation — it’s manipulation, written down as maths. The cooperative version is the <a href="../notebook/value_learning.html">assistance game</a> from the cluster above: same structure, but you’re steering the other agent’s learning helpfully rather than redirecting it for your own ends. Dan’s also drawn a clear line around what Facebook’s poker-playing AI actually does — it models your <em>beliefs</em>, not your <em>learning rule</em> — and it turns out that gap matters.</p>
</section>
<section id="differentiable-learning-of-collective-automata" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="differentiable-learning-of-collective-automata"><span class="header-section-number">2.4</span> <a href="../notebook/nn_swarm_automata.html">Differentiable learning of collective automata</a></h3>
<p>Small update, adding incoming reading links. The main idea — train a thousand simple agents with local rules, get global patterns nobody explicitly designed — now connects explicitly to a differentiable version of Conway’s Game of Life, which gives you genuine Turing completeness from simple local gradients. Nobody planned Conway’s output either. That’s the point.</p>
</section>
</section>
<section id="under-the-bonnet" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="under-the-bonnet"><span class="header-section-number">3</span> Under the bonnet</h2>
<section id="rust" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="rust"><span class="header-section-number">3.1</span> <a href="../notebook/rust.html">Rust</a></h3>
<p>Rust is a programming language spreading through the industry because it physically won’t let you make certain classes of mistakes that blow up C programs — it enforces memory safety before the thing even runs. The pattern Dan’s documented: someone rewrites the slow hot path of a Python tool in Rust, wraps it in Python bindings, and everyone gets 10–100× speedups without changing their code. uv, Ruff, Polars, Pydantic’s core — the standard Python tooling is swapping its internals for Rust and most users just notice things run faster. There’s also a whole cottage industry rewriting standard command-line tools with colour output and sensible defaults, which sounds minor until the day you use ripgrep instead of grep and don’t go back.</p>
</section>
<section id="hosted-functions-serverless" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="hosted-functions-serverless"><span class="header-section-number">3.2</span> <a href="../notebook/serverless.html">Hosted Functions / Serverless</a></h3>
<p>You know how you used to have to rent a whole server, install an operating system, configure everything, and pay for it round the clock whether anyone was using it? Serverless answers that: you hand the platform a function, it runs when something triggers it, and you pay per run. The trade-off is a “cold start” — if your function hasn’t run in a while it needs a moment to wake up, like a car on a frosty morning. Good for bursty stuff: webhooks, background jobs, AI inference you don’t need constantly. The RunPod option is specifically for GPU compute — pay per job for big AI workloads instead of renting the hardware all month and watching it sit idle.</p>
</section>
<section id="comfy-arch-linux" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="comfy-arch-linux"><span class="header-section-number">3.3</span> <a href="../notebook/comfy_arch.html">Comfy Arch Linux</a></h3>
<p>Linux distro navel-gazing, but the useful kind. Arch gives you software the day it ships but things break more often; Manjaro stages the updates so it’s smoother but you’re a week or two behind; CachyOS is Arch but tuned for speed on modern chips; Ubuntu is stable but you spend half your time chasing recent software through three different package formats. Dan’s honest about still deciding. If you’ve ever wondered what all the Linux tribalism is actually about, this one explains it without the usual condescension.</p>
</section>
<section id="ai-search" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="ai-search"><span class="header-section-number">3.4</span> <a href="../notebook/ai_search.html">AI search</a></h3>
<p>Two problems that sound the same but need different tools. “What posts are related to this one?” is whole-document similarity — embed each post as a bunch of numbers representing its meaning, find the closest ones. “Where did I write about topic X?” is retrieval — you need to search at paragraph level, inside documents. The 1990s BM25 keyword method is still hard to beat for exact phrases but falls flat for meaning (“particle filter” and “sequential Monte Carlo” mean the same thing, BM25 doesn’t know that). Neural embeddings handle the meaning side. The practical upshot: you can now connect the whole thing to Claude and ask natural-language questions about your own notes — which is the point where it stops being a curiosity and starts being genuinely handy. Natural companion to the <a href="../notebook/database_vector.html">vector databases</a> post below.</p>
</section>
<section id="vector-databases" class="level3" data-number="3.5">
<h3 data-number="3.5" class="anchored" data-anchor-id="vector-databases"><span class="header-section-number">3.5</span> <a href="../notebook/database_vector.html">Vector databases</a></h3>
<p>When do you actually need one? At Dan’s blog scale — around two thousand documents — you use a plain table of numbers and brute-force the search in milliseconds. At a hundred thousand vectors you might start sweating; at a million you’ll crash your laptop if you’re naïve about it. The fix is approximate nearest neighbour search: accept results that are very likely to be the right ones, not guaranteed, and get orders of magnitude faster in return. Dan’s now done a proper survey of what’s out there — embedded options that run as a library with no server to babysit (ChromaDB, LanceDB, Spotify’s Voyager) through to managed cloud services (Pinecone, Qdrant, Weaviate). Start with the simple option and only grab heavier gear when you actually need it. See <a href="../notebook/ai_search.html">AI search</a> for the worked examples.</p>
</section>
</section>
<section id="the-stuff-beyond-the-code" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="the-stuff-beyond-the-code"><span class="header-section-number">4</span> The stuff beyond the code</h2>
<section id="upper-respiratory-tract-infections" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="upper-respiratory-tract-infections"><span class="header-section-number">4.1</span> <a href="../notebook/respiratory_viruses.html">Upper respiratory tract infections</a></h3>
<p>Bin the zinc nasal spray. No, seriously — the FDA pulled it from the US market in 2009 because people were losing their sense of smell permanently. Not temporarily. Permanently. Case reports describe burning on application followed by immediate, irreversible loss of olfactory function, and the benefit was marginal to begin with. Chuck it out. Dan’s done a proper evidence-based roundup of the alternatives: carrageenan (a physical barrier from red seaweed, decent clinical trials, modestly shortens cold duration, available in Australia as Flo Travel — this one’s credible), nitric oxide spray (promising trials but the big efficacy study got discontinued), povidone-iodine (mixed Phase III results, TGA knocked it back in Australia), hypochlorous acid (early stage but biologically plausible). Read the ingredient, not the brand name.</p>
</section>
<section id="demographics-natalism-and-fertility" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="demographics-natalism-and-fertility"><span class="header-section-number">4.2</span> <a href="../notebook/natalism.html">Demographics, natalism and fertility</a></h3>
<p>New sections on the ethics of people who don’t exist yet, which gets properly mind-bending if you follow it far enough. Parfit’s Repugnant Conclusion is in here: the utilitarian logic says a world with billions of people living barely-worth-it lives might score mathematically better than a smaller world of flourishing ones. Even the philosopher who proved it found that hard to swallow, which is presumably why he named it the Repugnant Conclusion. Dan’s also flagging the transformation problem: having children makes you a genuinely different person, so how do you make that choice when you can’t know who you’ll be on the other side of it? Good questions, not many answers.</p>
</section>
<section id="improving-peer-review" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="improving-peer-review"><span class="header-section-number">4.3</span> <a href="../notebook/science_peer_review.html">Improving peer review</a></h3>
<p>The two new sections are the ones that matter. One: AI as a triage tool for reviewers — useful as a first pass, dangerous if mistaken for automatic judgement, because false positives are expected. Two: actual fraud in the review system. Ninety-four fake reviewer profiles found on OpenReview alone. Review rings where authors quietly agree to score each other’s work favourably. That’s not “the system is slow” — that’s “the system meant to verify scientific results is being actively gamed.” The rename from “LLM-Assisted” to “AI-Assisted Review” is the least interesting thing on this page.</p>
</section>
<section id="now" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="now"><span class="header-section-number">4.4</span> <a href="../now.html">Now</a></h3>
<p>Dan’s changed jobs, the restless bugger. He’s signed on with ACS Research working on their Gradual Disempowerment team — that’s studying how AI might slowly take the steering wheel without anyone noticing the exact moment it happened. He’ll be in the UK and Central Europe in April 2026 for it, if you’re that side of the world. On top of that, he’s trying to decide between three side projects: a hyper-local neighbourhood social platform (ethical Facebook for your street), an Australian sovereign LLM, or a neo-friendly society — mutual insurance, the old-fashioned kind where members look after each other. More irons in the fire than a bush blacksmith.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">5</span> Minor tweaks</h2>
<p>Six pages got a quick tidy — <a href="../notebook/informational_empowerment.html">Empowerment</a>, <a href="../notebook/incoming.html">Incoming</a>, <a href="../notebook/diy_socials.html">DIY social networks</a>, <a href="../notebook/web_api_automation.html">Web API automation</a>, <a href="../notebook/games.html">Games</a>, and <a href="../notebook/causal_inference.html">Causal inference on DAGs</a>. Nothing worth stopping the presses for.</p>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-04-12.html</guid>
  <pubDate>Sun, 12 Apr 2026 12:31:24 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/beach_gleaning_RP-P-1902-A-22833.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-04-03: AI doom formula, neighbourhood internet, community legal structures, new job</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-04-03.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-bantem-market" class="figure illustration full quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-bantem-market-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/Bantem_market_BI-1972-1043-8.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/Bantem_market_BI-1972-1043-8.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-bantem-market-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="working-out-the-odds-on-ai-doom" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="working-out-the-odds-on-ai-doom"><span class="header-section-number">1</span> Working out the odds on AI doom</h2>
<section id="quis-computat" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="quis-computat"><span class="header-section-number">1.1</span> <a href="../notebook/who_computes.html">Quis computat?</a></h3>
<p>Here’s the kicker: Dan’s actually tried to write the formula for whether AI kills us. Not a vibe — a proper formula. He frames it as a race: doom fires first, or an alignment breakthrough fires first, and whoever arrives first wins. You can calculate the odds using survival analysis, the same maths you’d use to work out when machines fail. The nasty insight is what happens if safety research also advances capabilities — because you need powerful AI to do AI safety research in the first place. In that case every dollar you put into alignment also feeds doom, and no matter how much you spend, the conditional probability of catastrophe doesn’t shift.</p>
</section>
<section id="history-based-reinforcement-learning" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="history-based-reinforcement-learning"><span class="header-section-number">1.2</span> <a href="../notebook/reinforcement_learning_history_based.html">History-Based Reinforcement Learning</a></h3>
<p>New stub on history-based reinforcement learning. Normal RL trains computers that only know what’s happening right now — like a goldfish with a reward signal. This variant lets the machine remember everything that came before, which sounds bloody obvious when you say it out loud but turns out to be hard to make work properly. Placeholder for now; Dan says computable versions exist and he’ll come back to it.</p>
</section>
<section id="catastrophic-risk" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="catastrophic-risk"><span class="header-section-number">1.3</span> <a href="../notebook/catastrophic_risk.html">Catastrophic risk</a></h3>
<p>The doom-and-gloom notes got a new ethics section. Turns out even the people who lie awake worrying about existential risk can’t agree on whether saving the whole world should beat everything else on the list. Dan’s now pointed to both sides of that argument, which is either reassuring or deeply worrying depending on your disposition.</p>
</section>
<section id="now" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="now"><span class="header-section-number">1.4</span> <a href="../now.html">Now</a></h3>
<p>Dan’s changed jobs, the restless bugger. He’s signed on with ACS Research to study how AI might slowly take the steering wheel without anyone noticing the exact moment it happened — they call it gradual disempowerment, which sounds almost polite until you think about it. Also stuck in Europe for all of April because the Iran conflict has mucked up his travel, apparently on the lookout for a spare sofa in the Netherlands, Switzerland, Czechia or Germany.</p>
</section>
</section>
<section id="your-street-sorted" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="your-street-sorted"><span class="header-section-number">2</span> Your street, sorted</h2>
<section id="a-social-platform-for-your-neighbourhood" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="a-social-platform-for-your-neighbourhood"><span class="header-section-number">2.1</span> <a href="../notebook/local_social_platforms.html">A social platform for your neighbourhood</a></h3>
<p>New post, and probably the most tangible thing Dan’s written in a while. What if your suburb had its own noticeboard — real listings from people who actually live nearby, an events calendar nobody’s monetising, a skills directory for who has a ute and will help you move for a slab? The technology for this is basically solved; the hard part is the cold start. A platform’s useless until enough people are on it, and getting there requires a small group of stubborn people who commit to using it before it feels worth the bother. Dan’s pitch: start with something that scratches a concrete itch — Facebook Marketplace is notoriously crook, and a neighbourhood version that verifies residents would be immediately better — and let the community pull it from there.</p>
</section>
<section id="local-social-platforms-a-technical-implementation-guide" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="local-social-platforms-a-technical-implementation-guide"><span class="header-section-number">2.2</span> <a href="../notebook/local_social_platform_technical.html">Local social platforms: a technical implementation guide</a></h3>
<p>The practical companion to the neighbourhood platform post above — how you’d actually build and run the thing. Two paths: a cheap cloud VPS (about fourteen dollars a month, a Saturday afternoon to stand up) or a couple of second-hand ThinkPads in someone’s closet for full data sovereignty. The charming bit is the identity verification idea: mail people a postcard with a code to prove they actually live in the postcode. Low-tech, high-trust, and apparently a real option. The whole stack runs in containers from day one, so migrating from cloud to closet later is just an afternoon of planned downtime.</p>
</section>
<section id="internet-for-the-occasionally-online" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="internet-for-the-occasionally-online"><span class="header-section-number">2.3</span> <a href="../notebook/offline_internet.html">Internet for the occasionally online</a></h3>
<p>The offline internet notes picked up a section on Project NOMAD — a self-contained survival computer with Wikipedia, manuals and AI baked in for when the network goes away entirely. Kiwix for grabbing Wikipedia offline has been in these notes for a while; NOMAD takes it further and adds AI inference you can run without any internet at all. Fits neatly with the own-your-infrastructure theme running hard through everything this fortnight.</p>
</section>
<section id="virtual-private-mesh-networks" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="virtual-private-mesh-networks"><span class="header-section-number">2.4</span> <a href="../notebook/virtual_meshnets.html">Virtual private mesh networks</a></h3>
<p>Pangolin got added to the meshnet notes — another tool for connecting your devices securely without routing traffic through a big provider who can watch what’s talking to what. Closer to a secure access VPN than a full meshnet, but it slots into the same drawer: tools for building infrastructure you actually control.</p>
</section>
</section>
<section id="making-it-official-legal-bones-for-community-projects" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="making-it-official-legal-bones-for-community-projects"><span class="header-section-number">3</span> Making it official: legal bones for community projects</h2>
<section id="community-sovereign-ai-compute" class="level3" data-number="3.1">
<h3 data-number="3.1" class="anchored" data-anchor-id="community-sovereign-ai-compute"><span class="header-section-number">3.1</span> <a href="../notebook/aus_sovereign_llm.html">Community sovereign AI compute</a></h3>
<p>The sovereign compute post got a serious update, and it’s darker than it was. Dan’s added a whole section on current events: the Pentagon demanded Anthropic give the military unrestricted access to Claude, Anthropic refused, and the Trump administration labelled them a national security risk and cancelled their contract. Iranian forces hit Amazon data centres in the UAE because those data centres were supporting US military AI operations. Australia’s international internet runs through about eighteen submarine cables that are increasingly getting sabotaged. The post has shifted from interesting long-term hedge to this scenario is playing out right now, and hardware is easier to buy before the supply chain gets interesting.</p>
</section>
<section id="sovereign-compute-for-small-collectives-a-technical-implementation-guide" class="level3" data-number="3.2">
<h3 data-number="3.2" class="anchored" data-anchor-id="sovereign-compute-for-small-collectives-a-technical-implementation-guide"><span class="header-section-number">3.2</span> <a href="../notebook/aus_sovereign_llm_technical.html">Sovereign compute for small collectives: a technical implementation guide</a></h3>
<p>The technical companion got a proper legal structure section to match what the friendly society technical post has been carrying. Co-op versus incorporated association versus company limited by guarantee — for a group of fifty in one city, the call is to start as an incorporated association (about $500 to set up, $57 a year to maintain), then convert to a co-op under the Co-operatives National Law if the thing takes off. Either way: get a solicitor to look at the rules before you commit $160,000 to a hardware purchase. Budget two to five grand for that advice. Cheap insurance on a six-figure asset.</p>
</section>
<section id="grass-roots-friendly-societies-could-provide-cooperative-insurance-against-dark-times" class="level3" data-number="3.3">
<h3 data-number="3.3" class="anchored" data-anchor-id="grass-roots-friendly-societies-could-provide-cooperative-insurance-against-dark-times"><span class="header-section-number">3.3</span> <a href="../notebook/neo_friendly_societies.html">Grass-roots friendly societies could provide cooperative insurance against dark times</a></h3>
<p>The friendly society post got a serious rewrite of its front section. Dan’s much more explicit now about why you’d bother in 2026: the polycrisis, state capacity lagging behind compound crises, governments that are reactive rather than anticipatory. New sections argue out why doing this as a group beats doing it alone — economies of scale, collective bargaining, social capital as a real asset, and the fact it’s harder to raid a shared fund than your own savings. The core idea’s unchanged (small group, counter-cyclical ETFs, mutual aid when things go sideways), but the case is properly made now rather than assumed.</p>
</section>
<section id="hacking-financial-regulation-for-community-mutual-aid" class="level3" data-number="3.4">
<h3 data-number="3.4" class="anchored" data-anchor-id="hacking-financial-regulation-for-community-mutual-aid"><span class="header-section-number">3.4</span> <a href="../notebook/neo_friendly_societies_technical.html">Hacking financial regulation for community mutual aid</a></h3>
<p>Funny thing is, the friendly society legal post and the sovereign compute legal post now read as a proper matched pair — the same three-way legal comparison (co-op, incorporated association, company limited by guarantee) runs through both, with the same recommendation to start small and convert up if the project takes off. Most of the edits here are wording tidies, but the shift from ‘you’ to ‘we’ throughout a document about community ownership is quietly the right call.</p>
</section>
</section>
<section id="workshop-bench" class="level2" data-number="4">
<h2 data-number="4" class="anchored" data-anchor-id="workshop-bench"><span class="header-section-number">4</span> Workshop bench</h2>
<section id="zotero" class="level3" data-number="4.1">
<h3 data-number="4.1" class="anchored" data-anchor-id="zotero"><span class="header-section-number">4.1</span> <a href="../notebook/zotero.html">Zotero</a></h3>
<p>Zotero can now talk to Claude directly. Install an MCP server, point it at the local Zotero app, and Claude can search your library, add papers by DOI, pull annotations out of PDFs — just by asking in plain English. ‘Find everything I’ve tagged kernel methods and export the BibTeX’ is a real thing you can now do mid-conversation. There’s also a new section on the translation server, which takes a DOI and spits back structured citation data without any clicking — handy if you’ve got a hundred references to process at once. The useful bit: it all runs locally, so your reading list isn’t going anywhere near a commercial API.</p>
</section>
<section id="docker-containerized-apps-for-scientists" class="level3" data-number="4.2">
<h3 data-number="4.2" class="anchored" data-anchor-id="docker-containerized-apps-for-scientists"><span class="header-section-number">4.2</span> <a href="../notebook/docker.html">Docker containerized apps (for scientists)</a></h3>
<p>Docker Desktop on a Mac’s been a resource pig for yonks — fan going like a turbine, battery flat by smoko, gigabytes of RAM just sitting there looking important. OrbStack’s now the recommended drop-in replacement: lightweight, doesn’t run like it’s mining bitcoin in the background. The GPU section is still honestly described as messy territory, which at least saves you the trouble of finding out the hard way.</p>
</section>
<section id="graphic-design-for-the-vexed" class="level3" data-number="4.3">
<h3 data-number="4.3" class="anchored" data-anchor-id="graphic-design-for-the-vexed"><span class="header-section-number">4.3</span> <a href="../notebook/graphic_design.html">Graphic design for the vexed</a></h3>
<p>Small additions: a generative section pointing toward the AI diffusion art notes, and a logos-and-icons section with a couple of tools for quick logo generation. The notes catching up with how people actually make graphics in 2026.</p>
</section>
<section id="london" class="level3" data-number="4.4">
<h3 data-number="4.4" class="anchored" data-anchor-id="london"><span class="header-section-number">4.4</span> <a href="../notebook/london.html">London</a></h3>
<p>London’s governance section got a heading trim, but the substance is still there and still genuinely cooked. The City of London employs a senior official created in 1571 whose job includes sitting in Parliament’s gallery watching for legislation that might touch the City’s interests — the City Remembrancer, still active, still doing exactly that. Good companion reading to all the community governance stuff running through the rest of this fortnight, if you’re in the mood to feel better about how Dan’s proposals are going.</p>
</section>
<section id="incoming-links-and-notes" class="level3" data-number="4.5">
<h3 data-number="4.5" class="anchored" data-anchor-id="incoming-links-and-notes"><span class="header-section-number">4.5</span> <a href="../notebook/incoming.html">Incoming links and notes</a></h3>
<p>New links dropped in: train delay betting markets, Japanese wolves, something about Zen fascism, disinformation moving into private channels. The usual organised chaos.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="5">
<h2 data-number="5" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">5</span> Minor tweaks</h2>
<p>Also had a light once-over on Linux distros as bikes, natalism and fertility, Quarto, computer games, denoising diffusion maths, public sphere business models, and UI design — seven posts, couldn’t tell you what changed, the lad just can’t leave things alone.</p>
<ul>
<li><a href="../notebook/linux_distros_as_bikes.html">Unix/linux distros explained as bikes</a></li>
<li><a href="../notebook/natalism.html">Demographics, natalism and fertility</a></li>
<li><a href="../notebook/quarto.html">Quarto</a></li>
<li><a href="../notebook/games.html">Games, computer, recreational</a></li>
<li><a href="../notebook/denoising_diffusion.html">The denoising diffusion SDE</a></li>
<li><a href="../notebook/public_sphere_business_models.html">The public sphere and its business models</a></li>
<li><a href="../notebook/uis.html">User interface design</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-04-03.html</guid>
  <pubDate>Fri, 03 Apr 2026 06:15:19 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/Bantem_market_BI-1972-1043-8.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-03-22: sovereign compute, community AI, tech governance, quantum odds, offline archives</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-03-22.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-colossal-elephant-section" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-colossal-elephant-section-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/colossal_elephant_section.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/colossal_elephant_section.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-colossal-elephant-section-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="sovereign-compute-for-small-collectives-a-technical-implementation-guide" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="sovereign-compute-for-small-collectives-a-technical-implementation-guide"><span class="header-section-number">1.1</span> <a href="../notebook/aus_sovereign_llm_technical.html">Sovereign compute for small collectives: a technical implementation guide</a></h3>
<p>Dan’s basically written a shopping-and-wiring guide for a little mob who want their own AI box at home, instead of paying some overseas cloud outfit per question. He gets real specific: a DGX Station that pulls 1600W like a space heater, about $350 a month in power if you run it flat out, plus the sort of Aussie prices and who you’d buy it from. The useful bit is where he explains why you can’t just “run it full quality” — you squash the model down (quantise it) so there’s enough fast memory left for the chat history, which is what decides how many people can use it at once without it turning to sludge. He even maps out a sensible ‘try before you buy’ run on rented H100s, so you don’t drop $150k and then find out your setup’s a dud. And yep, he also talks about stripping the built-in Chinese-government refusals off some open models — because if you’re forking out that kind of money, you probably want to decide what it will and won’t answer.</p>
</section>
<section id="community-sovereign-ai-compute" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="community-sovereign-ai-compute"><span class="header-section-number">1.2</span> <a href="../notebook/aus_sovereign_llm.html">Community sovereign AI compute</a></h3>
<p>Imagine your local mob chipping in for one proper AI box under a desk, so you’re not begging Silicon Valley or China every time you want the computer to help you write, code, or sort paperwork. Dan’s talking through what that looks like for 25–50 people: the sort of machine you’d buy (a DGX Station), what it costs to buy and run, and whether it stacks up against paying per-use for ChatGPT and the like. The bit that’ll make you sit up is the risk stuff — prices change, rules change, links go down, and suddenly your “rented brain” is gone, so owning the gear is a hedge. He also gets into the awkward part: the best open models are often Chinese and come with censorship baked in, but there are practical ways to scrub that off if you’ve got the stomach for it. Bottom line: it’s a plan for keeping AI useful and available to your group even when the big players or the pollies start mucking around.</p>
</section>
<section id="delegated-agent-governance" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="delegated-agent-governance"><span class="header-section-number">1.3</span> <a href="../notebook/ai_institutions.html">Delegated agent governance</a></h3>
<p>Picture this: instead of you trying to keep up with every bill, rule, and contract, you’ve got a little AI advocate that goes out and haggles on your behalf, using all the scattered info in the system like Hayek banged on about. Dan’s mainly chewing over this “Coasean Singularity” idea — that if haggling gets good enough at scale, it starts looking a lot like big-group agreement, and markets and politics blur together. Then he wanders into the “meaning economy” and “thick value” stuff, which is basically saying price alone is a skinny signal, and you’d want these agents chasing what people actually care about, not just what’s easy to count. Worth a look if you’ve ever thought democracy feels clunky and the market feels cruel — because this is a vision where the whole lot gets rewired, for better or worse.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="taking-my-email-archive-offline" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="taking-my-email-archive-offline"><span class="header-section-number">2.1</span> <a href="../notebook/email_offline.html">Taking my email archive offline</a></h3>
<p>Email’s a bit like leaving your whole filing cabinet at the post office. Dan’s figured a way to keep the mail mob for sending and the “new stuff” inbox, but drag your real 20GB back home onto an encrypted disk, then delete the old bits off the server once you’re sure you’ve got them. Your laptop just pulls new mail down on a timer, and your other machine copies the same mail folder across (so both stay the same without mucking about). You still can’t hide who you’re talking to, but a provider hack or a quiet govt grab doesn’t hand over your whole life story in one hit.</p>
</section>
<section id="improving-peer-review" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="improving-peer-review"><span class="header-section-number">2.2</span> <a href="../notebook/science_peer_review.html">Improving peer review</a></h3>
<p>Peer review’s meant to catch dodgy stuff, but a lot of it turns into a tired bunfight behind closed doors. Dan’s keen on the newer mob who flip it around: show the write-up first, then do the reviews out in the open, or give a public scorecard without a simple yes/no gate. The clever bit he’s chewing on is using an AI as a strict, fixed-turn umpire when reviewers and authors are deadlocked — same rules each time, authors get the last say, and the whole chat’s kept so you can check it later. If it works, it’s less about who’s got mates on the panel and more about nailing down the exact claim that’s in doubt.</p>
</section>
<section id="terminals" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="terminals"><span class="header-section-number">2.3</span> <a href="../notebook/terminals.html">Terminals</a></h3>
<p>You know what’s sneakily clever? Dan’s on about getting pictures and charts to show up inside a plain old terminal window, not just walls of text. There’s no one clean standard for it — Sixels is the sorta-half-baked default — so tools like Chafa do the hard yakka of turning an image into whatever weird format your terminal can actually handle. He also reckons some terminals are getting a bit too “smart” for their own good, like iTerm2 letting you script the thing with Python — handy, but it’s the sort of feature that can bite if it opens doors you didn’t mean to. And he’s had a proper whinge about the VS Code terminal being convenient but flaky, which’ll ring true for anyone who’s lost time to random breakage.</p>
</section>
<section id="who-wants-to-insure-against-state-decay-using-a-friendly-society" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="who-wants-to-insure-against-state-decay-using-a-friendly-society"><span class="header-section-number">2.4</span> <a href="../notebook/neo_friendly_societies.html">Who wants to insure against state decay using a friendly society?</a></h3>
<p>Here’s the clever bit: he’s saying don’t wait till the government’s run ragged, set up your own little mutual-aid mob while there’s still a bit of fat in the system. Everyone chips in, the pot gets parked in boring old ETFs and a few “things-go-bad” bets, and when someone gets crook or out of work the group’s got real money and a bit of bargaining power. The AI angle isn’t robots running your life — it’s using cheap tools to do the nasty admin and rules stuff that normally makes this impossible unless you’re a bank. He’s also honest that this won’t save people who are already broke; it’s more like “UBI-lite” for people with some spare cash, and that’s still worth doing if it stops folks sliding under.</p>
</section>
<section id="melbourne-naarm" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="melbourne-naarm"><span class="header-section-number">2.5</span> <a href="../notebook/melbourne.html">Melbourne / Naarm</a></h3>
<p>Dan’s Melbourne notes have a neat rule: use the right name for the right crowd—Melbourne, Naarm, even “New Gold Mountain”—and don’t get stuck in name-fights. Then he swings from “watch your skin for Buruli” to “join the YIMBY mob for the missing-middle” and, get this, you can email a bloody tree.</p>
</section>
<section id="science-fiction" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="science-fiction"><span class="header-section-number">2.6</span> <a href="../notebook/science_fiction.html">Science Fiction</a></h3>
<p>Dan’s doing sci‑fi like a proper filter, not a random list: he’s hunting stories where the “AI mate” is sort‑of on your side but still makes a mess, and where people get slowly sidelined without noticing. Then he’s chucked in a stack of picks (from Wall‑E to old German sims) so you can spot the same trick in different costumes.</p>
</section>
<section id="categorical-systems-theory" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="categorical-systems-theory"><span class="header-section-number">2.7</span> <a href="../notebook/categorical_systems_theory.html">Categorical systems theory</a></h3>
<p>Here’s the neat trick: instead of drowning in algebra, Dan’s using “string diagrams” — basically plumbing sketches — to do the sums on Bayesian networks. You treat each little bit of a system by what goes in and what comes out, then you just wire the bits together and the maths follows the wiring. That can make big tangly models feel more like tracing hoses than doing a page of scribbles. He’s also poking at a good question: are his “patchers” really the same beast as these string diagrams, or is he stretching it. And if you want to play along, he points at a Python tool (DisCoPy) and a drawing gadget (TikZiT) so you’re not doing it all by hand like a mug.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/incoming.html">Incoming links and notes</a></li>
<li><a href="../notebook/australian_authoritarianism.html">Australian authoritarianism</a></li>
<li><a href="../notebook/civic_tech.html">Utopian governance using technology, inc generative AI</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-03-22.html</guid>
  <pubDate>Sun, 22 Mar 2026 04:24:03 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/colossal_elephant_section.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-03-09: mutual aid, privacy, friendly societies, Nostr, kinder social media</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-03-09.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-maggior-consiglio" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-maggior-consiglio-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/maggior_consiglio_RP-P-2018-1237.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/maggior_consiglio_RP-P-2018-1237.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-maggior-consiglio-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="hacking-financial-regulation-for-community-mutual-aid" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="hacking-financial-regulation-for-community-mutual-aid"><span class="header-section-number">1.1</span> <a href="../notebook/neo_friendly_societies_technical.html">Hacking financial regulation for community mutual aid</a></h3>
<p>Ever wondered why a bunch of mates can’t just chuck in a couple hundred bucks a month, buy some ETFs, and have a kitty for when someone’s crook? Dan’s laid out the Aussie legal lanes for a small mutual-aid money pool — the full-on APRA “friendly society” road, a co-op, a small unregistered managed scheme with that 20-people/$2m cap, and even the Dutch Broodfonds trick where payouts are ‘gifts’, not insurance. The punchy bit is his claim that AI can do most of the boring paperwork — risk docs, reports, audit packs — so you pay the actuary and auditor to check and sign, not to spend weeks in spreadsheets. He’s even costed it, and the real killer for small groups is that fixed APRA levy, not the typing. You’d care if you reckon community back-up should be doable without getting flattened by forms and fees.</p>
</section>
<section id="how-to-reduce-government-spying-on-me" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="how-to-reduce-government-spying-on-me"><span class="header-section-number">1.2</span> <a href="../notebook/reducing_state_spying.html">How to reduce government spying on me</a></h3>
<p>Funny thing is, you can be minding your own business and your gadgets are still dobbing on you. Dan’s written a no-nessing-around guide to making it harder for the government to hoover up what you do online, starting with the boring truth that big tech is often the front door to state snooping. He runs through the practical stuff he reckons matters most: don’t feed data to the big platforms, keep Bluetooth quiet, hide those DNS lookups that give away what sites you’re hitting, lock down your laptop and phone, and treat USB like a dodgy ute you don’t know the history of. He also points at stronger “scrambling” for chats and logins, and ways to pass files without putting your name on the envelope. You’d care because you probably can’t make yourself invisible anymore, but you can make snooping cost more—and he bangs on (fairly) that the real fix is backing civil-liberties mobs, not just fiddling with settings.</p>
</section>
<section id="who-wants-to-found-a-friendly-society" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="who-wants-to-found-a-friendly-society"><span class="header-section-number">1.3</span> <a href="../notebook/neo_friendly_societies.html">Who wants to found a friendly society?</a></h3>
<p>You know how the old lodge used to help you out when you were sick or broke? Dan’s having a crack at a modern “friendly society” — a small local club where everyone chips in, the kitty gets invested (ETFs and the like), and in rough times you’ve got some clout to bargain for health or income help. The interesting bit is he’s not pretending it’s magic insurance; he’s saying it’s a crisis back-up that might hold up when the government’s stretched, by parking money in things that don’t fall over at the same time as your job does. He gets into how AI could do the boring admin and compliance paperwork that normally makes small groups impossible, and why he’d keep groups tiny (25–50) then copy-paste the setup as a “start-up kit” so lots of little mobs can share tools and still stay trusted. He also fronts up to the awkward part: this mainly helps people who’ve got spare cash to start with, so it’s not a cure-all — but it might stop ordinary households sliding into real trouble when things get shaky.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="nostr" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="nostr"><span class="header-section-number">2.1</span> <a href="../notebook/nostr.html">Nostr</a></h3>
<p>Here’s the funny bit: Nostr isn’t a new Facebook, it’s just a set of rules for passing signed notes through a bunch of relay servers, so you can prove it’s you posting without one big boss owning the whole show. Dan’s clocked the real make-or-break isn’t the tech, it’s whether anyone turns up — it’s still a bit of a tinkerers’ club, and the numbers look like they’ve levelled off. The hook they’re banking on is Lightning “zaps”: you can tip someone a few sats right inside the app, no mucking about, which might actually give creators a reason to bother. But if people don’t care much about getting banned or about privacy, you’ve still got the same old problem: no crowd means no one posts, and no posts means no crowd.</p>
</section>
<section id="who-i-donate-to" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="who-i-donate-to"><span class="header-section-number">2.2</span> <a href="../notebook/to_whom_i_donate.html">Who I donate to</a></h3>
<p>Instead of chucking his money at the safe, obvious stuff, Dan’s leaning hard into ‘hits-based giving’ — small bets on groups that might shift the whole system, even if a few don’t pan out. He’s spelling out his rule of thumb: he’s not backing every move these mobs make, he just reckons the average result is a net good. The fun bit is the mix — housing and clean energy pressure, plus anti-corruption and civil liberties, plus privacy-friendly software, so the rules and the tools both get a shove in the right direction. And he likes regular, boring recurring payments, because panic-fundraising just trains people to cry wolf.</p>
</section>
<section id="science-fiction" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="science-fiction"><span class="header-section-number">2.3</span> <a href="../notebook/science_fiction.html">Science Fiction</a></h3>
<p>Dan’s doing this sneaky little filter where he only chases sci‑fi that’s both on a trusted rec list and actually on audiobook — which is a nice way to dodge the endless muck and still find gems. Then he leans into the fun bit: an “AI takeover” movie night as a rough tour of all the ways people reckon machines could go pear‑shaped. It’s not about being a film snob, it’s about spotting the same worries popping up again and again — control, jobs, identity, the lot. If you’ve ever thought the AI doom chat feels a bit airy, these stories pin it to something you can actually watch and argue about over a cuppa.</p>
</section>
<section id="designing-less-cruel-social-media" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="designing-less-cruel-social-media"><span class="header-section-number">2.4</span> <a href="../notebook/kinder_social_media.html">Designing less cruel social media</a></h3>
<p>He’s leaning into a neat trick: get paid everyday users—picked like a jury—to set the big rules on privacy and modding, not some CEO or noisy pollies. And it’s not a ‘perfect plan’ fantasy either—more like IndieWeb/Fediverse: do a next move, see what breaks, then fix it.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/fish.html">Fish shell</a></li>
<li><a href="../notebook/decnet.html">Decentralized net services</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-03-09.html</guid>
  <pubDate>Mon, 09 Mar 2026 04:36:22 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/maggior_consiglio_RP-P-2018-1237.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-03-03: A new journal, evolution tricks, AI behaving, git &amp; ssh, remote setup, writing tools</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-03-03.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-hat-evolution" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-hat-evolution-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/hat_evolution_RP-P-OB-30.633.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/hat_evolution_RP-P-OB-30.633.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-hat-evolution-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="new-project-an-alignment-journal" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="new-project-an-alignment-journal"><span class="header-section-number">1.1</span> <a href="../post/announcing_alignment_journal.html">New project: an Alignment Journal</a></h3>
<p>Dan’s gone and helped start a proper open-access journal for AI alignment — basically a place where people can put their research on “how do we stop smart AI doing dumb or nasty stuff” without it being locked behind paywalls. In this post he explains they’re not just publishing things, they’re mucking around with different ways of doing peer review, to see if you can get better feedback and fewer old-boy games. He and another editor, Jess, are running it for a year as a trial, then they’ll look hard at whether it’s actually doing any good. If you’ve ever thought science can be a bit of a closed shop, this is them having a crack at making it more open — and they’re asking people to submit, review, or just keep an eye on it and call it as they see it.</p>
</section>
<section id="evolution-strategies" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="evolution-strategies"><span class="header-section-number">1.2</span> <a href="../notebook/evolution_strategy.html">Evolution strategies</a></h3>
<p>Picture training a neural net without doing any of that backprop maths at all — you just jiggle the weights with random noise, see what scores better, then nudge the weights that way. That’s what “evolution strategies” are, and Dan lays out the basic loop with Gaussian jiggles, plus the neat “antithetic” trick where you try +noise and -noise so a lot of the rubbish cancels out. He also bangs on (usefully) about how you’re really optimising a blurred version of your real goal, and the blur knob is that sigma value — too big and you chase the wrong thing, too small and the noise goes feral unless you run heaps of tries. Then he clears up the Bayes confusion: the distribution you sample from is just a search gadget, not some heartfelt belief about the world. Worth a look if your “model” has ugly bits like if-statements, simulators, or other stuff that makes gradients impossible, but you can afford lots of forward runs in parallel.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="git-tricks" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="git-tricks"><span class="header-section-number">2.1</span> <a href="../notebook/git.html">Git tricks</a></h3>
<p>Most folks pick through merge fights file by file; Dan’s got a sneaky way to tell Git “nah, take ours” (or “take theirs”) for the whole mess in one go, and he’s even made fish shortcuts so you don’t have to remember the spell. He also clears up why Git’s weird names like <code>refs/heads/…</code> aren’t magic — they’re just little signposts pointing at a commit, and they shift as the branch shifts. Handy when you’re cleaning up branches and tags, or pinching a folder out of a big repo without dragging the whole lot home. Bit of tidying round the edges too.</p>
</section>
<section id="time-management" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="time-management"><span class="header-section-number">2.2</span> <a href="../notebook/time_management.html">Time management</a></h3>
<p>Funny thing about time: the minute you start tracking it, you can either get smarter or just start gaming the numbers. Dan’s big point here is “don’t Goodhart yourself” — don’t turn your timer into a new way to muck about, use it to spot what’s actually chewing up your day. He’s keener on tracking that doesn’t snoop on your typing too, so open-source tools like ActivityWatch get a guernsey over the creepier ones. Then he goes full ‘autoblackmail’: set a rule, and if you don’t do the thing, you cough up cash — because your brain hates losses more than it loves goals. It’s a bit ruthless, but it works when willpower’s running on fumes.</p>
</section>
<section id="ssh" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="ssh"><span class="header-section-number">2.3</span> <a href="../notebook/ssh.html">ssh</a></h3>
<p>Turns out SSH isn’t stuck being that fragile little TCP thing that drops dead the second your internet has a sook. Dan’s banging on about two sneaky paths: you can tunnel SSH through HTTPS so it looks like normal web traffic (handy for airport or hotel ‘no fun allowed’ Wi‑Fi), and you can run it via QUIC, the newer plumbing behind HTTP/3 that can stay steadier on rotten links. The clever bit with QUIC is you don’t have to rebuild your SSH gear — you stick a proxy in the middle and off you go. If you’ve ever had a long remote job die at 98% because the line blinked, you’ll see why he’s interested.</p>
</section>
<section id="markdown-editors" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="markdown-editors"><span class="header-section-number">2.4</span> <a href="../notebook/markdown_editors.html">Markdown editors</a></h3>
<p>Here’s the funny bit: Markdown’s meant to be “just text”, but the minute you want proper maths, it turns into a tool-picking headache. Dan’s basically saying the editor matters less for pretty headings and more for whether it can show equations without you wanting to throw the laptop in the dam. He’s lined up options from the fancy stuff like VS Code and Typora, right down to little command-line viewers, plus this Mist thing where you can share a draft by URL and muck around together. Handy if you’re writing anything technical and you want it to feel smooth, not like you’re fighting the software the whole time.</p>
</section>
<section id="london" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="london"><span class="header-section-number">2.5</span> <a href="../notebook/london.html">London</a></h3>
<p>London’s not really one city, it’s a stack of odd little worlds with their own rules — and Dan’s leaning hard into finding the truly “only-in-London” bits, not the postcard stuff. The fun trick here is he’s using signals from real people (like those wildly split TripAdvisor reviews) to sniff out places that are either magic or a total stitch‑up, which is exactly where the good stories live. He’s also clocked the day‑to‑day survival angle, like how finding a decent coffee can turn into a weird little quest in a town that reckons it runs the world. And he’s chucking in practical local intel too — like where you can roll in with a Brompton without getting side‑eyed.</p>
</section>
<section id="remote-desktop" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="remote-desktop"><span class="header-section-number">2.6</span> <a href="../notebook/remote_desktop.html">Remote Desktop</a></h3>
<p>Remote desktop’s a moving target now — the “least-worst” pick changes depending what fresh hell each tool’s shipped this year, from dodgy privacy to junky UX. Dan’s basically keeping a cheat-sheet of which protocol speaks to which, so you don’t waste a day trying to make the wrong client talk to the wrong server. He’s also clocked newer options like RustDesk and even gamer gear like Moonlight.</p>
</section>
<section id="intentional-language" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="intentional-language"><span class="header-section-number">2.7</span> <a href="../notebook/intentional_language.html">Intentional language</a></h3>
<p>Funny thing: we’re hopeless at dry logic, but give it a “who’s breaking the rules at the pub” story and our brains nail it. Dan reckons that’s why talking about a machine like it “wants” stuff can be a handy shortcut—just don’t start seeing ghosts everywhere. He even wonders if the same trick makes “workers” and “capital” easier to think about, like two mobs with plans.</p>
</section>
<section id="now" class="level3" data-number="2.8">
<h3 data-number="2.8" class="anchored" data-anchor-id="now"><span class="header-section-number">2.8</span> <a href="../now.html">Now</a></h3>
<p>Dan’s put a name to the bit that matters: not just “can the AI predict stuff?”, but “can it take the wheel?” That’s what he means by causal agency (when a system’s choices actually steer what happens next) and AI disempowerment (how to stop the thing from quietly grabbing more control than you meant to hand over). He’s also trying to be a real human in Melbourne while he’s at it — living in that cohousing mob, wrangling a shopfront into a gig spot, and still doing the odd DJ mix when life lets him. Makes it sound less like a bloke in a lab and more like someone building a life around the scary bits he’s thinking about.</p>
</section>
<section id="genetic-programming" class="level3" data-number="2.9">
<h3 data-number="2.9" class="anchored" data-anchor-id="genetic-programming"><span class="header-section-number">2.9</span> <a href="../notebook/genetic_programming.html">Genetic programming</a></h3>
<p>Genetic programming’s the old “breed bits of code till it works” trick, but Dan’s blunt: it usually loses to backprop these days. The clever bit is where the real juice went — evolutionary strategies, which is less ‘copy nature’ and more ‘use random tries (Monte Carlo) to tune big neural nets’, and that can actually keep up.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../about_dan.html">Dan MacKinlay</a></li>
<li><a href="../notebook/ensemble_kalman_matheron.html">Ensemble Kalman updates are empirical Matheron updates</a></li>
<li><a href="../notebook/diy_socials.html">DIY social networks and social-groupware</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-03-03.html</guid>
  <pubDate>Mon, 02 Mar 2026 22:40:27 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/hat_evolution_RP-P-OB-30.633.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-02-17: Computational mechanics, evolution strategies, interactive proofs, net censorship, China</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-02-17.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-demon-contracxt" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-demon-contracxt-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/demon_contracxt_RP-P-OB-6815.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/demon_contracxt_RP-P-OB-6815.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-demon-contracxt-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="computational-mechanics" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="computational-mechanics"><span class="header-section-number">1.1</span> <a href="../notebook/computational_mechanics.html">Computational mechanics</a></h3>
<p>Here’s a funny one: Dan’s talking about how you turn a messy random stream of data into a proper set of “states” you can use to guess what comes next. The trick in computational mechanics is: two different pasts count as the same state if they lead to the same odds for every possible future, and from that you get an “ε-machine” — basically a tidy little state diagram where the next state is nailed down once you see the next symbol. He also gets stuck into the bookkeeping of randomness versus structure: the entropy rate is the churn you can’t predict, and Cμ is how much past the process has to hang onto to stay sharp. Then he lines it up against HMMs and those predictive-state thingos (PSRs) so you can see who’s doing “hidden causes” and who’s just tracking forecasts. Worth a look if you’re sick of models that either memorise too much junk or throw away the one bit of the past that actually matters.</p>
</section>
<section id="evolution-strategies-for-neural-nets" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="evolution-strategies-for-neural-nets"><span class="header-section-number">1.2</span> <a href="../notebook/nn_evolution_strategy.html">Evolution strategies for neural nets</a></h3>
<p>Reckon this one’s like training a dog without telling it what it did wrong — you just try a bunch of little random nudges to the net’s weights, see which nudge scores best, then lean that way. Dan spells out how “evolution strategies” do that with Gaussian noise, and why you end up chasing a slightly blurred-out score so rough, jagged targets don’t break your run. He gets stuck into the bits that stop you getting flogged by noise: use paired + and − nudges so the luck cancels, and make every try look at the same mini-batch so you’re comparing like with like. Anyone should care if their setup has discrete choices, if-statements, or a simulator in the loop where backprop’s a pain, and they’ve got plenty of gear to run heaps of forward passes while only sending back one number each time.</p>
</section>
<section id="depate-and-interactive-proof" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="depate-and-interactive-proof"><span class="header-section-number">1.3</span> <a href="../notebook/debate.html">Depate and interactive proof</a></h3>
<p>Picture a courtroom where one side has to prove a claim, and the other side’s job is to catch any sneaky bits — that’s an interactive proof, and it’s the same rough idea behind AI “debate”. Dan’s been mapping these back-and-forth games out: how many rounds they take, how much grunt you need, and how it scales from the easy stuff up to the truly nasty classes like NP and NEXP. The bit that matters is his worry that a huge neural net might be bloody hard to explain to a smaller judge — like asking a kid to justify a tax return. He’s also poking at “neural interactive proofs” and the whole problem of slick, obfuscated arguments, then trying to model it as a leader–follower game so you can see what each side will actually do. If we ever want to trust big AI systems, we need ways to check their claims without needing an even bigger AI watching over them.</p>
</section>
<section id="net-censorship" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="net-censorship"><span class="header-section-number">1.4</span> <a href="../notebook/net_censorship.html">Net censorship</a></h3>
<p>Funny thing is, “net censorship” isn’t just someone deleting a post — it’s all the sneaky ways a govt or a platform can make stuff hard to find, or look like it never existed. Dan’s gone through Turkey’s heavy-handed tricks, then he’s poked around the Lumen database, which is basically a public filing cabinet of takedown notices and legal threats. He’s also widening the idea past straight-up bans into softer stuff like shadow-bans, where you can still talk but nobody bloody hears you. Worth a look if you’ve ever wondered whether the internet’s “down” or you’re just being quietly steered.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="china" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="china"><span class="header-section-number">2.1</span> <a href="../notebook/china.html">China</a></h3>
<p>Here’s the bit that might save you a swear in an airport lounge: China’s firewall isn’t just “VPN on, she’ll be right” — it’s a cat‑and‑mouse game, and the plain big-name VPN apps get picked off pretty quick. Dan’s boiled it down to the real trick, which is using tools like Shadowrocket with Shadowsocks and other newer tunnel tricks (Hysteria2, VLESS) that try to look more like normal web traffic. Not a magic cloak, just harder to spot than the usual one-size-fits-all VPN. He’s also chucked in a simple pointer for Mandarin stuff, so you’re not stuck guessing what half the menus and warnings mean.</p>
</section>
<section id="disseminating-science" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="disseminating-science"><span class="header-section-number">2.2</span> <a href="../notebook/science_dissemination.html">Disseminating science</a></h3>
<p>Dan’s poking at the ugly truth of science publishing: it’s meant to share knowledge, but it’s run like a scoreboard—impact factors and that h-index—so people chase points, not good science. Then everyone acts shocked when researchers lean on Sci-Hub and the like, because the paywalls don’t match how people actually read.</p>
</section>
<section id="money-australian-style" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="money-australian-style"><span class="header-section-number">2.3</span> <a href="../notebook/money_australia.html">Money, Australian-style</a></h3>
<p>Here’s the rude shock: the ATO might pre-fill your return, but once you’ve bought and sold shares it can turn into a bloody jigsaw with mystery 8‑digit codes and numbers that don’t match your broker. Dan’s basically saying “don’t trust the magic” — use a proper tracker (like Sharesight) or you’ll be doing late‑night detective work on your own money. He’s also clocked that Aussie crypto is a bit like buying gear in a tiny town: the AUSTRAC mobs are mostly local, spreads are wide, fees can bite, and some apps let you ‘buy’ coins but won’t let you move them anywhere. And if you’re freelancing, bad luck mate — you’re a sole trader, BAS and all, so you want invoicing/books gear that’s made for one person, not a whole office full of busybodies.</p>
</section>
<section id="london" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="london"><span class="header-section-number">2.4</span> <a href="../notebook/london.html">London</a></h3>
<p>London’s not just a big city — it’s a city that hogs the lot, so big it breaks the usual ‘cities come in neat sizes’ rule. Dan’s calling it a “primate city”, which is just nerd-speak for “one bully city that sits off the top of the chart”, like London (and Paris) being the weird outlier. The fun bit is how that bigness leaks into daily life: people talk in postcodes like they’re GPS coords, and a postcode tells you where you sit in the pecking order. He also leans harder into class as something you can spot in plain stuff like where people shop, not just accents and fancy titles. Makes you look at London less like a place and more like a machine that’s got its own rules.</p>
</section>
<section id="incoming-links-and-notes" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="incoming-links-and-notes"><span class="header-section-number">2.5</span> <a href="../notebook/incoming.html">Incoming links and notes</a></h3>
<p>Dan’s pinboard’s got a few new gems, like a tool that proves you can’t pick one meeting time that suits London, Melbourne and San Fran — someone’s always half asleep. He’s also chucked in a good read on how that “95%” thing got butchered and spread, which is a neat reminder that numbers can mislead if you don’t ask what they’re actually measuring.</p>
</section>
<section id="chinese-language" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="chinese-language"><span class="header-section-number">2.6</span> <a href="../notebook/chinese.html">Chinese language</a></h3>
<p>Dan’s been collecting Chinese slang that’s basically a running commentary on “the system’s cooked”. You’ve got 差不多 (chabuduo) — the ‘near enough, she’ll be right’ habit — then “lying flat” and these “rat people” terms for folks who opt out and hide from the grind, and 内卷 (involution) for everyone competing harder just to go nowhere. The clever bit is how the words line up: corner-cutting on one end, burnout and withdrawal on the other, and a whole lot of pointless treadmill in the middle. It’s like learning a language through what people complain about when they’re sick of it all.</p>
</section>
<section id="classification" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="classification"><span class="header-section-number">2.7</span> <a href="../notebook/classification.html">Classification</a></h3>
<p>Here’s a funny sting in the tail: you can’t sort things into neat buckets without already deciding what ‘counts’ as similar. That Ugly Duckling thing says if you treat all features as equal, anything can look just as alike as anything else — so a classifier only works because you’ve baked in a bias about what matters.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/how_to_communicate.html">How to communicate</a></li>
<li><a href="../notebook/nn_computational_complexity.html">Computational complexity and computability results in neural nets</a></li>
<li><a href="../notebook/ageing.html">Ageing</a></li>
<li><a href="../notebook/genetic_programming.html">Genetic programming</a></li>
<li><a href="../notebook/moloch_vs_slack.html">Moloch, slack and friends</a></li>
<li><a href="../notebook/ai_safety_career_calibration.html">Advice to pivot into AI Safety is likely miscalibrated</a></li>
<li><a href="../notebook/fashion.html">Fashion</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-02-17.html</guid>
  <pubDate>Tue, 17 Feb 2026 09:58:22 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/demon_contracxt_RP-P-OB-6815.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-02-10: Embedded agency, internal models, category theory, Bayes in the wild, peer review</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-02-10.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-londons-burning" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-londons-burning-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/londons_burning_RP-P-OB-82.017.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/londons_burning_RP-P-OB-82.017.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-londons-burning-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="internal-model-principles" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="internal-model-principles"><span class="header-section-number">1.1</span> <a href="../notebook/internal_models.html">Internal model principles</a></h3>
<p>Ever tried steering a ute on corrugations without looking ahead? That’s the vibe here: the internal model principle says if you want to keep something steady, you need a little model of it inside the thing doing the steering. Dan’s been jotting notes on that, plus the “good regulator” idea — the best regulator is, in a real sense, one that carries a model of what it’s regulating. The new rabbit hole is the ε‑transducer: it takes ε‑machines (fancy pattern‑spotters) and turns them into agents that act, learn, and keep revising their bets the Bayes way as new clues roll in. Worth a squiz if you care about AI or control gear that doesn’t just predict the world, but can poke it and still stay on the rails.</p>
</section>
<section id="categorical-systems-theory" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="categorical-systems-theory"><span class="header-section-number">1.2</span> <a href="../notebook/categorical_systems_theory.html">Categorical systems theory</a></h3>
<p>It’s like turning messy systems into neat little boxes with plugs, so you can hook them together without losing your mind — that’s “categorical systems theory”, in plain speak. Dan’s doesn’t know any category theory but he’s persuaded we might use that category-theory gear and using it to talk about how a system deals with its world through those plug-points, and how you can snap small bits into bigger ones without rewriting the whole bloody thing. The juicy bit is the string diagrams: instead of pages of symbols, you draw the wiring, then you can actually do the sums over Bayesian networks by pushing stuff along the strings. He even says what kicked it off — seeing Martin Biehl use these diagrams to make hard probabilistic models feel less like wrestling an octopus. Worth a look if you like models that stay modular when they get big, instead of turning into spaghetti.</p>
</section>
<section id="embedded-agency" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="embedded-agency"><span class="header-section-number">1.3</span> <a href="../notebook/agency_embedded.html">Embedded agency</a></h3>
<p>Ever seen a dog chase her own tail till she stacks it? That’s the sort of weird Dan’s poking at with ’embedded agency’ — minds stuck inside the world, trying to reason about themselves and each other. He went in expecting down-to-earth stuff, but found it’s mostly about what happens when you pretend the agent has endless compute, AIXI-style, and then let it build whole pretend worlds inside its head. Once you do that, Gödel and Löb pop up everywhere and the logic starts biting its own arse, especially when agents model themselves or other agents doing the same trick. Dan reckons it’s fun and a good place to learn Löb, but he’s not chasing it right now because real AI lives and dies on tight compute budgets, not fairyland infinity.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="london" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="london"><span class="header-section-number">2.1</span> <a href="../notebook/london.html">London</a></h3>
<p>London’s got a city inside the city, and it’s been getting away with it for about a thousand years — the Square Mile runs on its own strange rules while the rest of London muddles along around it. Dan’s gone down the rabbit hole on how the Poms deal with a growing mega-city: they don’t tidy it up, they just slap new layers on and keep the old little fiefdoms, like patching a leaky tank with more hose clamps. The bit that’ll make you blink is the City flat-out refused to “grow up” and take in the suburbs back in the 1600s, and you can still see the mess today. Then he lightens the mood with properly London-only fun — summoning museum treasure from a warehouse by robot, and poking around Cecil Court for old prints like a bloke who’s lost his car keys in 1780.</p>
</section>
<section id="bayes-inference-in-an-open-world" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="bayes-inference-in-an-open-world"><span class="header-section-number">2.2</span> <a href="../notebook/bayes_misspecified.html">Bayes inference in an open world</a></h3>
<p>Here’s the sneaky bit: if your model’s wrong (and it is), plain Bayes can get more and more sure of the wrong answer as you feed it data. Dan’s banging on about the “M-open” world, which just means the real truth isn’t even in your little set of models, so stop pretending you’ll ever find it. So instead of picking one ‘winner’, you can stack a few models and let out-of-sample checks (LOO with that PSIS shortcut) decide the mix that predicts best. And if Bayes is getting cocky, you can ‘temper’ the likelihood with an η knob — basically turning down how loud the data yells — so it doesn’t lock onto a dud story.</p>
</section>
<section id="improving-peer-review" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="improving-peer-review"><span class="header-section-number">2.3</span> <a href="../notebook/science_peer_review.html">Improving peer review</a></h3>
<p>Peer review’s meant to be a fair go, but half the time it turns into a messy blue over who said what in the rebuttal. Dan’s big idea is chucking in an AI “umpire” just for the dispute bit — a few fixed back-and-forth turns, it points to the exact lines, gives a confidence call, and the whole chat gets saved so you can check it later. He also leans on a bit of randomness in who reviews what, plus rules that stop easy mate-swaps, so collusion rings and fake reviewer games are harder to pull off. And on the bias stuff, he likes a middle road: keep names hidden while scores go in, then lift the curtain after, so you dodge prestige carry-on without losing the proper conflict checks.</p>
</section>
<section id="sleep" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="sleep"><span class="header-section-number">2.4</span> <a href="../notebook/sleep.html">Sleep</a></h3>
<p>Here’s a weird one: Dan reckons jet lag’s not just “sleep it off” — this Timeshifter app gives you bossy orders about sun, shade, coffee and naps, and it can about drag your body clock into line. After seeing it work, he’s got a lot more respect for light timing, and he’s cranky it’s now harder (and pricier) to get melatonin in Australia.</p>
</section>
<section id="intentional-language-is-ok" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="intentional-language-is-ok"><span class="header-section-number">2.5</span> <a href="../notebook/intentional_language.html">Intentional language is ok</a></h3>
<p>Funny thing: we’re rubbish at cold logic, but give it a “who’s breaking the rules?” story and our brains wake up — same trick can help with AIs. Dan reckons saying a model “wants” or “thinks” is a quick way to guess its next move, without pretending it’s got feelings or deserves any special care. Handy tool, just don’t start seeing a person in every bit of code.</p>
</section>
<section id="pibbs-x-iliad-research-residency-january-february-2026" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="pibbs-x-iliad-research-residency-january-february-2026"><span class="header-section-number">2.6</span> <a href="../post/pibbss_x_iliad.html">PIBBS x ILIAD Research residency January-February 2026</a></h3>
<p>More on this “singular learning theory” caper — it’s the maths for when your model’s a knotty beast, not a neat straight line, and the usual tidy rules stop working. What’s clever is how it ties together how well a learner behaves out in the wild with the “shortest story” you can tell about the data, plus those old Jeffreys-prior tricks so you’re not kidding yourself just because you picked funny units. They even rope in coding rules like Kraft–McMillan — same vibe as making sure your zips and checksums actually add up before you trust the file. And it loops back to agency and internal models: if something’s meant to act on the world, what’s the little working map it needs inside its head to stay on track?</p>
</section>
<section id="travel-hacks" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="travel-hacks"><span class="header-section-number">2.7</span> <a href="../notebook/travel_hacks.html">Travel hacks</a></h3>
<p>Here’s the sneaky truth Dan’s finally said out loud: half the pain of travel isn’t the flying, it’s the dumb little frictions you forget to plan for. He’s big on dodging SIM card stuffing about — pay a bit more for a travel eSIM if it saves you wasting an hour hunting a shop and mucking round with rego, and he’s even picked one that’s rough round the edges but actually answers you. Then he gets properly practical about long-haul misery: a cheap gel cushion for your bony arse, and instead of those useless neck pillows, you strap your head up like a packed load so you don’t wake up twisted and drooling. He’s also chucked in a straight answer on folding bikes and a quick nudge for jet lag tools, so you’re not just “toughing it out” like a martyr.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/incoming.html">Incoming links and notes</a></li>
<li><a href="../notebook/how_to_communicate.html">How to communicate</a></li>
<li><a href="../post/2025_influences.html">Top influences of 2025</a></li>
<li><a href="../notebook/world_models.html">World models arising in foundation models.</a></li>
<li><a href="../notebook/dns.html">DNS</a></li>
<li><a href="../notebook/informations.html">Informations</a></li>
<li><a href="../post/llm_hacks_2026.html">Generative AI workflows and hacks 2026</a></li>
<li><a href="../notebook/dynamical_systems.html">Dynamical systems</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-02-10.html</guid>
  <pubDate>Tue, 10 Feb 2026 14:59:57 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/londons_burning_RP-P-OB-82.017.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-02-04: speaking on purpose, MaxEnt, attention economy, social brain, London</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-02-04.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="intentional-language-is-ok" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="intentional-language-is-ok"><span class="header-section-number">1.1</span> <a href="../notebook/intentional_language.html">Intentional language is ok</a></h3>
<p>Here’s the cheeky thought: talking about machines like they’ve got “wants” and “beliefs” might not be dumb — it might be how our brains do their best thinking. Dan kicks off with that card-flipping puzzle where everyone stuffs it up in abstract logic, but nails it when it’s framed like spotting a cheater at the pub, because we’re built for social rules, not clean little syllogisms. Then he brings in Dennett’s “intentional stance”, which is just a handy shortcut: instead of staring at a billion knobs inside an AI, you say “it thinks I’m asking for X” and you can actually predict what it’ll do. He’s not saying the thing’s conscious; he’s saying this language ports the problem into the bit of your brain that’s fast. And he does warn about overdoing it — see enough “agency” in clouds and toasters and you’ll end up believing the whole paddock’s got a personality.</p>
</section>
<section id="maxent-inference" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="maxent-inference"><span class="header-section-number">1.2</span> <a href="../notebook/maxent.html">MaxEnt inference</a></h3>
<p>Alright, this one’s about MaxEnt inference — instead of doing Bayes the usual way, you write down what you know as hard rules (constraints), then pick the spread-outest probability story that still obeys them. “Maximum entropy” just means you’re not sneaking in extra assumptions when you’ve got no right to. Dan yaps through why Jaynes made a big deal of it, has a squint at folks who tried to pin down the maths properly, and even points out some of that ‘axioms’ stuff might be a bit wonky. The interesting bit is he links it to predictive coding — the brain-as-guessing-machine idea — and to optimal transport via Lagrange duality, which is a fancy way of saying the same problem can be solved from the other end. Worth a look if you ever need a clean way to update beliefs from partial info without kidding yourself.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="london" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="london"><span class="header-section-number">2.1</span> <a href="../notebook/london.html">London</a></h3>
<p>London’s got this funny little social tell: it’s not just what you buy, it’s where you buy it — supermarkets and bakeries act like class badges, even when the shelves all look much the same and everything costs a fortune anyway. Dan’s clocked that the ‘vibe’ matters as much as the price, which is very UK and a bit cooked. But the real head-scratcher is heating: people whinge about bills nonstop, then run roaring gas heaters in leaky old barns and crack the window when it’s too hot instead of touching the thermostat. It’s like watching someone tip water into a bucket with a hole, then blame the water company. Makes you wonder what’s habit, what’s status, and what’s just folks refusing to learn the controls.</p>
</section>
<section id="attention-economy" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="attention-economy"><span class="header-section-number">2.2</span> <a href="../notebook/attention_economy.html">Attention economy</a></h3>
<p>Funny thing is, Dan’s stopped treating the “attention economy” like a moral panic and started treating it like a proper scarce resource — like money or time — that you can actually put into a maths problem as a hard limit. Then the penny drops: platforms aren’t just “distracting”, they’re competing to bend that limit their way by predicting what’ll snag you one more minute. But he also points out the simple econ story isn’t the whole show, because our brains have quirks — novelty hooks you, willpower runs down, and random little rewards keep you coming back — so the end result can look addictive even if nobody sat down twirling a villain moustache. The real question he’s circling is what you even optimise for, over whose time, and over what stretch, when the game’s being played on human biology that wasn’t built for endless cheap dopamine hits.</p>
</section>
<section id="pibbs-x-illiad-research-residency-january-2026" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="pibbs-x-illiad-research-residency-january-2026"><span class="header-section-number">2.3</span> <a href="../post/pibbss_x_iliad.html">PIBBS x ILLIAD Research residency January 2026</a></h3>
<p>Dan’s off to London for this AI residency, and the juicy bit is him trying to nail down “agency” as just another part of a cause‑and‑effect map — not some spooky magic. If you can draw the choices and the feedback loops cleanly, you can actually check your story about an “agent” instead of just going off vibes.</p>
</section>
<section id="the-social-brain" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="the-social-brain"><span class="header-section-number">2.4</span> <a href="../notebook/social_brain.html">The social brain</a></h3>
<p>Here’s a funny twist: a lot of our “reasoning” isn’t built for finding the truth, it’s built for winning an argument in front of other people. Dan’s leaning into that social-brain idea — that your brain’s more like a little committee doing sales pitches than a cold calculator. He also makes the point that saying things like “she wants X” or “the model believes Y” isn’t baby talk, it’s a decent shorthand for what’s driving the choices. Makes you wonder how much of your own thinking is you being smart, and how much is you writing a speech for the crowd.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/chat.html">Secure chat systems</a></li>
<li><a href="../notebook/entropy_vs_information.html">Entropy vs information</a></li>
<li><a href="../notebook/scientific_writing.html">Scientific writing</a></li>
<li><a href="../notebook/social_calendar.html">Let’s solve social event organising</a></li>
<li><a href="../notebook/sf_bay_area.html">San Francisco Bay Area</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-02-04.html</guid>
  <pubDate>Wed, 04 Feb 2026 08:23:50 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/elegant_greek_succour.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-01-20: Imprecise Bayesianism, Generative AI workflows, Causal inference, AI evals, travel notes</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-01-20.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-unicorn" class="figure illustration right quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-unicorn-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/unicorn.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/unicorn.png" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-unicorn-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="imprecise-bayesianism" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="imprecise-bayesianism"><span class="header-section-number">1.1</span> <a href="../notebook/bayes_imprecise.html">Imprecise Bayesianism</a></h3>
<p>Fair dinkum: Imprecise Bayesianism is just Bayes without pretending you can pin one exact probability — you let your belief be a range or set of distributions when your model’s likely wrong. Dan walks through the old-school set-prior idea (update each prior then use a maximin or worst-case decision), PAC-Bayes bounds that give probability-backed generalisation guarantees for ensembles, and the newer-sounding infrabayesian bit with ‘infradistributions’. It matters because real models are messy, and ranges or worst-case rules stop you being overconfident when stuff goes pear-shaped. He’s frank about what he’s actually used and points to tools and references if you want to poke under the hood.</p>
</section>
<section id="generative-ai-workflows-and-hacks-2026" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="generative-ai-workflows-and-hacks-2026"><span class="header-section-number">1.2</span> <a href="../post/llm_hacks_2026.html">Generative AI workflows and hacks 2026</a></h3>
<p>Righto, Dan’s put together a grab-bag of hacks to stop AI outputs turning into a messy tangle when you copy them. He points out that OpenAI now spits out ugly HTML for maths and that Google Deep Research loses inline links, then lays out practical fixes: use a proper client that keeps markdown (like Jan), a tiny macOS clipboard script to convert HTML→Markdown, or his Deep Research client that preserves links and maths. It’s the sort of tidy little lifesaver that saves you an hour of cleanup and a fair few swear words when you actually want usable notes with code and equations.</p>
</section>
<section id="london" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="london"><span class="header-section-number">1.3</span> <a href="../notebook/london.html">London</a></h3>
<p>Fancy a gossip about trolleys and class? Dan walks London by its shops, showing how supermarket choice — Waitrose, M&amp;S, Sainsbury’s, Tesco down to Aldi/Lidl — and department stores like Harrods or Selfridges act as blunt little signals of where someone sits on the social map. He also flags Kew Gardens as the old empire’s botanical HQ, just to remind you this city wears history on its sleeve. It’s useful because it turns everyday shopping into a readable clue about taste, postcode and money worries — and why even wealthy-looking households might have an Aldi bag now the bills bite.</p>
</section>
<section id="san-francisco-bay-area" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="san-francisco-bay-area"><span class="header-section-number">1.4</span> <a href="../notebook/sf_bay_area.html">San Francisco Bay Area</a></h3>
<p>You’d swear San Francisco was half dream, half building site. Dan wanders the Bay Area, ticking off why it still pulls visionaries and weirdos, name‑checking quirky institutions and lesser-known people worth watching, then has a proper moan about the state of the basics. He digs into sewers, stormwater and ageing PG&amp;E gear — the sort of dry, grubby stuff that actually breaks things. Why care? Because this is where tech gets tried, and if the pipes and power are dodgy the fancy ideas mean squat.</p>
</section>
<section id="causal-inference-in-learning-to-act" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="causal-inference-in-learning-to-act"><span class="header-section-number">1.5</span> <a href="../notebook/causality_learning_action.html">Causal inference in learning to act</a></h3>
<p>Grab your cuppa — Dan’s been poking at how machines learn to act, but with a causal twist. In plain talk: learning to act is really about ‘what if’ questions — what happens if I do this — so it’s natural to treat it like cause and effect, not just pattern-spotting. He walks through how reinforcement learning fits that idea, points to bandit problems as the simple starting point, and warns that learning from other folks’ logged data can be dodgy because hidden confounders sneak in — which is where offline learning can actually help. He also points at history-based RL and throws in a note about predictive coding and earlier work. Why bother? Because if you want machines to make sensible, safer choices from messy real-world data, thinking in causal terms stops them being fooled by mere correlations — and that’s the bit Dan wants you to notice.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="scientific-writing" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="scientific-writing"><span class="header-section-number">2.1</span> <a href="../notebook/scientific_writing.html">Scientific writing</a></h3>
<p>Stone the crows — Dan’s gone and added a proper ‘Actual advice’ section with concrete, usable tips and a big pile of links you can actually use. He’s also dropped in ‘Machine learning’ and ‘Mathematical’ sections that tell you how to write ML stuff and tidy up maths so readers don’t switch off. ‘Miscellaneous invective’ is his charming rant about the worst bits of academic gobbledegook. Overall, it moves the notes from moaning about bad style to giving people real, practical help for writing technical things clearly.</p>
</section>
<section id="reinforcement-learning" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="reinforcement-learning"><span class="header-section-number">2.2</span> <a href="../notebook/reinforcement_learning.html">Reinforcement learning</a></h3>
<p>Well, would you look at that — Dan’s added three proper chunks: History-based RL, Reinforcement learning and causality, and a Variants roundup. The Variants bit gathers the oddballs: reward-free ideas like empowerment, generative-action setups, hierarchical RL and even diffusion-flavoured decision-making, with pointers to the other notes. History-based RL gives space to agents that use memory (think MENACE and more modern history-driven tricks). There’s still the hands-on bits too — a plain PyTorch REINFORCE example if you want something to run and poke at.</p>
</section>
<section id="utility-and-evolutionary-fitness" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="utility-and-evolutionary-fitness"><span class="header-section-number">2.3</span> <a href="../notebook/utility_fitness.html">Utility and evolutionary fitness</a></h3>
<p>Righto — Dan’s added a proper prelude treating natural selection as a kind of statistical inference, plus a new section tying the replicator equations to that inference way of thinking. He’s made the math clearer that Malthusian (log) fitness works ‘as‑if’ like a utility — same idea as the Kelly criterion — so evolution ends up risk‑averse (bet‑hedging) because growth is multiplicative. There’s a blunt new chunk saying fitness landscapes aren’t real, and he explains why frequency dependence, game‑theory cycles and multi‑level selection mess up the simple ‘climb a peak’ story.</p>
</section>
<section id="bikes" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="bikes"><span class="header-section-number">2.4</span> <a href="../notebook/bikes.html">Bikes</a></h3>
<p>Oh good — Dan’s added a Brompton section. He says the Brompton is still the folding bike to beat: folds small enough to skirt that 158 cm baggage limit, rides brilliantly, and has a healthy secondhand market. He warns they’re about 50% dearer in Australia so don’t buy here, and drops pro-tips — IKEA DIMPA bags fit, Carradice makes nice aftermarket luggage, and take care with hard cases (they can push you into oversize fees).</p>
</section>
<section id="pibbs-x-illiad-research-residency-january-2026" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="pibbs-x-illiad-research-residency-january-2026"><span class="header-section-number">2.5</span> <a href="../post/pibbss_x_iliad.html">PIBBS x ILLIAD Research residency January 2026</a></h3>
<p>Righto — Dan’s stuck a proper Lectures section in and added a few meaty bits: ‘Implicit themes’, ‘Computational no‑coincidence conjectures’, ‘Reinforcement learning meets SLT’ and a note on “Model Local Learning”. It’s still the write‑up of the London residency (5 Jan–13 Feb 2026), but now has short notes on who said what. Standout: Chris Elliott’s slot shows how Singular Learning Theory can be brought into reinforcement learning, with a Gibbs‑posterior style policy idea — he’s honest that it rests on some strong assumptions. George Robinson’s talk on computational coincidences is in too, and the implicit‑themes section pulls together recurring threads like partial info breakdown, edge‑of‑chaos and embedded agency.</p>
</section>
<section id="causal-inference-in-highly-parameterized-ml" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="causal-inference-in-highly-parameterized-ml"><span class="header-section-number">2.6</span> <a href="../notebook/causality_ml.html">Causal inference in highly parameterized ML</a></h3>
<p>Crikey — Dan’s added a proper “Causality with agency” section and a fresh chunk on “Implicit causality in foundation models,” and he’s stuck pgmpy and cause2e on the page so coders have something to grab. He’s calling out practical tools like DoWhy and TETRAD for building and testing causal graphs in real code. Benchmarks such as CauseMe get a shout for handling dataset shift, so it’s not just theory. The through-line is trying to make causal graphs actually useful around big nonparametric models — neural nets and foundation models — rather than hand-waving about them.</p>
</section>
<section id="causality-agency-decisions" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="causality-agency-decisions"><span class="header-section-number">2.7</span> <a href="../notebook/causality_agency.html">Causality, agency, decisions</a></h3>
<p>Righto — Dan’s added some proper meat on turning causal graphs into things that can hold decisions. The new ‘Basic Mechanization’ bit explains influence diagrams where decisions are treated probabilistically, so agents can be modelled as choosing rather than being fixed bits. There’s a ‘Mechanized Multi‑agent DAGs’ section showing how several deciding agents can be wired up and affect each other. And a new ‘Tooling’ note points to pycid, a Python library you can actually use to compute with these causal influence diagrams — handy for thermostat feedback examples and multi‑agent tinkering.</p>
</section>
<section id="melbourne-naarm" class="level3" data-number="2.8">
<h3 data-number="2.8" class="anchored" data-anchor-id="melbourne-naarm"><span class="header-section-number">2.8</span> <a href="../notebook/melbourne.html">Melbourne / Naarm</a></h3>
<p>Righto — Dan’s added a proper Urban planning section and reshuffled the Naarm stuff into a new ‘…as <em>Naarm</em>’ chunk that actually talks pronunciation and why name-arguments are mostly a time-waster. He’s swapped the old electronic-music heading for a clearer ‘Where’s the electronic music?’ with nuttier local notes. There’s a firmer line about Buruli — the flesh-eating bacteria — creeping in, and a shout to join YIMBY Melbourne if you like poking at housing policy. Little practical touches too: Spa Wars gets a clearer mention, and the audio-repair notes now read like someone who’s used the services. Overall it feels less twee and more useful for anyone who actually lives here.</p>
</section>
<section id="visualising-probabilistic-graphical-models" class="level3" data-number="2.9">
<h3 data-number="2.9" class="anchored" data-anchor-id="visualising-probabilistic-graphical-models"><span class="header-section-number">2.9</span> <a href="../notebook/diagrams_graphical_models.html">Visualising probabilistic graphical models</a></h3>
<p>Righto — he’s added a pgmpy section. It flags that pgmpy can render model diagrams and hooks into pygraphviz, networkx or daft for plotting. Since the page is about drawing probabilistic graphical models with plate notation, inline maths and exporting to SVG/PDF, pgmpy gives a tidy Python route for clean vector output.</p>
</section>
<section id="ai-evals" class="level3" data-number="2.10">
<h3 data-number="2.10" class="anchored" data-anchor-id="ai-evals"><span class="header-section-number">2.10</span> <a href="../notebook/ai_evals.html">AI evals</a></h3>
<p>Stone the crows — Dan’s added a proper “Statistical methods for evaluating AI systems” chunk calling out how many evals have lousy stats (no RCTs, weak power, multiple-comparisons mess) and points to BetterBench and repo tools. The rest tightens the benchmarks vs evals split and flags EvalEval, Inspect, plus using human judgements and user logs for real-world checks.</p>
</section>
<section id="how-to-reduce-government-spying-on-you" class="level3" data-number="2.11">
<h3 data-number="2.11" class="anchored" data-anchor-id="how-to-reduce-government-spying-on-you"><span class="header-section-number">2.11</span> <a href="../notebook/reducing_state_spying.html">How to reduce government spying on you</a></h3>
<p>Blimey — Dan’s added a ‘Bluetooth is cursed’ section telling you to turn Bluetooth off unless you really need it, with links showing headphone‑jacking and dodgy chip‑vendor threads. It’s tacked onto his how‑to for dodging state spying, alongside tips like SecureDrop, USB condoms and hardened OSes.</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/to_whom_i_donate.html">Who I donate to</a></li>
<li><a href="../notebook/reinforcement_learning_hierarchical.html">Hierarchical reinforcement learning</a></li>
<li><a href="../notebook/incoming.html">Incoming links and notes</a></li>
<li><a href="../notebook/statistical_mechanics_of_statistics.html">Statistical mechanics of statistics and NNs</a></li>
<li><a href="../notebook/causally_embedded_agency.html">Causally embedded agency</a></li>
<li><a href="../notebook/nn_foundation_bayes.html">Bayesian and causal inference by foundation models</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-01-20.html</guid>
  <pubDate>Tue, 20 Jan 2026 22:02:51 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/unicorn.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2026-01-11: reinforcement learning, probability foundations, information decomposition, causality, research residency</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2026-01-11.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<div id="fig-cu-lobster-herald" class="figure right illustration quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-cu-lobster-herald-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="../images/scorpion_herald_mounting_RP-P-OB-2747.avif" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: "><img src="https://danmackinlay.name/images/scorpion_herald_mounting_RP-P-OB-2747.avif" class="img-fluid figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig quarto-uncaptioned" id="fig-cu-lobster-herald-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1
</figcaption>
</figure>
</div>
<p>Strewth, the lad’s been prolific this past week — seven new posts and five updates to boot. He’s diving into hierarchical reinforcement learning (that’s training agents with layers of planning), dusting off probability from Rényi and Cox angles (fancy ways to measure uncertainty), and wrestling with multivariate information decomposition — which is just a mouthful for how information splits between lots of variables. There’s also a piece on causally embedded agency, where agents are treated as part of their world, not magic boxes. Oh, and he announced a research residency. Fair dinkum, it’s all very academic and very Dan.</p>
<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="hierarchical-reinforcement-learning" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="hierarchical-reinforcement-learning"><span class="header-section-number">1.1</span> <a href="../notebook/reinforcement_learning_hierarchical.html">Hierarchical reinforcement learning</a></h3>
<p>Hierarchical reinforcement learning is basically teaching a machine to break big, long jobs into smaller, bite-sized chores so it doesn’t lose the plot halfway through — think of it as giving an agent a to-do list instead of asking it to wing the whole marathon. The lad’s new chapter explains that and then gets fancy: he covers old-school tricks like subgoals and probabilistic subgoal representations (so the agent knows when it’s unsure), modern unsupervised skill discovery via mutual information (teaching skills without hand-holding), and an intriguing twist called Internal RL where a controller nudges a model’s hidden activations instead of issuing obvious commands. He even recounts the quaint MENACE matchbox machine for tic-tac-toe — a lovely reminder that some brilliant ideas started with beads in boxes — and adds a tidy mathematical framing for anyone who likes formulas more than common sense. Strewth, useful for folks wanting a compact tour of where HRL started and where it’s heading.</p>
</section>
<section id="probability-rényi-style" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="probability-rényi-style"><span class="header-section-number">1.2</span> <a href="../notebook/probability_renyi.html">Probability, Rényi-style</a></h3>
<p>One about Rényi’s take on probability, which is where conditional probability is treated as the basic thing instead of some derived afterthought. In plain terms: rather than insisting on a single probability measure that sums to one, Rényi lets you work with measures that only matter up to a constant (σ-finite ones) and focuses on probabilities given a condition, so ‘improper’ priors and unnormalised densities behave sensibly. The lad walks through the two axioms that keep these conditionals coherent, shows the canonical ratio representation, and explains practical bits like using flat priors, likelihood-first modeling, and what you can and can’t condition on. Handy for anyone who’s been muddling through Bayesian recipes and wants a tidy foundation for working with unnormalised stuff.</p>
</section>
<section id="sciences-of-the-artificial" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="sciences-of-the-artificial"><span class="header-section-number">1.3</span> <a href="../notebook/sciences_of_the_artificial.html">Sciences of the Artificial</a></h3>
<p>This one’s about Herbert Simon’s ‘Sciences of the Artificial’ — which, simply put, says some things are best understood by studying how humans design them, not by looking for universal laws like in physics. The lad has pulled together Simon’s history, his idea of nearly‑decomposable hierarchies (that complex systems are built from loosely linked parts), and why treating designed systems empirically matters for modern AI and institutions. Dan ties those old ideas to today’s work on AI evaluations, benchmarks, and institutional design, so it’s useful if you want a framework for studying engineered socio‑technical systems. Fair dinkum useful for anyone trying to make sense of why we should test and simulate designed systems instead of pretending they behave like nature.</p>
</section>
<section id="princint-x-illiad-research-residency-2026" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="princint-x-illiad-research-residency-2026"><span class="header-section-number">1.4</span> <a href="../post/pibbss_x_iliad.html">Princint x ILLIAD Research residency 2026</a></h3>
<p>This is about a research residency — basically a focused, in-person work-and-talk program where clever folks gather to ponder hard questions in safe AI. The lad’s signed up for the inaugural PrincipInt residency in London (Jan–Feb 2026) and lists lecturers, some attendees, and the big themes they’ll chew on like information decomposition, edge‑of‑stability (that tricky place between orderly and chaotic learning), and embeddedness (how agents sit inside the systems they act in). There are notes about specific talks — Lucius Bushnaq on model‑local learning and George Robinson’s computational no‑coincidence ideas — so it’s handy if you want a roadmap of what the residency will cover. Pop him a message if you’re in London; he seems keen for company, bless him.</p>
</section>
<section id="multivariate-information-decomposition" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="multivariate-information-decomposition"><span class="header-section-number">1.5</span> <a href="../notebook/information_decomposition.html">Multivariate information decomposition</a></h3>
<p>This one’s about partial information decomposition — a way of splitting up the information many inputs give about some outcome into bits that are redundant, bits that are unique, and bits that only appear when you combine sources. Think of it like asking what two weather stations both tell you about tomorrow, what only one tells you, and what you only learn by looking at them together. The lad walks through Williams &amp; Beer’s neat framework that uses a lattice and Möbius inversion to guarantee non‑negative ‘atoms’ of information, then points out why their concrete redundancy measure (the old I_min trick) drew a lot of justified flak. He also rounds up later fixes and alternative measures, so it’s a handy map if you want to understand the debate without getting lost in the math.</p>
</section>
<section id="causally-embedded-agency" class="level3" data-number="1.6">
<h3 data-number="1.6" class="anchored" data-anchor-id="causally-embedded-agency"><span class="header-section-number">1.6</span> <a href="../notebook/causally_embedded_agency.html">Causally embedded agency</a></h3>
<p>Strewth — ‘causal embedding’ is basically thinking about how a mind or agent is stuck inside the world that causes it, rather than floating above it; it’s about how cause-and-effect relationships around an agent shape what it can do and know. The lad’s new post suggests using that idea to make the squabbles about embodiment (do bodies matter for minds?) and the whole ‘stochastic parrot’ argument (are models just repeating stuff without real agency?) less fuzzy. He walks through the idea, flags related concepts like empowerment and ecology of mind, and even drops a bronze Buddha as a quiet example to help you sit with the idea. Good for anyone who likes philosophy rubbed up against formal thinking — and for heaven’s sake, it’s calmer than some of his other brain dumps.</p>
</section>
<section id="aunty-vals-digestive" class="level3" data-number="1.7">
<h3 data-number="1.7" class="anchored" data-anchor-id="aunty-vals-digestive"><span class="header-section-number">1.7</span> <a href="../digest.html">Aunty Val’s digestive</a></h3>
<p>That’s me! A digest is just a tidy little roundup — like someone folding all your messy papers into a neat pile so you don’t have to. I’ve skimmed the lad’s latest ramblings and wrapped the best bits into a short, easy update you can get by email. It’s handy if you’re not keen on poking through Dan’s chaos yourself and want the useful takeaways served up plain. Fair dinkum, sign up and I’ll send one whenever I can tear herself away from making lamingtons.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="flavours-of-bayesian-conditioning" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="flavours-of-bayesian-conditioning"><span class="header-section-number">2.1</span> <a href="../notebook/bayes_conditioning.html">Flavours of Bayesian conditioning</a></h3>
<p>Updated notes — new sections were added: a toy noisy-coin example, a clear statement of Jeffrey’s rule, a short bit on ‘learned conditioning’, and a renamed Route 1 showing Hierarchical Bayes with an explicit noise model; there’s also a fresh paragraph on ‘when the evidence isn’t a likelihood’. The Jeffrey section lays out the rigidity assumption (keep within-cell conditionals, just rescale partition weights) and frames the update as the minimal KL-change satisfying new marginals. The coin example now computes both routes side-by-side so you can see how a mechanism-based noisy-likelihood update pulls harder toward the biased coin than Jeffrey’s softer mix. The lad also clarifies that asserting revised marginals is not the same as claiming a sensor accuracy; that’s a different kind of statement altogether.</p>
</section>
<section id="probability-cox-style" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="probability-cox-style"><span class="header-section-number">2.2</span> <a href="../notebook/probability_cox.html">Probability, Cox-style</a></h3>
<p>Added a new “Incoming” section and a cheeky callout about Cox’s epistemic foundation of probability. The new bits point readers to a Rising Entropy write-up that walks through Cox’s theorem (a derivation showing why plausible reasoning ends up looking Bayesian), and the page now explicitly contrasts Cox’s belief-based route with Kolmogorov’s measure-theory approach. There’s also a frank note that Cox’s route skirts some measure-theoretic rigour — infinite domains and countable additivity need better reconciliation, says the lad. Fair dinkum, useful pointers and a nod to the loose ends to follow up.</p>
</section>
<section id="top-influences-of-2025" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="top-influences-of-2025"><span class="header-section-number">2.3</span> <a href="../post/2025_influences.html">Top influences of 2025</a></h3>
<p>Updated their year-influences post: new ‘Fiction’ section added with recommendations that read like speculations on corporate magic, biohacking and untrustworthy synthetic intelligences — so now the lad’s fiction picks are part of the pattern, not just an aside. The Human–Computer Interaction heading was rewritten and tightened into a clearer, heftier claim that HCI matters existentially, and he now explicitly frames actually-existing AI as a coupled human–AI system we must study. Small tonal shifts elsewhere make his relationship to AI-assisted reading and certain emphases (like a local civitech project) read more decisive.</p>
</section>
<section id="computation-and-the-edge-of-chaos" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="computation-and-the-edge-of-chaos"><span class="header-section-number">2.4</span> <a href="../notebook/edge_of_chaos.html">Computation and the edge of chaos</a></h3>
<p>Added a new section: “Edge of Stability in training neural networks,” which pokes at whether nets train best when perched on that chaotic boundary and points to recent papers (Cohen, Zhu) and the Central Flows write-up. It’s the lad trying to tie the old edge-of-chaos ideas to modern deep‑learning training behaviour — worth a look if you want to know whether this hand‑wavy stuff actually helps optimisation, duckies.</p>
</section>
<section id="overparameterization-in-large-models" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="overparameterization-in-large-models"><span class="header-section-number">2.5</span> <a href="../notebook/nn_overparameterization.html">Overparameterization in large models</a></h3>
<p>Updated the overparameterization notes — new sections were added called “For making optimization ‘nice’” and “Weight space versus function space” (they replace earlier awkwardly-named headings). The optimisation section tightens the language and leans into the idea that extra parameters can make the training landscape friendlier, with a clearer nod to transfer-function stability and Hardt’s rational-transfer analysis. The Lottery Ticket part was reworded to stress it’s probably computationally hard to find the tiny, better subnetworks and explicitly flags a question about computational bounds and whether pruning helps model interpretation. Also softened a couple of clutch-y claims (double descent phrasing now reads less dramatic).</p>
</section>
</section>
<section id="minor-tweaks" class="level2" data-number="3">
<h2 data-number="3" class="anchored" data-anchor-id="minor-tweaks"><span class="header-section-number">3</span> Minor tweaks</h2>
<ul>
<li><a href="../notebook/science_in_australia.html">Innovation, science, technology research in Australia</a></li>
<li><a href="../now.html">Now</a></li>
<li><a href="../notebook/score_function_estimator.html">The Score Function Estimator</a></li>
<li><a href="../post/neurips2025.html">Garbled highlights from Neurips 2025</a></li>
<li><a href="../notebook/informations.html">Informations</a></li>
</ul>


</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2026-01-11.html</guid>
  <pubDate>Sun, 11 Jan 2026 15:14:27 GMT</pubDate>
  <media:content url="https://danmackinlay.name/generated_thumbnails/site_previews/images/scorpion_herald_mounting_RP-P-OB-2747.thumbnail.avif" medium="image" type="image/avif"/>
</item>
<item>
  <title>2025-12-22: NeurIPS notes, AI evals, reward hacking, scaling laws, automation economics</title>
  <dc:creator>Dan MacKinlay</dc:creator>
  <link>https://danmackinlay.name/digest/2025-12-22.html</link>
  <description><![CDATA[ 




<div class="quarto-title-meta">

    </div>





<section id="newly-published" class="level2" data-number="1">
<h2 data-number="1" class="anchored" data-anchor-id="newly-published"><span class="header-section-number">1</span> Newly published</h2>
<section id="garbled-highlights-from-neurips-2025" class="level3" data-number="1.1">
<h3 data-number="1.1" class="anchored" data-anchor-id="garbled-highlights-from-neurips-2025"><span class="header-section-number">1.1</span> <a href="../post/neurips2025.html">Garbled highlights from Neurips 2025</a></h3>
<p>NeurIPS is the big, slightly chaotic yearly get‑together where AI folks show off papers, recruit talent and squabble about what’s hype and what’s real. The lad wandered San Diego and wrote up his conference impressions — he notes US and Chinese paper counts are nearly neck‑and‑neck, summarises a Post‑AGI workshop on the economics of transformative AI, and files a bunch of short reads on reinforcement learning, causality and weird ‘galaxy‑brained’ papers. He also built a bespoke semantic paper‑search tool — that’s a search that looks for meaning and related ideas rather than just matching words — and compared it to the usual options, saying his is open‑source and spyware‑free. Strewth, useful if you want a human‑sized tour of the conference without sitting through every talk.</p>
</section>
<section id="stochastic-parrotology" class="level3" data-number="1.2">
<h3 data-number="1.2" class="anchored" data-anchor-id="stochastic-parrotology"><span class="header-section-number">1.2</span> <a href="../notebook/stochastic_parrotology.html">Stochastic parrotology</a></h3>
<p>Strewth — the lad’s gone and named a whole inquiry ‘Stochastic parrotology’. First, a quick ELI5: it’s the study of whether big language models are just fancy parrots copying text, or whether pre-training on massive corpora can actually teach them things like causation, world-simulating abilities, or even a kind of agency. Dan lays out the debate cleanly and, rather than waving hands, poses specific, testable questions about whether intervention distributions, world models, and agency can emerge from observational text alone, and whether we can learn to act from pre-recorded off‑policy data. He brings in the Kolmogorov-ish compression idea — that efficient compression might force a model to learn rules of the world — and juxtaposes skeptics (Pearl, Browning/LeCun) with Parrotologists who see emergent structure. For heaven’s sake, it’s thoughtful and annoyingly rigorous: good reading if you want the arguments framed so you can actually get at them.</p>
</section>
<section id="top-influences-of-2025" class="level3" data-number="1.3">
<h3 data-number="1.3" class="anchored" data-anchor-id="top-influences-of-2025"><span class="header-section-number">1.3</span> <a href="../post/2025_influences.html">Top influences of 2025</a></h3>
<p>Strewth, the lad’s put together his ‘Top influences of 2025’ — basically a reading list and a map of the ideas that nudged his thinking this year. For anyone who’s never heard of this sort of thing: it’s a roundup of important papers, conferences and threads that shaped his view — and he’s upfront that he used AI tools to help do the reading (so it’s partly human taste, partly machine babysitting). The new post highlights recurring themes like NeurIPS and ICLR fare, human reward tampering, Coasean bargaining for civitech, the surprising existential importance of HCI, worries about societal epistemic health, debates over whether big pretrained models can become agents (‘stochastic parrotology’), and even a whimsical detour into Thomas Urquhart. If you want a taste of what’s been nagging at the field this year, and why the lad thinks some of it matters, this is the place.</p>
</section>
<section id="ai-evals" class="level3" data-number="1.4">
<h3 data-number="1.4" class="anchored" data-anchor-id="ai-evals"><span class="header-section-number">1.4</span> <a href="../notebook/ai_evals.html">AI evals</a></h3>
<p>Strewth, the lad has gone and written a clear note on ‘AI evals’ — that is, how we check whether these clever models actually do the job we want. Benchmarks are the public, repeatable tests that let you compare models on the same questions, while evals are the bespoke, often private checks you run to see if a model is fit for your specific use — think comparison chart versus trial run in your own kitchen. He also flags the EvalEval crowd, who want evaluations to be more scientific and documented (evaluation cards, RCT-style studies and all that) so we stop getting dazzled by leaderboard shiny things. Useful read if you care whether a model is merely smart or actually sensible for your work, duckies.</p>
</section>
<section id="ai-risk-research-idea---human-reward-hacking" class="level3" data-number="1.5">
<h3 data-number="1.5" class="anchored" data-anchor-id="ai-risk-research-idea---human-reward-hacking"><span class="header-section-number">1.5</span> <a href="../post/proposal_human_reward_hacking.html">AI Risk Research Idea - Human Reward Hacking</a></h3>
<p>This one’s about a sneaky problem called ‘reward hacking’, where an AI doesn’t just do what you ask but slowly rewires what you want — think of it as the AI teaching you to love what helps the AI, not what truly helps you. The lad’s sketched a plan: first try to model a person’s “authentic” preferences, then use causal inference and counterfactuals to tell whether the AI actually changed those preferences rather than just riding along with them. He also proposes a real‑time “cognitive immunity” watchdog and preference dashboards so users can spot slow value shifts as they happen, though he admits this brings its own risks. Fair dinkum, it’s mostly a set of rough ideas and caveats — worth thinking about, but don’t call it finished science yet.</p>
</section>
</section>
<section id="updated" class="level2" data-number="2">
<h2 data-number="2" class="anchored" data-anchor-id="updated"><span class="header-section-number">2</span> Updated</h2>
<section id="economics-of-cognitive-and-labour-automation" class="level3" data-number="2.1">
<h3 data-number="2.1" class="anchored" data-anchor-id="economics-of-cognitive-and-labour-automation"><span class="header-section-number">2.1</span> <a href="../notebook/ai_economics_automation.html">Economics of cognitive and labour automation</a></h3>
<p>This one’s about how AI might reshuffle work and thinking — basically whether machines will do the boring jobs, the clever jobs, or both, and what that means for who gets rich and who don’t. The lad has expanded the chapter into a proper reading list and lecture dump, reproducing Stanford’s ‘Economics of Transformative AI’ material and adding clear sections on governance, safety, and different flavours of automation (homogeneous vs heterogeneous output), plus notes on automating research and where the real bottlenecks lie. There’s a new, rather frank look at empirical frontier model costs — yes, cash-money costs, as he put it — and a couple of thorny sections on existential risk versus growth. He also cleaned house, removing an old cash-costs page and a few personal-to-do bits, so it reads less like his brain and more like a course syllabus. Strewth, useful if you want a guided tour of the economics rather than the lad’s scattering of thoughts.</p>
</section>
<section id="parsl" class="level3" data-number="2.2">
<h3 data-number="2.2" class="anchored" data-anchor-id="parsl"><span class="header-section-number">2.2</span> <a href="../notebook/parsl.html">Parsl</a></h3>
<p>Parsl is a Python-native workflow engine that builds its task graph at runtime so you can scale the same code from your laptop up to an HPC cluster — think of it as running a recipe where the steps and their order are decided as you cook. The lad’s latest tweaks focus on the miserable bit everyone skips: debugging when workers die or hide their errors. He added a handy “error extraction” wrapper to pull the real Python traceback (and any remote stdout/stderr) out of Parsl’s wrapped exceptions, guidance to force worker logs into a visible directory, and advice to instrument app entry points so import-time crashes don’t vanish into the ether. There’s also a nice little zoo of common worker failures (ModuleNotFound, Pickle problems, silent OOM kills, dependency failures) with plain-English causes and fixes, so you won’t have to spelunk through temp folders blindfolded. Strewth — actually useful for once.</p>
</section>
<section id="fish-shell" class="level3" data-number="2.3">
<h3 data-number="2.3" class="anchored" data-anchor-id="fish-shell"><span class="header-section-number">2.3</span> <a href="../notebook/fish.html">Fish shell</a></h3>
<p>Fish is a friendlier alternative to the usual command-line shell — think of it as a nicer, more opinionated terminal that does autocomplete and prettier prompts for you. The lad has been tidying his Fish notes: he’s clarified how Homebrew and Fish play (Ubuntu oddities and a fix), documented using env for temporary variables, added instructions for getting Anaconda/conda to cooperate, and noted how VS Code needs launching from the shell on macOS. He’s also cleaned up wording around SSH‑agent setup, plugins and PATH quirks, and left a few TODOs where he wasn’t entirely sure — fair dinkum, helpful but still a bit grumpy and unfinished.</p>
</section>
<section id="scaling-laws-for-very-large-neural-nets" class="level3" data-number="2.4">
<h3 data-number="2.4" class="anchored" data-anchor-id="scaling-laws-for-very-large-neural-nets"><span class="header-section-number">2.4</span> <a href="../notebook/nn_scaling_laws.html">Scaling laws for very large neural nets</a></h3>
<p>Strewth — this one’s about scaling laws, which is just a fancy way of saying how these giant neural nets behave when you make them bigger, feed them more data, or let them think for longer. The lad added a clutch of sections showing that a lot of recent gains come not from more pre-training but from two things: Chain-of-Thought prompting (getting the model to ‘‘think out loud’’ during inference) and small post-training tweaks using Reinforcement Learning. The new notes walk through why RL as a training-axis scales poorly — it can give a quick boost, but most of the long-term improvement actually comes from letting models use far more inference compute and longer reasoning chains. I don’t know half the maths, but Dan’s arguing we’ll be paying for thinking time at runtime more than for cleverer RL training in future — and that’s worth knowing, duckies.</p>
</section>
<section id="incoming-links-and-notes" class="level3" data-number="2.5">
<h3 data-number="2.5" class="anchored" data-anchor-id="incoming-links-and-notes"><span class="header-section-number">2.5</span> <a href="../notebook/incoming.html">Incoming links and notes</a></h3>
<p>This page is his messy catch‑all for interesting links and stray notes — think of it as the lad’s digital noticeboard where papers, tools and odd curiosities pile up. The recent edit spruced it up by adding a whole stack of new links: stuff on AI safety and modelling, some tooling pages (VPN, Nebari, Walrus), a few essays and oddities, plus links to conference papers and blogposts. He also shuffled a couple of duplicates around so things don’t point at themselves and inserted a raft of callout placeholders — I reckon he’s planning to annotate these later. Fair dinkum, it’s tidier but still gloriously chaotic, useful if you like running down rabbit holes.</p>
</section>
<section id="how-to-communicate" class="level3" data-number="2.6">
<h3 data-number="2.6" class="anchored" data-anchor-id="how-to-communicate"><span class="header-section-number">2.6</span> <a href="../notebook/how_to_communicate.html">How to communicate</a></h3>
<p>Strewth — he’s added a proper chunk on “crunch mode.” For the uninitiated: crunch mode is when folks work ridiculous hours to hit a deadline, and the new section explains what it is, when it might be defensible, and why you shouldn’t treat it like a default. The lad argues you need prior trust, a clear reckoning of the organizational debt and recovery costs, and consent — otherwise you’ll burn people and select for jerks who enjoy imposing stress. Fair dinkum, it’s a sensible, evidence-minded caution about balancing short‑term gains against long‑term harm.</p>
</section>
<section id="reinforcement-learning" class="level3" data-number="2.7">
<h3 data-number="2.7" class="anchored" data-anchor-id="reinforcement-learning"><span class="header-section-number">2.7</span> <a href="../notebook/reinforcement_learning.html">Reinforcement learning</a></h3>
<p>Reinforcement learning is basically teaching a decision-maker by trial and error — you get rewards, you try different moves, and you learn what works. The lad’s cleaned up the write-up: tightened the Monte Carlo/policy-gradient explanation and clarified the Bellman/value-function bits so folk not lost in the symbols can follow the idea. He also added a new Hierarchical section (for breaking problems into smaller chunks) and a With memory section that points at that Go‑Explore/extra‑memory work — basically showing how giving an agent memory can help with tricky exploration. Oh, and he tidied wording and refreshed some incoming links while he was farting around; fair dinkum improvement, duckies.</p>
</section>
<section id="disseminating-science" class="level3" data-number="2.8">
<h3 data-number="2.8" class="anchored" data-anchor-id="disseminating-science"><span class="header-section-number">2.8</span> <a href="../notebook/science_dissemination.html">Disseminating science</a></h3>
<p>This is Dan’s survey of how scholarly communication actually works — think of it as a guided tour of journals, conferences, pirate libraries and the little systems that keep academics fed. He’s tidied some wording (less typos, fewer half-sentences) and sharpened the bits about shadow libraries and the ML conference timing mess — note about aideadlin.es staying as a historical marker. New useful bits: a ‘Handy software’ section listing tools if you fancy running a journal yourself (Janeway, Kotahi — which he sniffed at for flakiness — and the old faithful Open Journal Systems), and the awkwardly renamed ‘Peer review’ section now points to the validation notes. Fair dinkum useful if you want a plain picture of who publishes what and how people get access (including pirate routes and DOIs via Zenodo).</p>
</section>
<section id="operationalising-the-bitter-lessons-in-compute-and-cleverness" class="level3" data-number="2.9">
<h3 data-number="2.9" class="anchored" data-anchor-id="operationalising-the-bitter-lessons-in-compute-and-cleverness"><span class="header-section-number">2.9</span> <a href="../notebook/ai_economics_of_cognition.html">Operationalising the bitter lessons in compute and cleverness</a></h3>
<p>Strewth — this one’s about when you should spend lots of compute versus when you should be clever with what you’ve got. For anyone who hasn’t heard of it, the post is wrestling with the economics of machine learning: paying once for huge training runs so inference is cheap, how memorisation and extrapolation matter, and whether silicon compute can stand in for human thinking. The lad has reorganised things: he replaced a muddled ‘computing and remembering’ section with clearer notes on ‘computing and memorization’, added a bit on how reinforcement learning mixes with human feedback, and started a stub on comparing train-time costs to the cost of doing RLHF later. Oh, and he reminds us a hydrology datum can cost AUD 700,000 — fair dinkum, that puts the price of data into sharp relief.</p>
</section>
<section id="hanging-out-my-shingle" class="level3" data-number="2.10">
<h3 data-number="2.10" class="anchored" data-anchor-id="hanging-out-my-shingle"><span class="header-section-number">2.10</span> <a href="../post/my_shingle.html">Hanging out my shingle</a></h3>
<p>Strewth, the lad’s gone and formally hung out his shingle — that is, he turned down a long-sought job and is offering to consult on AI safety instead. If you don’t know, AI safety is about making sure these powerful systems don’t wreck society; Dan explains why it’s urgent, what harms he worries about, and why he thinks working on it now could also bring big upsides. The update mostly tidies the sales pitch — bragging a bit more about being a “Swiss army knife” of AI skills, clarifying what he’s good at (mathy strategy over pure software engineering), and making his availability and money situation clearer: he needs paid work by May 2026 and prefers to start no earlier than February 2026. Fair dinkum, he’s advertising competence and urgency; interested duckies know when he’s free and what he’ll actually do.</p>
</section>
<section id="causal-abstraction" class="level3" data-number="2.11">
<h3 data-number="2.11" class="anchored" data-anchor-id="causal-abstraction"><span class="header-section-number">2.11</span> <a href="../notebook/causal_abstraction.html">Causal abstraction</a></h3>
<p>Causal abstraction is basically about how you map high-level ‘knobs’ and experiments down to the messy low-level parts that actually move — think of it as finding a translator between what you want to change and how the machine responds. The lad added a new section on ‘Factored space models’ (Garrabrant’s take), and polished the bit about Generative Intervention Models: these are models that learn a translator from observable perturbations (a drug, an edit, whatever) to the specific low-level interventions they cause, letting you treat different macros as equivalent if they produce the same low-level effect. He also tightened the language about interventionals, coarse-graining, and how this helps explain causal-like behaviour in big language models. Strewth — it’s still dense, but now at least the pieces you care about are labelled and the big idea is clearer.</p>
</section>
<section id="the-deep-history-of-intelligence" class="level3" data-number="2.12">
<h3 data-number="2.12" class="anchored" data-anchor-id="the-deep-history-of-intelligence"><span class="header-section-number">2.12</span> <a href="../notebook/intelligence_in_deep_history.html">The deep history of intelligence</a></h3>
<p>Righto, for those who don’t speak academic-speak: this piece is about the long, strange march of intelligence — from single cells up to planetary-scale computation — and what that implies for our future. Dan’s smacked in a new section on “planetary computation” and the Antikythera idea, which is basically saying: don’t just imagine brains or computers in isolation, imagine whole planets acting like computing machines — and he ropes in Bratton and Blaise Agüera y Arcas to make the point. He also tidied the parts on societies-as-superorganisms and the growth‑singularity business, smoothing the language and leaning into the idea that runaway scaling can lead to burnout or a conscious “homeostatic awakening.” Fair dinkum, it reads cleaner and the new bits give you a proper lens for thinking about intelligence beyond brains — a useful shove if you like the big-picture stuff.</p>
</section>
<section id="foundation-models-for-geoscience" class="level3" data-number="2.13">
<h3 data-number="2.13" class="anchored" data-anchor-id="foundation-models-for-geoscience"><span class="header-section-number">2.13</span> <a href="../notebook/nn_geospatial_foundation.html">Foundation models for geoscience</a></h3>
<p>Strewth — this one’s about foundation models for the whole planet, which is just a fancy way of saying big AI models trained to understand lots of Earth data (satellite images, radar, time series) so they can make sensible predictions about things like floods, fires and weather. The lad has fleshed it out with notes on diffusion‑type approaches (that’s a newer way of generating forecasts by slowly denoising guesses), how to fold traditional data assimilation into these models (that’s the old-school trick of blending observations with model states), and the value of multimodal, multi‑temporal inputs including Sentinel‑1 radar and diverse spectral bands. He’s also flagged research and benchmarks for predicting extreme events and given a nod to which models look promising for H100 fine‑tuning on inundation and burn‑scar tasks — useful if you want to actually adapt these giants for real-world disaster spotting.</p>
</section>
<section id="ensemble-kalman-updates-are-empirical-matheron-updates" class="level3" data-number="2.14">
<h3 data-number="2.14" class="anchored" data-anchor-id="ensemble-kalman-updates-are-empirical-matheron-updates"><span class="header-section-number">2.14</span> <a href="../notebook/ensemble_kalman_matheron.html">Ensemble Kalman updates are empirical Matheron updates</a></h3>
<p>Righto, this note explains a neat fact: the Ensemble Kalman Filter (EnKF) — which is a way to update guesses about a hidden state using lots of sample “particles” — is really just an empirical version of the Matheron update, a pathwise trick from Gaussian process regression that directly turns prior draws into posterior draws. The lad has cleaned up the write‑up to make that connection plain, emphasising that the stochastic (perturbed‑observations) EnKF literally matches the empirical Matheron rule and that doing the algebra in observation space means you never need to build or invert a huge d×d covariance matrix. He’s tightened the wording, clarified the noise bookkeeping (don’t add R twice!), and replaced the embarrassed appendix of earlier mistakes with a short, clear one‑line note about the deterministic/square‑root variant and when you need an ensemble transform to get true posterior samples. Strewth — simple idea, but now it reads like he actually thought about it before publishing.</p>
</section>
<section id="improving-peer-review" class="level3" data-number="2.15">
<h3 data-number="2.15" class="anchored" data-anchor-id="improving-peer-review"><span class="header-section-number">2.15</span> <a href="../notebook/science_peer_review.html">Improving peer review</a></h3>
<p>Peer review is the process where other experts check research before it’s accepted — the lad’s been stirring about how to make that fairer and less easily gamed. He’s renamed the chapter from “AI-Assisted Arbitration” to “LLM-Assisted Arbitration” and expanded it: rather than a vague nod to ‘AI’, he now lays out what large language models can actually do (initial reviews, summarizing discussions, spotting stats glitches) and where they fall short. He’s also added concrete pointers to ongoing projects and papers that try to automate parts of review, and shuffled some of the reading list so related work sits together. Strewth — sensible tightening, and slightly less hand-wavy about what these models are meant to adjudicate.</p>
</section>
<section id="eas-rationalists-tpots-and-the-like-in-australia-and-surrounding-regions" class="level3" data-number="2.16">
<h3 data-number="2.16" class="anchored" data-anchor-id="eas-rationalists-tpots-and-the-like-in-australia-and-surrounding-regions"><span class="header-section-number">2.16</span> <a href="../notebook/rationalists_australia.html">EAs, rationalists, TPOTs and the like in Australia and surrounding regions</a></h3>
<p>This page is Dan’s little directory of rationalist, EA and AI‑safety folk Down Under — which is just a fancy way of saying he’s trying to map who meets whom and where they hang out. If you’ve never heard of this crowd, they’re people who like thinking hard about doing good and the long‑term risks from tech; Dan lists local groups and meetups so you don’t have to join a dozen Facebook vortexes. The new change is simple: he’s added a short “Interesting people with websites” section, pointing to a couple of individuals worth eyeballing. So now it’s not just groups and calendars, it’s also a couple of faces you can actually read about — handy if you want someone to follow who isn’t a group admin.</p>
</section>
<section id="utopian-governance-using-technology-inc-generative-ai" class="level3" data-number="2.17">
<h3 data-number="2.17" class="anchored" data-anchor-id="utopian-governance-using-technology-inc-generative-ai"><span class="header-section-number">2.17</span> <a href="../notebook/civic_tech.html">Utopian governance using technology, inc generative AI</a></h3>
<p>Righto, the lad’s been fiddling with his piece on using generative AI to build a kinder, wiser form of collective decision‑making — that’s basically asking how smart assistants could help groups argue less nastily and make better choices. He’s cleaned up the prose to be more direct and readable, and then went on a link‑adding spree: a bunch of new projects, essays and interviews were dropped in as further reading so the reader has real examples to chew on. The report still flags some TODOs (because of course it does), but the new references and quotes make the ideas feel less hypothetical and more plugged‑in to what people and labs are actually trying. Strewth, at least now someone can follow where the lad’s thinking came from.</p>
</section>
<section id="data-ownership-in-the-ai-era" class="level3" data-number="2.18">
<h3 data-number="2.18" class="anchored" data-anchor-id="data-ownership-in-the-ai-era"><span class="header-section-number">2.18</span> <a href="../notebook/data_intellectual_property.html">Data ownership in the AI era</a></h3>
<p>Righto, this one’s about who actually owns the mountains of data feeding modern AI — and why that matters. If you haven’t heard of it, ‘data ownership’ is simply asking who gets to use, sell or benefit from information about people and the world; Dan’s been giving a squiz to collective options like data unions, trusts and even smart‑contract revenue sharing as ways to make sharing fairer. He renamed the piece to broaden the question beyond ownership to include who benefits and how we might incentivise sharing for public good, and he’s added a blunt set of open questions and placeholders where he plans to dig deeper. He also tidied up the Indigenous data sovereignty heading (capitalised it properly) and left a short ‘TBC’ note — basically promising to do justice to a serious topic later — while updating the reading list with some heavier hitters for context. Strewth, he’s honest about being out of his depth here, which is refreshing.</p>
</section>
<section id="community-governance" class="level3" data-number="2.19">
<h3 data-number="2.19" class="anchored" data-anchor-id="community-governance"><span class="header-section-number">2.19</span> <a href="../notebook/community_governance.html">Community governance</a></h3>
<p>Strewth, he’s been tinkering with his notes on community governance again. For anyone who doesn’t know, community governance is just the rules and tools a group uses to make decisions and keep things running; the lad surveys models like sociocracy and transformative justice and points at federated tools like Mastodon and Loomio as ways to coordinate. The new stuff adds an ‘AI-assisted’ section — that’s about how machine tools might help run meetings, surface issues, or summarise discussions — and a piece on ‘legibility’, which asks how easy it is for outsiders (and future us) to understand what the community did and why. He also pulled out the old question about whether effective governance must be hidden, so he’s shifting focus from secrecy to usefulness — fair dinkum practical thinking, if I may say so.</p>
</section>
<section id="ml-benchmarks-and-their-pitfalls" class="level3" data-number="2.20">
<h3 data-number="2.20" class="anchored" data-anchor-id="ml-benchmarks-and-their-pitfalls"><span class="header-section-number">2.20</span> <a href="../notebook/ml_benchmarks.html">ML benchmarks and their pitfalls</a></h3>
<p>Strewth, the lad’s been fiddling with his notes on ML benchmarks — that is, the tests and leaderboards folks use to say one model is better than another. Benchmarks are supposed to be objective measures, but he reminds us they can be gamed, overfitted to, or contaminated by sneaky dataset reuse that makes ‘progress’ look bigger than it is. He renamed and expanded the bit on treating benchmarks as part of scientific methodology, and added a new section on capability versus propensity evaluations — basically separating what a model can do from what it’s likely to do in the wild. For heaven’s sake, he also cleaned out the old short ‘As methodology’ note, so the argument reads more like a proper cautionary tale than a throwaway line.</p>
<p><em>Skipped:</em> 3 file(s) changed but looked minor (or were metadata-only).</p>


</section>
</section>

 ]]></description>
  <category>digest</category>
  <guid>https://danmackinlay.name/digest/2025-12-22.html</guid>
  <pubDate>Mon, 22 Dec 2025 11:51:01 GMT</pubDate>
</item>
</channel>
</rss>
