<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://po-ru.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://po-ru.com/" rel="alternate" type="text/html" hreflang="en-GB" /><updated>2026-10-14T18:50:39+00:00</updated><id>https://po-ru.com/feed.xml</id><title type="html">po-ru.com</title><subtitle>Paul Battley’s blog, publishing since 2002</subtitle><entry><title type="html">Week 301: The barbarism will be televised</title><link href="https://po-ru.com/2026/10/14/week-301-the-barbarism-will-be-televised" rel="alternate" type="text/html" title="Week 301: The barbarism will be televised" /><published>2026-10-14T16:56:00+00:00</published><updated>2026-10-14T16:56:00+00:00</updated><id>https://po-ru.com/2026/10/14/week-301-the-barbarism-will-be-televised</id><content type="html" xml:base="https://po-ru.com/2026/10/14/week-301-the-barbarism-will-be-televised"><![CDATA[<p><strong>We arrived back from Brighton</strong> on Monday afternoon, and I proposed that we
take the 381 bus that conveniently goes from London Bridge station to the end
of our road. It’s a little slower than taking the Jubilee line and walking, but
it’s cheaper and we had baggage.</p>

<p>After waiting for 20 minutes, the bus turned up, only to terminate short at
Southwark Park. We stepped off and waited some time for the next bus, only to
find that that one was terminating there as well. Finally, a C10 bus (also
a viable option for the last leg) came and we made it home much later than
we should have, and much later than we would have if we’d just taken the Tube.</p>

<p><strong>When it comes to getting to Greenwich</strong> from here, there are no train or Tube
options: it’s either bus or self-propulsion. (Or driving, I suppose, if you’re
a psychopath.) On our way to the Queen’s House in Greenwich for a concert, we
walked to the bus stop in good time, only to see that the bus had disappeared
and the next one wasn’t for 25 minutes. That wasn’t enough time, so we had to
find Lime bikes and cycle there. Fine, but less relaxing than I’d intended, and
even less so when we had to walk all the way around the circumference of
the fence (400 m on the long side) to find the un-signposted side gate
that was the only one open for the concert.</p>

<p>The concert, of Italian music from the 16th and 17th centuries, was excellent.
Two of the musicians also sang: Lucine Musaelian while playing viola da gamba,
and Kristiina Watt while playing lute and theorbo. I was particularly struck by
how modern Barbara Strozzi’s (1619–1677) <em>Eraclito Amoroso</em> sounded with
Musaelian’s powerful voice over arpeggios backed by descending bass lines.</p>

<p>I don’t think I can trust London buses any more, however, after this week.</p>

<p><strong>On Sunday night</strong> we went to <a href="https://www.hackneyempire.co.uk/events/the-worst-poets-club">The Worst Poets Club</a> at the Hackney
Empire.</p>

<blockquote>
  <p>With each one of them having been told they are the worst poet in existence,
four of the UKs bestselling poets decided to form a club.</p>

  <p>After a decade of headlines, articles, comments and occasional strangers in
person have claimed them as the worst poets, most terrible, mediocre, not
even a poet poets, individually and collectively to blame for the downfall of
modern poetry, Hollie McNish, Nikita Gill, Donna Ashworth and Len Pennie have
come together to form <em>The Worst Poets Club</em>.</p>
</blockquote>

<p>It was at times moving, at times very funny. All four are good on stage; Len
Pennie’s deadpan delivery of pitch-black humour was particularly entertaining.</p>

<p>(There was indeed verse in <a href="https://codepoetics.substack.com/p/anapests-enow">anapestic tetrameter</a>, but I can think of another
Scots poet who makes plenty of use of that form but for <em>some</em> reason <em>he</em>
doesn’t get lambasted for it.)</p>

<p><strong>The rogue superpower</strong> known as the United States of
America made two further big steps in its moral decline.</p>

<p>First, Pete Hegseth, the guy covered in disturbing <a href="https://newlinesmag.com/essays/pete-hegseths-tattoos-and-the-crusading-obsession-of-the-far-right/">Christian nationalist
tattoos</a> who is currently employed as United States Secretary of
Defense (or is it War?), announced a plan to <a href="https://www.reuters.com/world/us-livestream-army-execution-fort-hood-shooter-pentagon-official-says-2026-10-08/">livestream an
execution</a>. I don’t think there’s any place for executions in a
civilised society, but <em>televised</em> executions are a level of depravity
far below that, one that puts them in unpleasant company.</p>

<p>Then, the next day, the US announced that it was <a href="https://www.state.gov/releases/office-of-the-spokesman/2026/10/imposing-sanctions-on-the-international-criminal-court-2/">imposing sanctions</a> on the
entirety of the International Criminal Court. Canada, Denmark, Germany, France,
Italy, Japan, the Netherlands and the United Kingom released a <a href="https://www.canada.ca/en/global-affairs/news/2026/10/joint-statement-of-the-foreign-ministers-of-canada-denmark-germany-france-italy-japan-the-netherlands-and-the-united-kingdom.html">joint
statement</a> stating that they “regret and strongly disagree” but they’re all
still allies and sharing intelligence, and nobody made a big deal about it when
the US sanctioned ICC judges and officials in <a href="https://www.state.gov/imposing-sanctions-in-response-to-the-iccs-illegitimate-actions-targeting-the-united-states-and-israel/">June 2025</a> (4 people), <a href="https://www.state.gov/releases/office-of-the-spokesperson/2025/08/imposing-further-sanctions-in-response-to-the-iccs-ongoing-threat-to-americans-and-israelis/">August
2025</a> (2 people), or <a href="https://www.state.gov/releases/office-of-the-spokesman/2026/08/advancing-the-united-states-campaign-to-address-the-threat-posed-by-the-international-criminal-court/">August 2026</a> (4 people). You won’t find any <a href="https://www.gov.uk/search/all?keywords=international+criminal+court">statements
on GOV.UK</a> about all those.</p>

<p>The US never signed up to the ICC, preferring to be able to commit crimes
against humanity with impunity, but sanctioning it is a step further in
undermining human rights around the world. I hope the ICC had completed 
<a href="https://www.rapporteur.com/news/international-criminal-court-to-ditch-microsoft-office-for-european-open-source-alternative/">moving its computing away from Microsoft</a>.</p>

<p><strong>OpenAI published “solutions”</strong> to hundreds of outstanding problems
in mathematics, (several of which were then retracted for trivial errors) in a
way that doesn’t necessarily further the actual practice of mathematics but
does make it harder for anyone to have an academic career in the field. What
I see is a gleeful destruction of whole fields of endeavour, like children
pulling the wings off butterflies, just because they can, with no real care for
the wider consequences.</p>

<blockquote>
  <p>Armstrong said he knew of one group whose entire research program was
practically “wiped out” by the release. Tristan Buckmaster, an NYU
mathematician who was at the center of OpenAI’s earlier dispute over the
Navier-Stokes problem, meanwhile, said he had already heard of “three people
who had entire research programs obliterated.”</p>

  <footer><cite><a href="https://www.theverge.com/ai-artificial-intelligence/1008726/openai-mathematics-solutions-chaos">‘Pure insanity’: Mathematicians will need years to make sense of OpenAI’s latest drop</a></cite></footer>
</blockquote>

<blockquote>
  <p>To [researchers who work with big AI companies] I say: learn from history
and get out now. You’ll still be ahead of the curve. The current backlash
against AI may seem huge, but it’s nothing compared to what I think the
backlash will be in coming years.</p>

  <footer><cite><a href="https://www.patreon.com/vihart/posts/vi-harts-big-171939430">Vi Hart’s Big Navier-Stokes Post</a></cite></footer>
</blockquote>

<p>The people working at OpenAI, Anthropic, etc. would do well to remember that
the more vocations and livelihoods they destroy while promising human
extinction, the more enemies they make, and no amount of money will save you
when everyone hates you.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[We arrived back from Brighton on Monday afternoon, and I proposed that we take the 381 bus that conveniently goes from London Bridge station to the end of our road. It’s a little slower than taking the Jubilee line and walking, but it’s cheaper and we had baggage.]]></summary></entry><entry><title type="html">Co-op Legal Services and the fully automated employee panopticon</title><link href="https://po-ru.com/2026/10/08/co-op-legal-services-and-the-fully-automated-employee-panopticon" rel="alternate" type="text/html" title="Co-op Legal Services and the fully automated employee panopticon" /><published>2026-10-08T12:10:00+00:00</published><updated>2026-10-08T12:10:00+00:00</updated><id>https://po-ru.com/2026/10/08/co-op-legal-services-and-the-fully-automated-employee-panopticon</id><content type="html" xml:base="https://po-ru.com/2026/10/08/co-op-legal-services-and-the-fully-automated-employee-panopticon"><![CDATA[<p>An <a href="https://www.theguardian.com/technology/2026/oct/08/co-op-legal-services-ai-customer-phone-call-surveillance">article in the Guardian</a> describes how Co-op Legal Services are using
a system produced by OpenAI to implement a quantified panopticon for their
staff.</p>

<blockquote>
  <p>In a system described as “oppressive and dystopian” by a whistleblower, Co-op
Legal Services is using AI models to record, analyse and award a percentage
score for interactions between agents and customers seeking advice about
probate, wills and estates.</p>

  <p>A model from OpenAI has been trained to assess more than 50 discrete aspects
of each phone call and provide pass and fail scores to managers who use the
data to analyse employee performance. One worker said the system can mean
their work is monitored by AI for several hours a day as they handle
inquiries often from recently bereaved customers.</p>
</blockquote>

<p>I am a <a href="https://www.coop.co.uk/membership">member of the Co-op</a> and I don’t like the sound of this at all,
so I wrote to them <a href="https://www.co-oplegalservices.co.uk/about-us/complaints-procedure/full-complaints-procedure/">at their complaints email address</a>. Here’s my
email.</p>

<blockquote>
  <p>I am a Co-op member (number [REDACTED]) but after having read about the AI
panopticon that you are placing your staff under (“<a href="https://www.theguardian.com/technology/2026/oct/08/co-op-legal-services-ai-customer-phone-call-surveillance">‘Dystopian’: Co-op
becomes latest firm to put staff under AI surveillance</a>” in The Guardian),
I won’t be choosing Co-op Legal Services for any legal services I require in
the future.</p>

  <p>Human beings are not simply fungible units of work resource, and placing them
under constant automated monitoring and rating is degrading, dehumanising,
and stress-inducing. Large language models (LLMs) are not objective; on the
contrary, they encode the underlying biases of their training material –
material that includes as much internet content as the companies making them
can scrape, including content that is sexist, racist, or otherwise bigoted –
but in a way that makes it impossible to evaluate <em>why</em> they might have
produced their conclusions.</p>

  <p>Using LLMs to perform this monitoring adds significant environmental cost, and
helps to further entrench the power of American megacorporations – OpenAI in
this case – who do not have the best interests of members or even of humanity
at heart. Sam Altman, chief executive of OpenAI, might believe that we must
“<a href="https://www.cbc.ca/radio/asithappens/the-aih-transcript-for-october-5-2026-9.7372215">[accept] the fact that some bad things are going to happen</a>”, but we
don’t have to actively contribute to them.</p>

  <p>I believe that this use of AI surveillance is contrary to several of the
Co-operative principles, specifically:</p>

  <ul>
    <li>Self responsibility: because staff who are constantly observed are not able
to enjoy their own responsibility.</li>
    <li>Solidarity: with workers, with those whose artistic work has been ingested
and plagiarised by LLMs, with those whose homes are blighted by hyperscale
data centres, and with everyone else whom the AI megacorporations consider
to be acceptable collateral damage.</li>
    <li>Social responsibility: because the environmental cost of AI data centres is
destroying habitats and increasing power consumption at a point when our
planet can least afford it.</li>
  </ul>

  <p>Indeed, it is with the principle of solidarity for employees of Co-op Legal
Services that I write to you today. I urge you to take a step back, instead
of rushing towards a future that will be bad for everyone, but especially bad
for the employees who find themselves at the sharp end of this technology.</p>
</blockquote>

<p>In retrospect, I missed the obvious point that as a customer I wouldn’t want
the contents of my conversations being fed into Altman and Brockman’s
plagiarism machine, either, but perhaps you’d like to add that to your own
email to them.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[An article in the Guardian describes how Co-op Legal Services are using a system produced by OpenAI to implement a quantified panopticon for their staff.]]></summary></entry><entry><title type="html">All our houses are built on sand now</title><link href="https://po-ru.com/2026/10/07/all-our-houses-are-built-on-sand-now" rel="alternate" type="text/html" title="All our houses are built on sand now" /><published>2026-10-07T15:36:00+00:00</published><updated>2026-10-07T15:36:00+00:00</updated><id>https://po-ru.com/2026/10/07/all-our-houses-are-built-on-sand-now</id><content type="html" xml:base="https://po-ru.com/2026/10/07/all-our-houses-are-built-on-sand-now"><![CDATA[<blockquote>
  <p>And every one that heareth these sayings of mine, and doeth them not, shall
be likened unto a foolish man, which built his house upon the sand: And the
rain descended, and the floods came, and the winds blew, and beat upon that
house; and it fell: and great was the fall of it.</p>

  <footer><cite>Matthew 7:26–27</cite></footer>
</blockquote>

<p>This was originally going to be called something like, “How slopcoded is your
programming language?” But as I gathered the data, I found something else –
something worse.</p>

<!--8<-->

<p>Almost every popular language is now substantially developed using LLMs.
Particularly notable are C# and Ruby (both approximately one third of recent
commits) and Julia (over half!). The languages that stand out in retaining
their humanity are Chicken Scheme, Perl, Lua, Clojure, and – perhaps
surprisingly for a project so closely associated with Oracle, a company who
have gone all-in on hyperscale data centres and “AI” in everything – Java.</p>

<p>However, all of these rely on a C compiler (indirectly via the JVM in the case
of Clojure), and both of the main C compilers now receive significant amounts
of LLM commits. I’m not so surprised by LLVM (15.9%), but I am disappointed by
GCC (3.1% and apparently rising). Outsourcing your thinking to megacorporations
and commercial tools seems out of step with the GNU ethos of freely available
source that anyone can modify: code that is generated by machines quickly
becomes code that is only parsed and modified by machines, and a subscription
to OpenAI or Anthropic becomes the (financial, environmental, and geopolitical)
price of entry.</p>

<p>In 1984, in his acceptance speech for the ACM Turing Award, <a href="https://web.archive.org/web/20010606172606/http://www.acm.org/classics/sep95/">Ken Thompson
described a method</a> by which a compiler could be subverted so that it would
always insert a backdoor into the UNIX <code class="language-plaintext highlighter-rouge">login</code> command, and, furthermore, when
used to compile itself would insert a similar subversion into new versions of
the compiler. Once this has been achieved, no one has access to an
uncompromised compiler.</p>

<blockquote>
  <p>The moral is obvious. You can’t trust code that you did not totally create
yourself. (Especially code from companies that employ people like me.) No
amount of source-level verification or scrutiny will protect you from using
untrusted code. In demonstrating the possibility of this kind of attack, I
picked on the C compiler. I could have picked on any program-handling program
such as an assembler, a loader, or even hardware microcode. As the level of
program gets lower, these bugs will be harder and harder to detect. A well
installed microcode bug will be almost impossible to detect.</p>
</blockquote>

<p>Does it matter how slopcoded your language is or isn’t, when everything below
it is slop?</p>

<p>(A small note for clarification: it is the <em>ethical</em> contamination that I am
most concerned about. It is no longer possible to produce software that is free
of LLM output, even if you don’t use it yourself, even if you use a language
that doesn’t use it itself.)</p>

<h3 id="methodology">Methodology</h3>

<p>I cloned the source repositories for implementations of programming languages
that ranked highly on <a href="https://www.tiobe.com/tiobe-index/">TIOBE</a> and <a href="https://langpop.com/rankings">LangPop</a>. For each, I performed a shallow
clone going back to the start of July:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone <span class="nt">--shallow-since</span><span class="o">=</span>2026-07-01 <span class="k">${</span><span class="nv">url</span><span class="k">}</span>
</code></pre></div></div>

<p>I then wrote a short script that takes a three-month period and counts the
number of commits that appear to be LLM-assisted. This is determined by</p>

<ul>
  <li>the phrase “AI disclosure” or “LLM disclosure”;</li>
  <li>an <code class="language-plaintext highlighter-rouge">Assisted-by:</code> field; or</li>
  <li>a <code class="language-plaintext highlighter-rouge">Co-authored-by:</code> field with the email address of a known bot.</li>
</ul>

<p>This isn’t perfect – I saw one commit that had a disclosure field followed
by “none” and a link to a manifesto opposing LLM-assisted coding, but I don’t
think those edge cases are significant.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>

<span class="nv">bots</span><span class="o">=</span><span class="s2">"ai disclosure|llm disclosure|assisted-by:|co-authored-by:.*(noreply@openai.com|noreply@anthropic.com|cursoragent@cursor.com|copilot@users.noreply.github.com)"</span>
<span class="nv">date_since</span><span class="o">=</span><span class="s2">"2026-07-05"</span>
<span class="nv">date_until</span><span class="o">=</span><span class="s2">"2026-10-06"</span>

<span class="nb">cd </span>repos
<span class="k">for </span>repo <span class="k">in</span> <span class="k">*</span><span class="p">;</span> <span class="k">do
  </span><span class="nb">cd</span> <span class="k">${</span><span class="nv">repo</span><span class="k">}</span>
  <span class="nv">total</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span>
    git log <span class="nt">--oneline</span> <span class="se">\</span>
      <span class="nt">--since</span><span class="o">=</span><span class="k">${</span><span class="nv">date_since</span><span class="k">}</span> <span class="se">\</span>
      <span class="nt">--until</span><span class="o">=</span><span class="k">${</span><span class="nv">date_until</span><span class="k">}</span> <span class="se">\</span>
    | <span class="nb">wc</span> <span class="nt">-l</span>
  <span class="si">)</span><span class="s2">"</span>
  <span class="nv">botted</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span>
    git log <span class="nt">--oneline</span> <span class="se">\</span>
      <span class="nt">--since</span><span class="o">=</span><span class="k">${</span><span class="nv">date_since</span><span class="k">}</span> <span class="se">\</span>
      <span class="nt">--until</span><span class="o">=</span><span class="k">${</span><span class="nv">date_until</span><span class="k">}</span> <span class="se">\</span>
      <span class="nt">-E</span> <span class="nt">-i</span> <span class="nt">--grep</span> <span class="s2">"</span><span class="k">${</span><span class="nv">bots</span><span class="k">}</span><span class="s2">"</span> <span class="se">\</span>
    | <span class="nb">wc</span> <span class="nt">-l</span>
  <span class="si">)</span><span class="s2">"</span>
  <span class="nv">percent</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span><span class="nb">printf</span> %.1f <span class="k">$((</span><span class="m">10000</span> <span class="o">*</span> <span class="k">${</span><span class="nv">botted</span><span class="k">}</span><span class="o">/</span><span class="k">${</span><span class="nv">total</span><span class="k">}))</span>e-2<span class="si">)</span><span class="s2">"</span>
  <span class="nb">echo</span> <span class="s2">"|</span><span class="k">${</span><span class="nv">repo</span><span class="k">}</span><span class="s2">|</span><span class="k">${</span><span class="nv">botted</span><span class="k">}</span><span class="s2">|</span><span class="k">${</span><span class="nv">total</span><span class="k">}</span><span class="s2">|</span><span class="k">${</span><span class="nv">percent</span><span class="k">}</span><span class="s2">%|"</span>
  <span class="nb">cd</span> - <span class="o">&gt;</span>/dev/null
<span class="k">done
</span><span class="nb">cd</span> - <span class="o">&gt;</span>/dev/null
</code></pre></div></div>

<h3 id="results">Results</h3>

<p>This yielded the following table, which I have sorted and annotated:</p>

<table>
  <thead>
    <tr>
      <th>Language(s)</th>
      <th>Repository</th>
      <th style="text-align: right">LLM-assisted</th>
      <th style="text-align: right">Total</th>
      <th style="text-align: right">Percent</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>C, C++, …</td>
      <td>gcc</td>
      <td style="text-align: right">86</td>
      <td style="text-align: right">2778</td>
      <td style="text-align: right">3.1%</td>
    </tr>
    <tr>
      <td>C, C++, …</td>
      <td>llvm-project</td>
      <td style="text-align: right">2229</td>
      <td style="text-align: right">13981</td>
      <td style="text-align: right">15.9%</td>
    </tr>
    <tr>
      <td>C#, Visual Basic</td>
      <td>roslyn</td>
      <td style="text-align: right">350</td>
      <td style="text-align: right">1114</td>
      <td style="text-align: right">31.4%</td>
    </tr>
    <tr>
      <td>Clojure</td>
      <td>clojure</td>
      <td style="text-align: right">0</td>
      <td style="text-align: right">98</td>
      <td style="text-align: right">0.0%</td>
    </tr>
    <tr>
      <td>Elixir</td>
      <td>elixir</td>
      <td style="text-align: right">73</td>
      <td style="text-align: right">364</td>
      <td style="text-align: right">20.0%</td>
    </tr>
    <tr>
      <td>Go</td>
      <td>go</td>
      <td style="text-align: right">12</td>
      <td style="text-align: right">1092</td>
      <td style="text-align: right">1.1%</td>
    </tr>
    <tr>
      <td>Haskell</td>
      <td>ghc</td>
      <td style="text-align: right">42</td>
      <td style="text-align: right">287</td>
      <td style="text-align: right">14.6%</td>
    </tr>
    <tr>
      <td>JavaScript (NodeJS)</td>
      <td>node</td>
      <td style="text-align: right">395</td>
      <td style="text-align: right">1605</td>
      <td style="text-align: right">24.6%</td>
    </tr>
    <tr>
      <td>Java</td>
      <td>jdk</td>
      <td style="text-align: right">0</td>
      <td style="text-align: right">1194</td>
      <td style="text-align: right">0.0%</td>
    </tr>
    <tr>
      <td>Julia</td>
      <td>julia</td>
      <td style="text-align: right">489</td>
      <td style="text-align: right">918</td>
      <td style="text-align: right">53.3%</td>
    </tr>
    <tr>
      <td>Kotlin</td>
      <td>kotlin</td>
      <td style="text-align: right">398</td>
      <td style="text-align: right">4612</td>
      <td style="text-align: right">8.6%</td>
    </tr>
    <tr>
      <td>Lua</td>
      <td>lua</td>
      <td style="text-align: right">0</td>
      <td style="text-align: right">12</td>
      <td style="text-align: right">0.0%</td>
    </tr>
    <tr>
      <td>PHP</td>
      <td>php-src</td>
      <td style="text-align: right">2</td>
      <td style="text-align: right">2124</td>
      <td style="text-align: right">0.1%</td>
    </tr>
    <tr>
      <td>Perl</td>
      <td>perl5</td>
      <td style="text-align: right">0</td>
      <td style="text-align: right">851</td>
      <td style="text-align: right">0.0%</td>
    </tr>
    <tr>
      <td>Python</td>
      <td>cpython</td>
      <td style="text-align: right">219</td>
      <td style="text-align: right">1339</td>
      <td style="text-align: right">16.4%</td>
    </tr>
    <tr>
      <td>Ruby</td>
      <td>ruby</td>
      <td style="text-align: right">881</td>
      <td style="text-align: right">2717</td>
      <td style="text-align: right">32.4%</td>
    </tr>
    <tr>
      <td>Rust</td>
      <td>rust</td>
      <td style="text-align: right">41</td>
      <td style="text-align: right">10020</td>
      <td style="text-align: right">0.4%</td>
    </tr>
    <tr>
      <td>Scala</td>
      <td>scala3</td>
      <td style="text-align: right">18</td>
      <td style="text-align: right">538</td>
      <td style="text-align: right">3.3%</td>
    </tr>
    <tr>
      <td>Scheme (Chicken)</td>
      <td>chicken-core</td>
      <td style="text-align: right">0</td>
      <td style="text-align: right">208</td>
      <td style="text-align: right">0.0%</td>
    </tr>
    <tr>
      <td>Swift</td>
      <td>swift</td>
      <td style="text-align: right">135</td>
      <td style="text-align: right">4831</td>
      <td style="text-align: right">2.8%</td>
    </tr>
    <tr>
      <td>TypeScript</td>
      <td>TypeScript</td>
      <td style="text-align: right">70</td>
      <td style="text-align: right">409</td>
      <td style="text-align: right">17.1%</td>
    </tr>
  </tbody>
</table>

<p>Repositories don’t map one-to-one to programming languages: some implementations cover
multiple languages, and some languages have multiple implementations.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[And every one that heareth these sayings of mine, and doeth them not, shall be likened unto a foolish man, which built his house upon the sand: And the rain descended, and the floods came, and the winds blew, and beat upon that house; and it fell: and great was the fall of it. Matthew 7:26–27 This was originally going to be called something like, “How slopcoded is your programming language?” But as I gathered the data, I found something else – something worse.]]></summary></entry><entry><title type="html">Week 300: A canal trip and a weekend at the seaside</title><link href="https://po-ru.com/2026/10/07/week-300-a-canal-trip-and-a-weekend-at-the-seaside" rel="alternate" type="text/html" title="Week 300: A canal trip and a weekend at the seaside" /><published>2026-10-07T10:51:00+00:00</published><updated>2026-10-07T10:51:00+00:00</updated><id>https://po-ru.com/2026/10/07/week-300-a-canal-trip-and-a-weekend-at-the-seaside</id><content type="html" xml:base="https://po-ru.com/2026/10/07/week-300-a-canal-trip-and-a-weekend-at-the-seaside"><![CDATA[<p><strong>We started the week</strong> with a train journey to Rugby, an hour’s travel for
the improbably cheap price of £5.95 each. That was an advance ticket with a Two
Together Railcard, which gives a ⅓ discount, but even accounting for that it
was so cheap that I couldn’t believe I hadn’t made a mistake.</p>

<p>The sad thing is that if I’d seen a flight to a random city in central Europe
for the same price I’d probably think it was completely normal. I’m just so
completely accustomed to British trains costing a lot that I can’t accept that
a train ticket might be affordable.</p>

<p>We stayed in a shepherd’s hut in a field on the edge of <a href="https://www.braunston.org.uk/">Braunston</a> for a
couple of nights, while we spent time with friends on their canal boat.
The hut was very comfortable – “hut” doesn’t accurately capture what it’s
really like – and only about ten minutes’ walk from the marina.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-09-29-canal-boats.webp"><img src="https://images.po-ru.com/opt/2026-09-29-canal-boats.webp" alt="A view along a canal from the back of a boat; another narrowboat is
approaching on the port side from under a brick bridge" /></a>
  
  <figcaption><p>Boat life</p>
</figcaption>
  
</figure>

<p>On Tuesday we took a trip along the canal and back again in very
co-operative weather. It was warm and sunny while we pottered a little way
along the Grand Union Canal and back again, and waited until we got back to the
marina to start raining.</p>

<p>I can see the appeal of narrowboats, but the number of boats for sale in the
marina gave an indication that there might be downsides. As a place to
live, they’re cheap, if you don’t mind the fact that they’re cramped, sometimes
cold, sometimes hot, and often damp. As a hobby, they’re expensive. After
the droughts of the summer, many locks have limited opening times to conserve
water, making the normal ambling pace of canal travel even slower.</p>

<p><strong>After a night back at home</strong> we spent the rest of the week in Brighton,
staying at my favourite hotel in the city, the quirky, friendly, and
conveniently-located <a href="https://www.hotelpelirocco.co.uk/">Hotel Pelirocco</a>. On this occasion, it was even more
convenient than usual, as it’s only about five minutes’ walk from the Brighton
Conference Centre, the venue of the Green Party Autumn Conference, our reason
for being in Brighton.</p>

<p><strong>The conference was a mix:</strong> lots of lovely people; inspiring speeches;
tedious and drawn-out plenary sessions; disappointments, such as when
a representative of a large environmental organisation on a panel suggested
that environmentally friendly “AI” is possible. That doesn’t seem particularly
likely to me, given the way that <em>large</em> language models work. From the way
some people talk, you’d think that LLMs run on thin air, and hyperscale data
centres are just a naturally-occurring phenomenon. No: people make these
things, and they take money and resources to run.</p>

<p>L— was there to promote the new health policy, all 296 pages of it. She has
done a lot of work on it, and it was accepted without any amendments.</p>

<p><a href="/2026/10/05/motion-e02">I’ve already written about the “Zionism is racism” motion</a> so I won’t
repeat that here.</p>

<p>It was warm and sunny in Brighton the whole time we were there, which was nice
but also concerning in what it represents. We went for a dip in the sea on
Sunday morning. The sea wasn’t warm – it never is anywhere in England – but
it was pleasantly not too cold, and once we got out the air was warm enough to
walk back draped in towels.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-10-04-brighton-sunset.webp"><img src="https://images.po-ru.com/opt/2026-10-04-brighton-sunset.webp" alt="Brighton beach, derelict West Pier, and a colourful sunset" /></a>
  
  <figcaption><p>An autumn evening in Brighton</p>
</figcaption>
  
</figure>

<p><strong>We ate well:</strong> lunch at <a href="https://www.nocatch.co/">No Catch</a>; fancy dinner at <a href="https://terreaterre.co.uk/">Terre
à terre</a>; group meal at <a href="https://www.tofuvegan.com/">Tofu Vegan</a>; pizza at <a href="https://purezza.co.uk/">Purezza</a>;
rice-based things at <a href="https://www.happymaki.co.uk/">Happy Maki</a>. Although Purezza’s pizzas were excellent
(we shared the <em>Pepperoni &amp; Agave</em> and the <em>Parmigiana Party</em>), I’d have to dock
them points for trying to foist a faffy payment system on me: scan this QR code
on your phone, try not to get fooled into paying a tip when they’ve already
added service to the bill, type in card details, etc.; at least this one didn’t
add an extra fee on top. Maybe it’s easier if you’re fully assimilated into the
ecosystem of one of the duopolies, but I use Firefox on GrapheneOS, there’s no
built-in payment mechanism <em>and that’s the way I like it</em>. I took one look at
the card payment form, decided I could not be arsed, and walked up and asked to
tap my card instead. Done in seconds. Why bother with such a rococo payment
system when there’s a simpler way?</p>

<p><strong>Links:</strong></p>

<ul>
  <li><a href="https://blog.rahix.de/design-for-3d-printing/">Design for 3D-Printing</a>:
Useful tips based on real experience.</li>
  <li><a href="https://futhark-lang.org/">Why Futhark?</a>
Futhark is a “purely functional data-parallel programming language in the
ML family” intended to be used for “small but compute-intensive parts of an
application”.</li>
  <li><a href="https://github.com/martanne/vis">Vis</a>
is a “vi-like editor based on Plan 9’s structural regular expressions” that
aims to combine the strengths of vi/vim and sam.</li>
  <li><a href="https://fedidevs.com/s/MTA2OA/">Slop-free FOSS</a>
lists “apps, projects, and services with accounts on the Fediverse that do
NOT use AI, LLMs, Claude, vibe coding, etc.”</li>
  <li><a href="https://gleam.run/">Gleam programming language</a>:
Gleam is a “familiar” (i.e. C-like syntax) language that runs on the BEAM
(Erlang) VM.</li>
  <li><a href="https://github.com/migueletto/PumpkinOS">PumpkinOS</a>
is “a re-implementation of PalmOS that runs on modern architectures”.</li>
  <li><a href="https://futurism.com/future-society/alternative-health-influencer-drinking-radioactive-jug-revigator">Alternative Health Influencer Boasts That He’s Been Drinking From a
Radioactive Jug for 250 Days Straight</a>.
We live in exceptionally stupid times.</li>
  <li><a href="https://chrisdillow.substack.com/p/who-needs-thought">Who needs thought?</a>
“The west’s victory in the Cold war has led not to a strengthening of
liberal capitalism but to the opposite; inequality and stagnation […]
this stagnation has caused exactly what Ben Friedman predicted - a retreat
into racism and illiberalism.”</li>
  <li><a href="https://danluu.com/brain-off/">There’s no point at which turning your brain off will work</a>.
There’s no future in being a meat proxy for the machines.</li>
  <li><a href="https://www.anildash.com/2026/10/06/kill-unalive/">We are going to kill “unalive”</a>.
“If you are a 20th century relic like me, it is incumbent upon you to
remind the generation that grew up inside the algorithm that another world
is possible, and that we know this because we lived it. […] A blog like
the one you’re reading right now could be made by anyone, and put up for
pennies, and nobody could stop it from being read by millions of people.
(And that last one? It’s still possible.)”</li>
  <li><a href="https://nolanlawson.com/2026/10/03/why-dont-more-developers-use-the-platform/">Why don’t more developers “use the platform”?</a>
“Think of how much you learn as you start building this thing. […] Before
you know it, you’ve built a library that’s ready to go on npm. That’s way
more fun than just grabbing <code class="language-plaintext highlighter-rouge">&lt;dialog&gt;</code> and calling it a day – what a
downer!”</li>
  <li><a href="http://lostmyspace.com/">Lost Myspace</a>:
“From 2003 to 2012, Myspace was the premier place for bands to post their
music. In 2018, it lost it all in a botched server migration. The Internet
Archive has managed to get their hands on a collection of nearly half a
million songs, and has made them available in a searchable interface.”</li>
  <li><a href="https://www.chompiclub.com/opensource">CHOMPI Open Source</a>:
The sampler is now discontinued, but the hardware and software are open
source.</li>
  <li><a href="https://github.com/FundamentalFrequency">FundamentalFrequency</a>:
“The LMN-3 is an open source DAW-in-a-box.” Open hardware, software,
mechanical design, etc.</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[We started the week with a train journey to Rugby, an hour’s travel for the improbably cheap price of £5.95 each. That was an advance ticket with a Two Together Railcard, which gives a ⅓ discount, but even accounting for that it was so cheap that I couldn’t believe I hadn’t made a mistake.]]></summary></entry><entry><title type="html">Motion E02</title><link href="https://po-ru.com/2026/10/05/motion-e02" rel="alternate" type="text/html" title="Motion E02" /><published>2026-10-05T16:06:00+00:00</published><updated>2026-10-05T16:06:00+00:00</updated><id>https://po-ru.com/2026/10/05/motion-e02</id><content type="html" xml:base="https://po-ru.com/2026/10/05/motion-e02"><![CDATA[<p>I was at the Green Party Conference this weekend, and in the room for the vote
on <strong>Motion E02: Zionism is Racism</strong>. The debate was surprisingly calm and
good-natured for such a contentious topic. A member who had survived the
Holocaust as a child spoke passionately in favour of the motion.</p>

<p>I voted against it, and I wish it hadn’t passed.</p>

<p><a href="https://greenparty.org.uk/2026/10/04/green-party-adopts-anti-zionist-policy/">The motion passed on a margin of only 209 votes</a> (1,022 for, 813
against) out of a membership of <a href="https://greenparty.org.uk/2026/03/01/the-green-party-of-england-and-wales-surpasses-200000-members/">over 200,000</a>. A member-led
democracy isn’t all it should be if under 1% of the membership take part in
votes.</p>

<!--8<-->

<p>The preamble states that</p>

<blockquote>
  <p>Zionism is a political ideology which called for the creation – and, now it
exists, the continuity – of an ethnonationalist Jewish State in historic
Palestine to the exclusion and/or domination of the non-Jewish population.
The real, material manifestation of Zionism has been the historic and ongoing
dehumanisation, displacement, dispossession, disenfranchisement and
destruction of Palestinians. This is based upon European settler-colonial
systems of domination and oppression, which has also created racial
hierarchies between Jews of different ethnicities in Palestine.</p>
</blockquote>

<p>I agree with the sentiment. Perhaps there’s some theoretical version of Zionism
that involves people from the Jewish diaspora moving to the region and living
in peaceful coexistence, but that’s not what happened, and it’s not what is
happening. Zionism as it actually exists is militarised expansion, mass murder,
and ethnic cleansing. Ethnocracies are, <em>ipso facto</em>, discriminatory. That’s
what they’re for. That’s what they do. <a href="https://en.wikipedia.org/wiki/Basic_Law:_Israel_as_the_Nation-State_of_the_Jewish_People">Israel’s recently-passed Basic Law</a>
is explicit about its ethnic basis:</p>

<blockquote>
  <p>C. The right to exercise national self-determination in the State of Israel
is unique to the Jewish people.</p>
</blockquote>

<p>If that isn’t enough, this is a state that imposes the death penalty <a href="https://www.timesofisrael.com/liveblog_entry/knesset-passes-death-penalty-law-for-west-bank-palestinians-convicted-of-terrorism/">only for
Palestinians</a>.</p>

<p>On a pedantic basis, I couldn’t agree with clause 3 of the motion:</p>

<blockquote>
  <p>3. Following from Motion E05, which affirmed that Israel is an apartheid
State committing genocide, and Motion E07 supporting reparations and
accountability, the Green Party supports the establishment of a single
democratic Palestinian State in all of historic Palestine with Jerusalem as
its capital, equal rights for all, and the right of return for Palestinians
and their descendants.</p>
</blockquote>

<p>As it happens, I do think that the only long-lasting stable solution is
probably a single state – a two-state solution became untenable long ago –
but it has to be a state that provides equal dignity to everyone within its
borders: Palestinian, Jewish, Druze, and anyone else. But I don’t think it’s
the place of a British political party to define a solution for other people.
<a href="https://en.wikipedia.org/wiki/Balfour_Declaration">That kind of thinking</a> is how we got into this mess in the first
place.</p>

<p>My main opposition, however, is practical. I regret that the motion was passed
because it will have no substantive impact on the conditions of Palestinians,
but I fear that it takes the one party that would actually fight for the rights
of Palestinians further away from power and the ability to do something about
it – or the environment, or workers’ rights, or health, or the rights of trans
people, or anything else that matters. It will be used as a stick to beat the
Green Party, and it will crowd out discussion of other topics.</p>

<p>I don’t think many people have a positive impression of Israel any more. It’s
a nuclear-armed state that uses its enormous military power, supported by the
United States, the United Kingdom, and other parts of the declining Western
hegemony – the defunct “rules-based international order” – to take territory
through right of conquest, and to dispossess the people who previously lived in
Palestine, Lebanon, or Syria.</p>

<blockquote>
  <p>I would very much like to annex at least up to the Yellow Line in Gaza and up
to the Litani [River] in Lebanon.</p>

  <footer><cite><a href="https://www.timesofisrael.com/liveblog_entry/smotrich-calls-on-israel-to-annex-southern-lebanon-most-of-gaza/">Israeli Finance Minister Bezalel Smotrich, September 2026</a></cite></footer>
</blockquote>

<p>Whatever moral high ground the Israeli state might once have been able to claim
over the attacks of 7 October 2023 is now gone: the deaths and injuries from
that event are now a mere rounding error compared to <a href="https://costsofwar.watson.brown.edu/paper/HumanTollGaza">over 10% of the
population of Gaza who have been directly killed or injured</a> since then
in the IDF’s campaign of retribution against Palestinians for what increasingly
seems to be the crime of simply existing.</p>

<p>We’ve seen the hospitals being bombed. We’ve seen snipers <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC1226264/">shooting children</a> as
they try to get food – and making a game out of where they can hit them. We’ve
seen the starvation and malnutrition resulting from the <a href="https://www.redcross.org.uk/stories/disasters-and-emergencies/world/gaza-malnutrition-crisis-starvation">famine</a> the IDF caused and
perpetuated. We’ve seen the amputations and corpses. They’ve <a href="https://www.ifj.org/media-centre/news/detail/article/palestine-at-least-240-journalists-and-media-workers-killed-in-gaza">killed so many
journalists</a>, sometimes <a href="https://www.aljazeera.com/news/2026/4/8/israeli-attack-kills-al-jazeera-journalist-mohammed-wishah-in-gaza">deliberately targeting them</a>,
sometimes as <a href="https://www.npr.org/2025/08/25/nx-s1-5515630/israel-gaza-journalists-killed-hospital">collateral damage while firing missiles at hospitals</a>,
but information still gets out.</p>

<blockquote>
  <p>And we’re seeing a particular pattern of injuries whereby particular body
parts are being targeted on particular days. So one day we will see mainly
abdominal gunshot wounds. Another day we’ll see head gunshot wounds. Another
day we’ll see neck gunshot wounds. So there is a very clear pattern that all,
not just me but all of us, have seen in this hospital, whereby particular
body parts are targeted on particular days […] I think seeing four young
teenagers come in, in the space of one hour, with gunshot wounds to their
testicles, which we have never seen before, is beyond coincidence.</p>

  <footer><cite><a href="https://www.npr.org/2025/07/21/nx-s1-5471424/gaza-hospitals-british-surgeon-israel-attacks">British surgeon Nick Maynard, speaking from Nasser Hospital in Gaza in July 2025</a></cite></footer>
</blockquote>

<p>We can now look on Google Maps’ satellite view and see with our own eyes that
much of Rafah and Khan Younis have been reduced to rubble.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-10-05-khan-yunis-gmaps.webp"><img src="https://images.po-ru.com/opt/2026-10-05-khan-yunis-gmaps.webp" alt="Screenshot of Google Maps' satellite view showing the eastern part of Khan
Younis. Streets and shops are highlighted, but everything is rubble." /></a>
  
  <figcaption><p>This used to be a city</p>
</figcaption>
  
</figure>

<p>However, to the British establishment and the commentariat, Palestinians
aren’t really people, and Palestinian lives are less important than preserving
their own places in the <em>status quo</em>. Long after the scale of mass murder
became irrefutable, they still hedge their criticisms of the Israeli state.
That’s why it’s treated as a greater crime to hold a sign supporting Palestine
Action than to organise a masked and uniformed mob to shut down a port. Given
the choice between a left-wing party gaining power and implicit support of
genocide, there’s no contest for them.</p>

<p>There will now be a full-spectrum assault on the Green Party, and on Zack
Polanski specifically (even though he neither spoke in favour of nor voted for
the motion). They will use the same tactics that worked against Corbyn, but
this is not 2019. In the end, the effect depends on whether a high-intensity
media campaign of spurious anti-semitism accusations can sway the public, or
whether they’ll go on believing their eyes, the photos of maimed and murdered
children, and the satellite images that testify to a campaign of genocide and
ethnic cleansing.</p>

<p>I hope it’s the latter.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I was at the Green Party Conference this weekend, and in the room for the vote on Motion E02: Zionism is Racism. The debate was surprisingly calm and good-natured for such a contentious topic. A member who had survived the Holocaust as a child spoke passionately in favour of the motion. I voted against it, and I wish it hadn’t passed. The motion passed on a margin of only 209 votes (1,022 for, 813 against) out of a membership of over 200,000. A member-led democracy isn’t all it should be if under 1% of the membership take part in votes.]]></summary></entry><entry><title type="html">Week 299: Tree walk</title><link href="https://po-ru.com/2026/09/27/week-299-tree-walk" rel="alternate" type="text/html" title="Week 299: Tree walk" /><published>2026-09-27T17:43:00+00:00</published><updated>2026-09-27T17:43:00+00:00</updated><id>https://po-ru.com/2026/09/27/week-299-tree-walk</id><content type="html" xml:base="https://po-ru.com/2026/09/27/week-299-tree-walk"><![CDATA[<p><strong>L— and I met an old friend</strong> on Tuesday night for some drinks (al fresco at
The Rake near Borough Market) and a lot of chat. We had several years to catch
up on. The lesson is that if you haven’t seen a friend in ages, even if that’s
because they live far away and don’t come to London for work any more, and
you’re thinking of them, send them a message.</p>

<p><strong>Thursday evening was perfect weather</strong> to wander around Russia Dock Woodland
looking at trees with s group of people led by someone from the <a href="https://www.wildlondon.org.uk/">London
Wildlife Trust</a>. I can now tell you the different between a field maple, a
Norway maple, and a sycamore, and I can distinguish an aspen from a white
poplar.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-09-24-russia-dock-woodland.webp"><img src="https://images.po-ru.com/opt/2026-09-24-russia-dock-woodland.webp" alt="A pond with waterfowl, surrounded by trees and bushes, in the pink light of a fine evening" /></a>
  
  <figcaption><p>Urban idyll (Russia Dock Woodland on a fine autumn evening)</p>
</figcaption>
  
</figure>

<p><strong>I wrote to my MP expressing my displeasure</strong> at the apparent legal immunity
enjoyed by Daniel Thomas and his organised, uniformed gang of masked fascists
after he blocked the port of Dover, gathered a mob to attack and interfere with
RNLI volunteers, and <a href="https://www.theguardian.com/world/2026/sep/22/far-right-activist-daniel-thomas-slashes-dinghy-with-blade-while-rescue-worker-onboard">filmed himself deliberately damaging a boat with someone
aboard</a>. I pointed out several potential crimes that attract custodial
sentences, and compared this unfavourably with the treatment being meted out to
pensioners holding cardboard signs supporting Palestine Action.</p>

<p>The next day, he was arrested, but I’m sure my useless MP had nothing to do
with it.</p>

<p>The police are still <a href="https://www.aljazeera.com/video/newsfeed/2026/9/27/massive-attack-singer-arrested-over-pro-palestine-protest-in-uk">arresting people for holding signs</a>, though.</p>

<p><strong>Our digital kitchen scales</strong> stopped working right as I was about to make
bread on Saturday morning. Instead of anything useful, all they show is <code class="language-plaintext highlighter-rouge">out2</code>,
which seems to indicate some kind of calibration problem. I had to buy a new
set, but I still have the receipt from the old ones, so I’m going to try to
take advantage of that 15 year guarantee they offered.</p>

<p>I made the dough last night, using the new scales, and baked it today. The
loaves came out perfectly.</p>

<p><strong>I like to read French novels occasionally</strong> in order to keep in practice. I
enjoy literary fiction, and I use the <em>Prix Goncourt</em> as a selection of things
that might be worth reading. 2020 winner <em lang="fr">L’Anomalie</em> by Hervé le
Tellier is a fun experiment in fusing together multiple styles, including a
jarring section of airport-thriller schlock in the middle. 2021’s <em lang="fr">La plus
sécrète mémoire des hommes</em> by Mohamed Mbougar Sarr is a deep,
layered, immersive, often confusing web. 2022’s <em lang="fr">Vivre Vite</em> by
Brigitte Giraud is a poignant exploration of loss and of self-recrimination,
and of the “if only” moments that could have averted an accident. I haven’t
picked up 2023 or 2024’s winners yet, which is clearly an oversight on my part.</p>

<p>I’ve been paying attention to the case of Thélyson Orélien, the
Haitian-Canadian novelist whose book <em lang="fr">C’était ça ou mourir</em>, which
won the <em lang="fr">Prix du roman Fnac</em> and was one of the 2026 <em lang="fr">Prix
Goncourt</em> selections, is alleged to have been substantially
authored by generative “AI”. This has been followed by others digging into his
published work to find other transgressions, in an unpleasant echo of how
Jason Arday was targeted.</p>

<p>This does appear to be another case of a successful black person being targeted
by racists. The allegations may also be correct. <a href="https://ici.radio-canada.ca/nouvelle/2286476/thelyson-orelien-pangram-test-roman-ia">Radio-Canada has a detailed
article</a> (in French) based on interviews with experts and on their own
experiments that test various objections to the Pangram-supported assertions.</p>

<p>However, I think that <a href="https://www.nouvelobs.com/bibliobs/20260924.OBS118567/j-eprouve-une-compassion-profonde-pour-thelyson-orelien-par-mohamed-mbougar-sarr.html">Mohamed Mbougar Sarr’s response</a> says it best
(I translate).</p>

<blockquote>
  <p>I don’t know whether Thélyson Orélien used AI for this book. I don’t venture
onto that terrain. But it seems important to me, even if you have doubts,
even if you have, like me, not been touched by this novel, to defend the
author against the ideologically facile and malicious part of the accusation.
[…] If the partial or complete use of AI in the writing of <em lang="fr">C’était ça ou
mourir</em> comes to be proven, then, whilst deploring and
criticising this usage on principle – because I believe, in my old-fashioned
way, that the pride and honour of an honest author consists in writing alone,
even if they are never alone, I will continue nonetheless to defend the
author against racist attacks. It must be possible, in my eyes, to hold these
two positions.</p>
</blockquote>

<p><strong>Horrifying discovery of the week:</strong> the concept and practice of the <em>daily
standup</em> has escaped containment, and people in non-software fields are now
being subjected to the awful quotidian ritual. I can only apologise for my part
(albeit unwitting) in the establishment of this terrible observance.</p>

<p><strong>I keep getting spam emails</strong> from bots promising to help me promote various
of my open-source repositories. I have responded to each one with <a href="https://gist.github.com/Niximacco/6ae63abd1834485811200daefc319b40">the full
script of Bee Movie</a>.</p>

<p><strong>After being pointed in the direction</strong> of Geneva <a href="https://brooklynrail.org/2023/04/music/La-Tne-And-Their-Relentlessly-Cyclic-Drone-Folk-Repetitions/">drone-folk band La Tène</a> and listening to <a href="https://lateneband.bandcamp.com/music">some tracks</a>, I ended up ordering a <a href="https://en.wikipedia.org/wiki/Shruti_box">shruti box</a>. I’d
had a tab open for about 6 months, so it wasn’t entirely impulsive. Anyone want
to get together and make some weird acoustic music?</p>

<p><strong>This week’s links:</strong></p>

<ul>
  <li><a href="https://tutorials.eeems.ca/Z80ASM/index.htm">Z80 Assembly</a>:
“This document is intended for everyone who wants to learn Z80 programming
in its depth.”</li>
  <li><a href="https://blog.bustikiller.com/2026/09/25/one-month-without-ai.html">One month without AI</a>:
“I went back to TDD, to my PRs with just 5 files changed. To my 2-line PR
descriptions that were straight to the point. I went back to understanding
what I was doing, to deploying with confidence, to being ready for a
detailed code review, because I knew what the changes were doing, and I
could justify every line of code.”</li>
  <li><a href="https://jakob.space/blog/accidental-honeypot.html">cgit as an Unintentional Honeypot</a> 
If a crawler is hitting an old commit in an old fork, it’s probably a bot;
here’s how to ban the IP address with fail2ban.</li>
  <li><a href="https://diegoe.be/2026/09/25/llm-policies-progress-at-all-costs/">LLM Policies: Progress At All Costs</a>.
“Unfortunately this ‘expert slop’, where expert is a self-perceived title,
carries a corporate framing that damages interactions. Others become, at
best, fungible coworkers, and, at worst, annoying speed bumps in the race
to 100% completion of any software interest the expert has. No more
mentoring, debating, flame wars. ‘Progress’ is the only goal. The line must
go up.”</li>
  <li><a href="https://techworkersinquiry.org/ai/">AI Workers’ Inquiry 2026</a>:
“The UTAW Tech Workers’ Inquiry outlines how generative AI is changing work
across the tech sector, written with the perspectives and experiences of
workers who build, deploy, manage, evaluate and use this technology.”</li>
  <li><a href="https://blog.pampatype.com/tuscan-letters-1">With hollow feet and harlequin hats: Tuscan letters, a prank of lapidary origin?</a> 
“Basically, a typeface is considered Tuscan when its serifs are bi- or
tri-furcated (sometimes with a greater number of extensions) to achieve a
certain degree of fantasy or ornamentation.”</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[L— and I met an old friend on Tuesday night for some drinks (al fresco at The Rake near Borough Market) and a lot of chat. We had several years to catch up on. The lesson is that if you haven’t seen a friend in ages, even if that’s because they live far away and don’t come to London for work any more, and you’re thinking of them, send them a message.]]></summary></entry><entry><title type="html">Week 298: Drawing blood at Lidl</title><link href="https://po-ru.com/2026/09/23/week-298-drawing-blood-at-lidl" rel="alternate" type="text/html" title="Week 298: Drawing blood at Lidl" /><published>2026-09-23T22:18:00+00:00</published><updated>2026-09-23T22:18:00+00:00</updated><id>https://po-ru.com/2026/09/23/week-298-drawing-blood-at-lidl</id><content type="html" xml:base="https://po-ru.com/2026/09/23/week-298-drawing-blood-at-lidl"><![CDATA[<p><strong>My frustration with typing</strong> on my keyboard reached a tipping point, and I
decided to buy a new one.</p>

<p>I’ve had a couple of specific annoyances with my most
recent keyboard (the one I <a href="/2026/06/10/week-283-expensive-plastic#:~:text=I%20found%20a%20mech,while%20programming%29.">found in a charity shop for £5.50</a>).
First, it overloads the keys in the bottom right to work as cursor keys when
you tap them, but modifiers when you hold them. However, it isn’t fast enough
to keep up with the speed at which I use one hand to tap Shift-<code class="language-plaintext highlighter-rouge">;</code> to get <code class="language-plaintext highlighter-rouge">:</code>
or Shift-<code class="language-plaintext highlighter-rouge">/</code> to get <code class="language-plaintext highlighter-rouge">?</code>. Instead, it would interpret this as Up, followed by
the unmodified key. I ended up with a lot of questions that finished abruptly
and with a <code class="language-plaintext highlighter-rouge">/</code> inserted in the middle of the line above.</p>

<p>Second, the red (linear) switches don’t provide enough tactile feedback for me
to avoid accidental presses. This might be a me problem, but it is very much
a problem for me.</p>

<p>I’ve been using small-footprint keyboards for twenty years, but I still
struggle with remembering the incantations for useful things like Home or Page
Down, so I decided to get a slightly bigger one where I’d have more dedicated
keys.</p>

<p>I went for a <a href="https://www.keyboardco.com/keyboard/keychron-c1-pro-qmk-pbt-double-shot-rgb-hot-swap-macpc-keyboards.asp">Keychron C1 Pro</a> “tenkeyless” 80% layout, with brown
(quiet, tactile) switches. It’s not particularly fancy, but it is reprogrammable
and it’s even possible to swap the switches without soldering, although I
have no such plans at present. The brown switches are good for feedback, while
not being so loud that they’ll annoy everyone around me.</p>

<p>So far, I am feeling slightly calmer.</p>

<p><strong>In the package was one of those fluffy promotional toys</strong> that
used to be available at every museum gift shop when I was a child. I haven’t
seen one in years.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-09-18-keyboard-weepul.webp"><img src="https://images.po-ru.com/opt/2026-09-18-keyboard-weepul.webp" alt="A small fluffy yellow ball with googly eyes, feet, and a long strip of
ribbon attached, marked with www.thekeyboardco.com" /></a>
  
  <figcaption><p>Yellow weepul</p>
</figcaption>
  
</figure>

<p>Apparently, it’s called a <a href="https://theoutline.com/post/2830/the-weepul-toy-phenomenon-is-secretly-a-sales-cult">weepul</a>.</p>

<p><strong>Whilst transferring items from the plastic basket</strong> to the checkout at Lidl,
I scraped my hand. The edge of the moulding was sharper than I realised, sharp
enough to leave me bleeding and trying not to get blood all over my shopping
and clothes.</p>

<p>I should have kept my (fingerless) cycling gloves on.</p>

<p><strong>We watched <a href="https://www.sandsfilms.co.uk/the-man-with-the-plan.html">The Man with the Plan</a></strong> in the same building it was
filmed in. It explores the Beveridge Report and what actually happened to
its recommendations; it’s both inspiring and frustrating when compared
against the destructive strip-mining of the public realm that has been economic
orthodoxy for the past four and a half decades.</p>

<p><strong>It’s been ages since I made kimchi.</strong> This time, I used red cabbage and
loosely followed <a href="https://www.maangchi.com/recipe/easy-kimchi">Maangchi’s recipe</a> without the squid and fish
sauce. I didn’t have any rice flour for the porridge, so I used fine polenta
instead. It seemed to work well, but I haven’t tasted any since it’s been
fermenting.</p>

<p><strong>A couple of dogs whose humans work in Peckham Levels</strong> turned one year old,
and had a party in the bar on Friday. They were very excitable, until they ate
their special canine birthday cake, after which they all had to lie down to
digest. The cake, made of banana and peanut butter, smelled amazing.</p>

<p><strong>The inaugural Southbank Centre Lecture</strong> on Sunday was given by Ash Sarkar on
<a href="https://www.southbankcentre.co.uk/whats-on/ash-sarkar-the-future-of-relationships/">The Future of Relationships</a>. She was funny, thought-provoking, and
insightful. I came away thinking (even more than I already did) that we all
need to use our phones a lot less, and do things in person a lot more.</p>

<p><strong>Links:</strong></p>

<ul>
  <li><a href="https://joshdata.me/iceberger.html">Iceberger</a>:
“Draw an iceberg and see how it will float.”</li>
  <li><a href="https://matduggan.com/you-know-gdpr-is-good-based-on-who-hates-it/">You Know GDPR Is Good Based on Who Hates It</a>.
“Ironically the banner designed to hide the machine has taught the public
more about the machine than a thousand podcasts ever will. Even
non-technical people stop at ‘your data is shared with 996 partners.’”</li>
  <li><a href="https://suricrasia.online/opus-databending-drumkit/">Opus databending drumkit</a>:
“Make glitchy beats with randomly generated Opus protocol packets.”</li>
  <li><a href="https://www.mcsweeneys.net/articles/we-must-create-the-shit-machine">We Must Create the Shit Machine</a>.
“Could the Shit Machine END WORLD HUNGER? It’s NOT IMPOSSIBLE in the most
LITERAL SENSE, which is all the justification we need to invest an AMOUNT
OF MONEY that would OTHERWISE BY ITSELF END ACTUAL WORLD HUNGER.”</li>
  <li><a href="https://linguisticdiscovery.com/posts/pre-greek/">Pre-Greek: The lost language hidden within Ancient Greek</a>.
A long, detailed, fascinating exploration of the non-Indo-European
substrate below Greek.</li>
  <li><a href="https://www.netmeister.org/blog/everybodys-lost-their-minds.html">Everybody’s Lost Their Minds</a>.
“You know there are two ways for AI to achieve superhuman intelligence,
right? One (theoretical) way is the mystical “recursive self-improvement”
by AI. The other one is the path we’re very clearly on: The agentic brain
worms have been spreading, and it looks increasingly like everybody’s lost
their goddamn minds already. AI is the tool that dulls its users; it
incrementally replaces understanding with a new dependency and addiction as
you actively de-skill yourself.”</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[My frustration with typing on my keyboard reached a tipping point, and I decided to buy a new one.]]></summary></entry><entry><title type="html">Week 297: You don’t get fit by watching sport</title><link href="https://po-ru.com/2026/09/16/week-297-you-dont-get-fit-by-watching-sport" rel="alternate" type="text/html" title="Week 297: You don’t get fit by watching sport" /><published>2026-09-16T19:32:00+00:00</published><updated>2026-09-16T19:32:00+00:00</updated><id>https://po-ru.com/2026/09/16/week-297-you-dont-get-fit-by-watching-sport</id><content type="html" xml:base="https://po-ru.com/2026/09/16/week-297-you-dont-get-fit-by-watching-sport"><![CDATA[<p><strong>If you’re finding working in programming dispiriting,</strong> I can wholeheartedly
recommend packing in the whole employment thing and spending time working on
a project in a new language, for yourself, especially if it’s not web
programming.</p>

<p>This goes double if, like me, you’ve been working in Ruby for the past couple
of decades. That language and ecosystem, particularly Rails, has now completely
fallen to fascism, slop, and slop-loving fascists. Even though <a href="https://www.youtube.com/watch?v=Q63_FxegFsQ">I was there
3,000 years ago</a> and I wrote <a href="https://rubygems.org/gems/htmlentities">one gem with nearly a quarter of a billion
downloads to date</a>, I’m not sure I can bring myself to care
about Ruby any more.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-09-12-dead-robin.webp"><img src="https://images.po-ru.com/opt/2026-09-12-dead-robin.webp" alt="A dead robin lying on its back on the ground with its feet in the air" /></a>
  
  <figcaption><p>Ah, poor bird</p>
</figcaption>
  
</figure>

<p>As my grandmother, who spoke almost entirely in aphorisms, used to say, <em>a
change is as good as a rest.</em> It doesn’t even matter which language you choose:
I’ve loved finding my way around the Java programming world, which is not
something I ever expected to say. I’ve made a program that
does what I want, I’ve learned a lot along the way, and I’ve been able to take
advantage of a mature and well-tested ecosystem, including things like
<a href="https://freemarker.apache.org/">FreeMarker</a>, the most capable templating library I’ve ever used.</p>

<p>I’ve done it all without touching an IDE, either, and with nothing more
sophisticated than grep and a fuzzy file finder to navigate the codebase.
It’s just another language, after all, and if you’re prepared to take the time to
understand it and write out the getters and setters and a bit of Maven XML
configuration yourself (all right, a <em>lot</em> of XML configuration), you can do it
all in any text editor. I’m probably missing out on some magical automatic
refactoring commands, but the other side is that making the changes myself
gives me more opportunities to understand how things fit together. The compiler
catched most of my errors – forgetting the semicolons at the end of lines is
the most common – and I’m using <a href="https://spotbugs.github.io/">spotbugs</a>, <a href="https://checkstyle.org/">checkstyle</a>, and <a href="https://pmd.github.io/">PMD</a> to analyse
the code for bugs, solecisms, and other weirdness. I’ve found them useful.</p>

<p>After working my way from a proof of concept and aggressively refactoring it up
to something that’s reasonably well architected, I now have a <a href="https://github.com/threedaymonk/kickstosvg">working
program</a> which is part of our book publishing workflow.</p>

<p>I don’t give a fuck if Claude could have done it faster. I enjoyed it, and
<em>I understand it</em>.</p>

<p><strong>You don’t get fit by watching sport,</strong> and you don’t get good at anything by
watching a machine do it for you.</p>

<p><strong>I filled in a crack in the plaster</strong> of our porch. It was replastered a
couple of years ago, and shrinking or flexing had left a line down the corner.
I filled and painted it. After it dried, I realised that I had foolishly
painted it in satin rather than matte paint, so it’s now the wrong kind of
white. At least it should work as an undercoat.</p>

<p><strong>Pat was over from Melbourne</strong> and so I saw a whole load of people I hadn’t
seen in a while, conveniently at an entirely vegan restaurant (Mallow, near
Borough Market). Unfortunately, we ended up in the loudest part of the
restaurant. Perhaps it’s time to bring back tablecloths, carpets, and curtains.
(I say this with a bit of hypocrisy, as our house has neither carpets nor
curtains, but we also don’t have dozens of people in the same room talking
at the same time.) Failing that, might I introduce the restauranteur community
to the concept of acoustic treatment?</p>

<p><strong>There was a world premiere</strong> of a new 4K restoration of weird cult Japanese
classic <a href="https://letterboxd.com/film/survive-style-5/"><em>Survive Style 5+ (2004)</em></a> at the famous, <a href="https://www.lbc.co.uk/article/prince-charles-cinema-remains-risk-of-closure-5HjdgdY_2/">threatened</a> Prince
Charles Cinema on Thursday. It’s weird, it’s colourful, it’s poignant, it’s
impossible to explain. Great film.</p>

<p><strong>I caught up with Thayer</strong> over lunch on Friday, during which <a href="https://mastodon.social/@Thayer/117252498875778596">she coined the
phrase “techboom-ers”</a> to describe those of us who did OK out of the early
21st century and have somehow managed to find ourselves thrown clear of the
wreckage.</p>

<p><strong>A friend who was close to being deported</strong> after losing his job found a new
one, and has now signed the contract. That’s a huge relief, especially for
him and his family. When politicians pander to xenophobia for a few
more racist votes, it’s real families, friendships, and communities that
they are destroying, and they deserve contempt and ostracism for it.</p>

<p><strong>My annual eye test</strong> determined that my short-sightedness is worse, and
my near vision is also worse. However, I can still read with my current
prescription, and my distance vision is still 20:20, so rather than go to a
stronger distance vision prescription that would need reading accommodation, I’ve
decided to do nothing for now. But age is coming for me, and I’ll need to do
something about it next year, I think. Varifocals might help with reading, but
I’ll need another pair for the computer. It sounds both expensive and
inconvenient.</p>

<p><strong>Links:</strong></p>

<ul>
  <li><a href="https://tante.cc/2026/09/11/power-grab/">Power grab</a>:
“Omarchy should not matter. But sadly it does. As a power grab.”</li>
  <li><a href="https://x11cp.org/">The X11 Conservancy Project</a> 
“pulls together the disparate set of programs which were being written
between the very late 80s, and early 90s – usually for Unix and Linux.”</li>
  <li><a href="https://opusfived.dev/">Opusfived</a> is
a simulation of “writing” code using Claude. I can’t vouch for its
authenticity, but if it’s really like that I’d lose my mind within a day.</li>
  <li><a href="https://kansai.milkyskies.dev/">関西弁アクセント辞典</a>:
A pitch accent dictionary for Kansai dialect. Very useful if, like me, you
learned Japanese in Osaka, and find 99% of reference material useless.</li>
  <li><a href="https://gizmodo.com/this-nasa-color-trick-was-meant-for-mars-now-its-unveiling-rock-art-on-earth-2000809844">This NASA Color Trick Was Meant for Mars. Now It’s Unveiling Rock Art on Earth</a>.</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[If you’re finding working in programming dispiriting, I can wholeheartedly recommend packing in the whole employment thing and spending time working on a project in a new language, for yourself, especially if it’s not web programming.]]></summary></entry><entry><title type="html">Week 296: This kanji does not exist</title><link href="https://po-ru.com/2026/09/09/week-296-this-kanji-does-not-exist" rel="alternate" type="text/html" title="Week 296: This kanji does not exist" /><published>2026-09-09T16:10:00+00:00</published><updated>2026-09-09T16:10:00+00:00</updated><id>https://po-ru.com/2026/09/09/week-296-this-kanji-does-not-exist</id><content type="html" xml:base="https://po-ru.com/2026/09/09/week-296-this-kanji-does-not-exist"><![CDATA[<p><strong>Sanshin notation uses kanji</strong> as a form of tablature: each glyph corresponds
to a unique position on a particular string on the fingerboard. However, some
of the characters used to indicate less-common positions higher up the neck
use kanji that aren’t used in normal language.</p>

<p>When writing, you can create novel kanji by combining any components you wish,
but if they don’t have corresponding encodings, you can’t actually represent
them on a computer. Even if you could, they don’t necessarily have glyphs in
the font you want to use, or perhaps in any font at all.</p>

<p>You can fake these kanji by squishing together existing components, so ｲ + 老
looks like <span style="display: inline-block; transform: scaleX(0.67)">ｲ老</span>,
and it doesn’t look too bad.</p>

<p>But I’m a perfectionist, the shortcomings are more perceptible in print, so I
made <a href="https://github.com/threedaymonk/kunkunshi-symbols">a complete set of SVG versions of the kanji</a> used for
sanshin notation, including all the characters that don’t exist in fonts, in
Unicode, or in any other context.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/2026-09-09-kunkunshi-kanji.png"><img src="https://images.po-ru.com/opt/2026-09-09-kunkunshi-kanji.png" alt="Screenshot of directory view of SVG files containing kanji" /></a>
  
  <figcaption><p>Some of the kanji</p>
</figcaption>
  
</figure>

<p>Maybe I should see about trying to get these characters into Unicode. It would
make some things easier to have standardised codepoints for them, even if they
didn’t have glyphs in any existing fonts. <a href="https://github.com/jloughry/Unicode">The experience of the team that
shepherded the IEC power symbols into Unicode</a> might be useful.</p>

<p><strong>We went to a book launch</strong> on Thursday: <a href="https://tansyhoskins.org/my-new-book-charity-shop-world/">Tansy Hoskins’s new book <em>Charity
Shop World</em></a> is an investigation into textile waste and what happens to
the clothes that get donated to charity shops. Spoiler: some of them are making
the billionaire <a href="https://www.bbc.co.uk/news/world-europe-18649156">prince regent/oligarch</a> of weird microstate and
absolute monarchy Liechtenstein <a href="https://www.telegraph.co.uk/fashion/news/charity-shop-clothing-donations-industry/">even richer</a>.</p>

<p>It’s fascinating. Also, <em>please</em> wash your clothes before donating them!</p>

<p><strong>Fascism is on the march,</strong> literally in the case of England. Hundreds of
black-clad, masked men, organised by a <a href="https://en.wikipedia.org/wiki/Daniel_Thomas_(activist)">far-right organiser and convicted
kidnapper</a>, <a href="https://hopenothate.org.uk/2026/09/05/patriot-platforms-masked-members-march-on-dover/">gathered in Dover and blocked access to the port</a>
to express their “legitimate concerns” about immigration.</p>

<blockquote>
  <p>While the main entrance to the port attracted most attention, a smaller group
gathered at the Western Jet Foil facility, used to process incoming asylum
seekers, where they defaced the road outside the entrance with the slogan
“Blood is on your hands”.</p>

  <footer><cite><a href="https://www.thenerve.news/p/britain-far-right-dover-march-patriot-platform-danny-tommo-daniel-thomas-portsmouth-police-lowles">Britain isn’t too soft on migrants; it’s too soft on Patriot Platform</a></cite></footer>
</blockquote>

<p>Despite having been <a href="https://nicklowles.substack.com/p/did-kent-police-ignore-a-999-call">tipped off</a>, the police were unprepared, and their
response was feeble. Not a single person was arrested.</p>

<p>And then, the next night, <a href="https://news.sky.com/story/140-migrants-in-one-small-boat-intercepted-in-english-channel-sky-news-understands-13582562">the same goons turned up in Portsmouth</a>
to interfere with the rescue of people from a dinghy in the Channel.</p>

<p>Even though police were injured, once again, <a href="https://www.portsmouth.co.uk/news/crime/police-injured-during-tensions-with-protesters-over-migrant-boat-8972305">no-one was arrested</a>.</p>

<blockquote>
  <p>There have been 6,539 arrests linked to terrorism-related activity since 9/11
in Britain. Of these, 2,819 (43 per cent) were linked to expressing support
for Palestine Action following its proscription in July last year, according
to latest police data on terror arrests up to March 2026.</p>

  <footer><cite><a href="https://www.thenationalnews.com/news/uk/2026/07/31/palestine-actions-many-nans-put-themselves-on-the-line-to-inflate-uk-terror-arrests/">Palestine Action’s many ‘nans’ put themselves on the line to inflate UK terror arrests</a></cite></footer>
</blockquote>

<p>At the time of writing, there have now been <a href="https://en.wikipedia.org/wiki/Palestine_Action">over 3,200 arrests</a> in
the past 14 months for crimes like holding signs and chanting slogans in
support of Palestine Action.</p>

<p>The police arrest grandmothers holding placards under the ludicrous pretence
that they support terrorism, but when masked thugs in uniform – actual
<em>blackshirts</em> – turn up to block national infrastructure or terrorise lifeboat
volunteers, they get away without consequence.</p>

<p>This is how fascism thrives, with the acquiescence of the state.</p>

<p><strong>Meanwhile, in Germany, fascism is closer to <em>being</em> the state,</strong> at least in
one of them. <a href="https://news.sky.com/story/saxony-anhalt-election-results-live-far-right-afd-aim-for-absolute-majority-to-breach-germanys-political-firewall-13582321">Alternative für Deutschland received 43.8% of the vote</a>
in the Saxony-Anhalt state election, leaving them just three seats short of an
outright majority. (In the United Kingdom’s absurd voting system, those kinds
of numbers would give you an unassailable supermajority, so be grateful for
small mercies.)</p>

<p>The AfD is officially listed as a “far-right extremist party” on the state
government’s website.</p>

<blockquote>
  <p>On 7 November 2023, the Office for the Protection of the Constitution
confirmed, in response to enquiries from members of the press, that the
Saxony-Anhalt regional branch of the AfD had been classified as a confirmed
far-right extremist organisation within the meaning of Section 4(1) of the
Law on the Protection of the Constitution in the State of Saxony-Anhalt
(VerfSchG-LSA).</p>

  <footer><cite><a href="https://mi.sachsen-anhalt.de/verfassungsschutz/themenfelder/page/rechtsextremismus">Far-right extremism, Ministry for the Interior and Sport, Saxony-Anhalt (translated)</a></cite></footer>
</blockquote>

<p>I wonder how long that will stay up. <a href="https://web.archive.org/web/20260904183553/https://mi.sachsen-anhalt.de/verfassungsschutz/themenfelder/page/rechtsextremismus">Here’s an archive link</a> just in case.</p>

<p><strong lang="fr">Liens de la semaine:</strong></p>

<ul>
  <li><a href="https://ploum.net/2026-09-02-i_dont_have_a_smartphone.html">I Don’t Have a Smartphone…</a>.
“[This] is, according to my experience, the easiest
explanation, the shortest way to force people to get their shit together
and take the required actions to allow me to live without being glued to a
small screen dependent on a huge American megacorporation.”</li>
  <li><a href="https://radically.bryankok.com/">Radically</a> 
is a “component-based CJK character search engine” that’s far more
comprehensive than any other I’ve seen.</li>
  <li><a href="https://spectrecollie.com/2026/09/05/bad-vibes-coding/">Bad Vibes Coding</a>.
A very enjoyable and insightful rant: “Today I’m just sad, seeing people so
eager to throw away their principles for the sake of saving a little time
and effort. (Or more accurately, <em>believing</em> that they’re saving themselves
some time and effort).”</li>
  <li><a href="https://www.theverge.com/tech/988536/1password-dhh-linux-controversy">1Password wades into a right-wing mess after funding a Linux project</a>.
“1Password faced immediate backlash from customers this week over a
$300,000 pledge in support of a Linux distro created by David Heinemeier
Hansson, who has regularly published overtly racist blog posts that include
comments calling for deportation of ethnic minorities in Europe.” At least
the word is getting out beyond the programming world.</li>
  <li><a href="https://www.theverge.com/report/901818/hbo-harry-potter-jk-rowling-transphobia">There is no ethical consumption of HBO’s Harry Potter series</a>.
“Rowling has been transparent about her desire to keep assisting people in
their efforts to rob transgender people of their dignity and human rights.
That seems very much to be the entire point of The J.K. Rowling Women’s
Fund.”</li>
  <li><a href="https://defector.com/its-time-to-grow-up-hbo-harry-potter">It’s Time To Grow Up</a>.
“You should tell people discussing the show [Harry Potter] that you’re not
watching it, and why, and you should let yourself openly cringe at your
sister-in-law’s Harry Potter tote bag, and you should bring up unprompted
that the onslaught of legislation against trans people makes you sad and
angry, presuming it does, and you should do this because, not despite, the
fact that it will make you look annoying as hell and may make everyone
present uncomfortable.”</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[Sanshin notation uses kanji as a form of tablature: each glyph corresponds to a unique position on a particular string on the fingerboard. However, some of the characters used to indicate less-common positions higher up the neck use kanji that aren’t used in normal language.]]></summary></entry><entry><title type="html">Week 295: Turning Javanese</title><link href="https://po-ru.com/2026/09/02/week-295-turning-javanese" rel="alternate" type="text/html" title="Week 295: Turning Javanese" /><published>2026-09-02T18:37:00+00:00</published><updated>2026-09-02T18:37:00+00:00</updated><id>https://po-ru.com/2026/09/02/week-295-turning-javanese</id><content type="html" xml:base="https://po-ru.com/2026/09/02/week-295-turning-javanese"><![CDATA[<p><strong>I spent a lot of time programming in Java</strong> last week. I had never really
used it before: its surge in popularity in education came a few years behind me,
so where later years had classes in Java programming, mine were in C and C++
(and also in assembly language for the mind-bending two-register Harvard
architecture PIC 16F84).</p>

<p>Java is fine. It works. It has a good ecosystem of libraries, and now that I’ve
figured out Maven and what the classpath means and how local dependencies are
handled, it does what I need. The language is quite verbose, and yet there are
obvious missing features, like the fact that you can’t rename imports. It also
demands elaborate ceremony: things that in other languages would take one line
require you to write an entire class in its own special file and then import it
explicitly.</p>

<p>But as I say, it’s fine. It’s recognisably a programming language, and I want
to integrate with some existing Java so it’s making life easier to use it.</p>

<p>On the upside, unlike Ruby, Java is not extruded from an LLM, although I don’t
know how long that will last. The <a href="https://openjdk.org/legal/ai">interim policy</a> is strong, but on the other
hand Oracle has gone big on the AI bubble and bet its entire future on running
LLM data centres for OpenAI, so if (and it’s a big if) they don’t go bust they
might bring pressure to bear on that.</p>

<p>(Over in the Ruby repository, <a href="https://github.com/ruby/ruby/graphs/contributors">Claude is now involved in a plurality of
commits</a> and seems to be responsible for verbose and bizarre slopified
commit notes. It’s sad to see.)</p>

<p><strong>What am I doing this for?</strong> It’s a project that a few of us are collaborating
on to make a songbook of sanshin pieces for <a href="https://sanshinkai.uk/">London Okinawa
Sanshinkai</a>. We already have a program that renders the scores to PDF,
but the Java PDF library has very limited typography, which limits the fonts
we can use, which makes it hard to produce a consistent book. I’m writing an
SVG renderer, which lets us take advantage of vertical text rendering and
OpenType support, even when we then render <em>that</em> to PDF. It also means that
we’ll be able to put the music directly into web pages with the lyrics, and I’m
hoping to be able to reuse the same tooling for both book and website. I’ve
made a lot of progress; it’s just missing a few articulation and repeat marks
that I deliberately left until I’d got the hard parts working.</p>

<p><strong>The flood in Nepal and Tibet</strong> was awful beyond my comprehension. I saw
before and after photos, and videos of water so high that it swept away
everything. The footage of the seven-storey building on the Chinese border
being engulfed and obliterated showed the scale of it, but I still can’t quite
imagine it.</p>

<p>Whether or not it was the proximate cause, global warming and the consequent
melting of the permafrost will have played a part in the chain of events
that led to this.</p>

<p><strong>Meanwhile, the developing El Niño</strong> is <a href="https://www.bbc.co.uk/weather/articles/c3ekg93vjz9o">likely to be the strongest in living
memory</a>, and 2027 is on course to be the hottest year on record (after
we’ve just had the <a href="https://www.metoffice.gov.uk/about-us/news-and-media/media-centre/weather-and-climate-news/2026/summer-2026-provisionally-hottest-on-record-for-the-uk">UK’s hottest summer on record</a>, following four
of the <a href="https://www.metoffice.gov.uk/about-us/news-and-media/media-centre/weather-and-climate-news/2026/2025-is-double-record-breaker-uks-warmest-and-sunniest-year-on-record">UK’s five hottest years on record</a> back to back.)</p>

<p>And does anyone in power seem to be doing anything about it? No, they’re
intent on building more AI data centres and going to war with everybody.
Don’t think about it, you’ll lose your mind.</p>

<p><strong>It was a big week for famous deaths:</strong> Dolly Parton; Tim Curry; and Yayoi
Kusama. (Oh, and also notorious war criminal Ratko Mladić, so not all bad news.)</p>

<p>Dolly seemed like a good egg, a generous donor and ally who used her fame and
fortune to genuinely positive effect. She supported literacy, medical research,
gay and trans rights, disaster relief, and other similarly altruistic causes.</p>

<p>When I look at what the current cadre of techbros spend their
VC/crypto/AI-boom money on, I despair. Especially the ones I used to work with,
whether it’s <a href="https://www.sfgate.com/tech/article/brockman-openai-top-trump-donor-21273419.php">Greg Brockman becoming Trump’s number one donor</a> or
<a href="https://www.irishtimes.com/politics/2026/07/29/irish-entrepreneur-patrick-collison-donated-62m-to-group-opposing-california-wealth-tax/">Patrick Collison donating $7 million to a campaign to prevent him having to pay
more tax</a> or, more recently, <a href="https://omarchy.org/news/2026/08/omacom-foundation-launches-with-8-million/" rel="nofollow
noreferrer">$1 million</a> to DHH’s (<a href="/2026/07/29/it-doesnt-matter-whether-matz-is-nice">of whom I have written previously</a>) <a href="https://tedium.co/2025/10/13/omarchy-linux-distro-commentary/">divisive
own-the-libs Linux distro</a> (or collection of shell scripts,
depending on who you ask). I think they’re signalling which side
they’re on: the other one.</p>

<p><strong>On the subject of Dolly Parton,</strong> when <em>Jolene</em> came on the radio, I ended
up listening to it more carefully than I had done in the past. It has a more
interesting structure than I had assumed.</p>

<p>Each verse is four bars followed by a fifth bar that adds tension; the song is
mostly in 4/4 time but the chorus has an extra half bar of 2/4 in the middle;
and there’s also an additional bar between choruses when they’re repeated.</p>

<p>It also has a funky riff and a catchy melody, but I think it’s those little
bits where the arrangement carries on longer than your ear expects that make
the song.</p>

<p>Another song that springs to my mind that does the same 2/4 half bar trick is
<em>Purple Rain</em> by Prince. So if you ever need to know what those two songs have
in common, or to write an impossibly hard musicological pub quiz question,
there you go.</p>

<p><strong>I’ve had a bit of a cold all week.</strong> It’s not bad, just annoying: a bit of
a sore throat, especially first thing in the morning, and a runny nose.</p>

<p><strong>A few links:</strong></p>

<ul>
  <li><a href="https://github.com/IridiumIO/PolyCut">PolyCut</a> 
“turns a 3D printer into a 2D cutting/drawing machine. Import SVGs or
images and convert them to GCode for use with pens, knives, foil tools or
other attachments. Think of it as an alternative to Cricut if you already
have a capable machine.”</li>
  <li><a href="https://lectronz.com/u/lectronz/articles/how-europe-is-killing-makers-and-micro-entrepreneurs">How Europe is killing makers and micro-entrepreneurs</a>.
The Packaging and Packaging Waste Regulation seems even worse for small
businesses in the EU than Brexit was for those in the UK. Whether by
accident or design, they’ve produced regulations that only big companies
can follow.</li>
  <li><a href="https://www.tomshardware.com/tech-industry/artificial-intelligence/chinese-farmer-kills-25-acres-of-crops-after-following-ai-generated-weed-and-pest-control-advice-farmer-trusted-pesticide-recipe-after-months-of-successful-advice#xenforo-comments-3898976">Chinese farmer kills 25 acres of crops after following AI-generated weed and pest control advice</a>.
Another example of the rapid deskilling that comes from LLM use: a
67-year-old farmer, with decades of experience, suddenly followed
catastrophically wrong extruded guidance and killed his crops.</li>
  <li><a href="https://deadsimpletech.com/blog/no-such-thing-as-just-a-tool">There’s no such thing as Just a Tool</a>.
“Similarly, you cannot discuss the fact that driving an SUV tends to
encourage shitty driving behaviour on the road because, after all, the SUV
is ‘just a tool’ and there are some legitimate use cases for it: because
this is the case, the fact that the SUV has ideological and behavioural
consequences is something that we’re not really allowed to discuss. This
kind of folk understanding of tools is very common, but unfortunately it’s
almost all wrong.”</li>
  <li><a href="https://aria.dog/barks/why-you-got-insulted-for-harry-potter/">Why You Got Insulted for Your Harry Potter Shirt</a>.
“In a sentence: giving money to the fight against trans rights bars you
from polite, left-of-center society”.</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[I spent a lot of time programming in Java last week. I had never really used it before: its surge in popularity in education came a few years behind me, so where later years had classes in Java programming, mine were in C and C++ (and also in assembly language for the mind-bending two-register Harvard architecture PIC 16F84).]]></summary></entry></feed>