<?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-05-12T12:42:41+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">Using a U2F key instead of a password on Linux</title><link href="https://po-ru.com/2026/05/12/using-a-u2f-key-instead-of-a-password-on-linux" rel="alternate" type="text/html" title="Using a U2F key instead of a password on Linux" /><published>2026-05-12T11:27:00+00:00</published><updated>2026-05-12T11:27:00+00:00</updated><id>https://po-ru.com/2026/05/12/using-a-u2f-key-instead-of-a-password-on-linux</id><content type="html" xml:base="https://po-ru.com/2026/05/12/using-a-u2f-key-instead-of-a-password-on-linux"><![CDATA[<p>This is an update and expansion on something I wrote a few years ago about
using my SoloKey U2F USB key for <a href="/2019/06/22/using-u2f-for-passwordless-sudo">passwordless <code class="language-plaintext highlighter-rouge">sudo</code></a>.</p>

<p>Recently, I ended up typing my password into a Slack window while trying to
unlock my computer. By the time I’d realised that it wasn’t locked but had
merely blanked the screen, my muscle memory was far ahead of my brain. As I
went through the hassle of updating my password and brain, I couldn’t help
wondering whether there was a better way.</p>

<p>The solution I’ve found lets me unlock my computer with a short PIN and
my U2F key, and to use just the key for <code class="language-plaintext highlighter-rouge">sudo</code>.</p>

<p>These instructions are for Debian with Gnome; they will probably work on
Ubuntu, and for other distributions and desktop environments you might have to
make some changes.</p>

<h3 id="setting-up-the-solokey">Setting up the SoloKey</h3>

<p>First, you need to set the PIN on your U2F key. I have an original <a href="https://solokeys.eu">SoloKey</a>
(two of them, in fact), so I need to use the <code class="language-plaintext highlighter-rouge">solo1</code> command. This is afflicted
by bitrot, but if you have Python installed you can work around the problem:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pip <span class="nb">install </span>pipx
pipx <span class="nb">install</span> <span class="nt">--preinstall</span> <span class="s2">"fido2==0.9.3"</span> solo1
</code></pre></div></div>

<p>This installs <code class="language-plaintext highlighter-rouge">solo1</code> in its own Python virtual environment. You can now use
this to set the PIN:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.local/share/pipx/venvs/solo1/bin/solo1 key set-pin
</code></pre></div></div>

<p>Obviously, choose a PIN you won’t forget, and/or make a note somewhere.</p>

<p>If you have a different type of U2F key, you’ll have to use their tools for
setting the PIN; the rest of the process is the same.</p>

<h3 id="configuring-pam">Configuring PAM</h3>

<p>Now, install the relevant <a href="http://www.linux-pam.org/">PAM</a> library and tools:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt install libpam-u2f pamu2fcfg
</code></pre></div></div>

<p>Next, you need to enroll your key. Plug it in and run:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pamu2fcfg | <span class="nb">sudo tee</span> <span class="nt">-a</span> /etc/u2f_mappings
</code></pre></div></div>

<p>You’ll be asked to enter your PIN, then press the button. You can repeat this
for any additional keys you wish to enroll.</p>

<p>It’s a good idea to restrict permissions on the mappings file:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo chmod </span>600 /etc/u2f_mappings
</code></pre></div></div>

<h3 id="authenticating-sudo">Authenticating sudo</h3>

<p>To authenticate <code class="language-plaintext highlighter-rouge">sudo</code> by clicking on the key, enter the following line
into <code class="language-plaintext highlighter-rouge">/etc/pam.d/sudo</code> <strong>above</strong> <code class="language-plaintext highlighter-rouge">@include common-auth</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue
</code></pre></div></div>

<p>Putting this before <code class="language-plaintext highlighter-rouge">common-auth</code> means that you won’t be asked for a password
if U2F authentication succeeds. Using <code class="language-plaintext highlighter-rouge">sufficient</code> (rather than <code class="language-plaintext highlighter-rouge">required</code>)
allows it to fall back to password authentication if you don’t have your key to
hand.</p>

<p>Save the file <strong>but don’t close the editor yet.</strong> Open a new terminal, and test
that it’s working:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo echo </span>OK
</code></pre></div></div>

<p>You should see something like <code class="language-plaintext highlighter-rouge">Please touch the FIDO authenticator</code> followed by
<code class="language-plaintext highlighter-rouge">OK</code> once you have done so.</p>

<h3 id="unlocking-the-computer">Unlocking the computer</h3>

<p>The procedure for unlocking is similar. This time, the relevant file is
<code class="language-plaintext highlighter-rouge">/etc/pam.d/gdm-password</code>, and once again we add a line above
<code class="language-plaintext highlighter-rouge">@include common-auth</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue pinverification=1
</code></pre></div></div>

<p>The addition of <code class="language-plaintext highlighter-rouge">pinverification=1</code> tells the system to prompt for the PIN in
addition to asking you to press the button. This prevents someone who gains
physical access to the key from authenticating unless they also know the PIN.
You can add the same constraint to <code class="language-plaintext highlighter-rouge">sudo</code> if you wish, depending on your threat
model.</p>

<p>Thanks to <a href="https://github.com/solokeys/solo1-cli/issues/151#issuecomment-2406661867">Jookia</a>, <a href="https://karubits.com/posts/Debian-Passwordless-Authentication/">Karubits</a> and <a href="https://support.yubico.com/s/article/Ubuntu-Linux-login-guide-U2F">Yubico</a> for helping me fill in some of the blanks.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[This is an update and expansion on something I wrote a few years ago about using my SoloKey U2F USB key for passwordless sudo.]]></summary></entry><entry><title type="html">Week 279: Two out of three</title><link href="https://po-ru.com/2026/05/11/week-279-two-out-of-three" rel="alternate" type="text/html" title="Week 279: Two out of three" /><published>2026-05-11T23:20:00+00:00</published><updated>2026-05-11T23:20:00+00:00</updated><id>https://po-ru.com/2026/05/11/week-279-two-out-of-three</id><content type="html" xml:base="https://po-ru.com/2026/05/11/week-279-two-out-of-three"><![CDATA[<p><strong>It was a short work week</strong> thanks to the bank holiday on Monday. I spent
a few hours on Monday typesetting various pieces of music; I feel like I
understand <a href="https://lilypond.org/">Lilypond</a> better and better.</p>

<p><strong>I’ve been busy with the local elections</strong> recently, and especially on
election day itself on Thursday. I woke just after 6 and spent a few hours
delivering election day leaflets to identified Green supporters to encourage
them to get out and vote.</p>

<p>After work, L— and I spent an hour telling outside a polling station –
that’s the thankless task of standing outside in the cold asking people if you
can check off their poll number so that they don’t end up getting disturbed
later on. After that, we went to knock on the doors of people to encourage
them to vote before polls closed at 10.</p>

<p>All that is a lot of work, and walking, and doing things that I really don’t
particularly enjoy, but the past few months paid off: in the target ward
(Rotherhithe) we got two out of three Green candidates elected.</p>

<p>Because the effort was focused on wards identified as winnable, in our own ward
of Surrey Docks there was no activity and only paper candidates. In the final
count, however, the Green candidate who came fourth was only 27 votes away from
third place. It’s a shame, but it bodes well for the general election.</p>

<p>For Greens in Southwark it was a good result: Labour no longer have control
(down from 52 out of 63 councillors at the last vote) and the council is now
split: 29 Labour; 22 Green; 12 Liberal Democrat.</p>

<p>I completely wrecked my voice shouting over the din at the celebrations on
Friday night; I was still a bit croaky on Sunday.</p>

<p><strong>We dropped into the Surrey Docks Farm Spring Fair</strong> on Saturday, where a
friend was singing with the <a href="https://londonseashantycollective.com/">London Sea Shanty Collective</a>. That was
a lot of fun to listen to.</p>

<p>I left after their first performance with the intention of cycling
to Sanshinkai practice, but a busy week, not enough sleep, and a late night on
Friday caught up with me and I took a 1½-hour nap instead.</p>

<p><strong>I’m going to <a href="https://www.emfcamp.org/">Electromagnetic Field</a></strong> (aka EMF Camp) 2026 in July. I
went for the first time <a href="/2024/06/05/electromagnetic-field-2024">in 2024</a>, and loved it. This year, however,
the tickets sold out within seconds, before I could even open the drop-down
menu and click “buy”, and I resigned myself to missing it unless I managed to
snag a last-minute ticket again. But I also submitted a couple of talk
proposals. One was accepted, so I was able to buy a ticket without needing
gamer reflexes, at a bit of a discount.</p>

<p>It’s a talk proposal that I first sketched out a few years ago, and it’s been
percolating in my mind for a long time. I’m looking forward to making it real
at last.</p>

<p><strong>I’ve heard far too much</strong> of that excessively auto-tuned new song by the
Strokes on the radio this week. I hope it drops out of 6 Music’s playlist soon.</p>

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

<ul>
  <li><a href="https://github.com/fliperama86/pico_hdmi">PicoHDMI</a> 
“leverages the RP2350’s dedicated HSTX (High-Speed Transmit) peripheral
with hardware TMDS encoding. No bit-banging, no overclocking required: just
near-zero CPU overhead for video output.”</li>
  <li><a href="https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies">FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies</a>.</li>
  <li><a href="https://arstechnica.com/ai/2026/05/influential-study-touting-chatgpt-in-education-retracted-over-red-flags/">Influential study touting ChatGPT in education retracted over red flags</a>.
But after a year and 504 citations, much damage is already done. “It really
seemed like a paper that should not have been published in the first
place.”</li>
  <li><a href="https://github.com/shorepine/amy">AMY</a> 
is a high-performance fixed-point synth library, written in C, that runs on
almost anything and implements Juno-style analogue, DX7-style FM, and
wavetable synthesis as well as sample playback.</li>
  <li><a href="https://www.techdirt.com/2026/04/30/palantir-workers-are-finally-noticing-the-skulls-on-their-caps/">Palantir Workers Are Finally Noticing The Skulls On Their Caps</a>.</li>
  <li><a href="https://simonomi.dev/blog/color-code-your-bytes/">Your hex editor should color-code bytes</a>.
Makes a convincing case.</li>
  <li><a href="https://tante.cc/2026/04/21/ai-as-a-fascist-artifact/">AI as a Fascist Artifact</a>.</li>
  <li><a href="https://sdg2advocacyhub.org/beans-is-how/">Beans is How</a>:
“A campaign to double global bean consumption by 2028”.</li>
  <li><a href="https://www.newscientist.com/article/2525315-backlash-builds-over-nhs-plan-to-hide-source-code-from-ai-hacking-risk/">Mythos: Backlash builds over NHS plan to hide source code from AI hacking risk</a>.
“NHS England is pulling its open-source software from the internet because
of fears around computer-hacking AI models like Mythos. Opposition is
growing among those who say the move is bad for transparency and
efficiency, and will also do nothing to improve security”.</li>
  <li><a href="https://keepthingsopen.com/">Keep things open: it makes things better</a>.
An open letter asking NHS England to keep its code open.</li>
  <li><a href="https://www.tedcromwell.com/blog/that-pending-paypal-charge-email-is-a-scam-even-though-it-really-came-from-paypa">That “Pending PayPal Charge” Email Is a Scam — Even Though It Really Came From PayPal</a>.
“PayPal lets anyone send small amounts of money to anyone else, and that
PayPal will dutifully email the recipient a notification. […] PayPal’s
system then automatically generates and sends you a real, legitimate,
fully-authenticated email confirming the transaction. Here’s the catch: the
email’s subject line is whatever the scammer typed when they set up the
payout. PayPal doesn’t sanitize it.” Eek.</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[It was a short work week thanks to the bank holiday on Monday. I spent a few hours on Monday typesetting various pieces of music; I feel like I understand Lilypond better and better.]]></summary></entry><entry><title type="html">Week 278: Jack in the Green</title><link href="https://po-ru.com/2026/05/05/week-278-jack-in-the-green" rel="alternate" type="text/html" title="Week 278: Jack in the Green" /><published>2026-05-05T12:58:00+00:00</published><updated>2026-05-05T12:58:00+00:00</updated><id>https://po-ru.com/2026/05/05/week-278-jack-in-the-green</id><content type="html" xml:base="https://po-ru.com/2026/05/05/week-278-jack-in-the-green"><![CDATA[<p><strong>May Day fell on Friday</strong> this year, and what better way is there to celebrate
workers than by not doing any work? It was hot and sunny, so I slathered on
some sun cream, put on a hat, and went down to Deptford to catch the <a href="https://en.wikipedia.org/wiki/Jack_in_the_Green">Jack in
the Green</a> procession.</p>

<p>I bumped into a few people I knew, and chatted as I followed the troupe for
the first hour.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/jack-in-the-green-2026-1.webp"><img src="https://images.po-ru.com/opt/jack-in-the-green-2026-1.webp" alt="A crowd of people, many in headgear festooned with plants. In the centre
is the Jack in the Green: a person in a huge frame covered in leaves and
flowers" /></a>
  
  <figcaption><p>The Jack in the Green</p>
</figcaption>
  
</figure>

<p>If you’re wondering about the huge (mock) cleavers, that’s the <a href="https://www.instagram.com/deptford_gutgirls/">Deptford Gut
Girls</a>, who celebrate <a href="https://www.instagram.com/p/C6f3lqgIMwX/">the women who worked in the Foreign Meat
Market</a> in Deptford in the late 19th century:</p>

<blockquote>
  <p>One of the most unpleasant jobs was cleaning cattle and sheep intestines,
which were used for making sausage skins (and, according to a later source,
condoms). Originally men’s work, in about 1891 they went on strike for more
pay: management responded by assigning the work to women. The wages were
still much higher than most working class women and ten times higher than
‘going into service, which is what they were eventually forced to do.</p>
</blockquote>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/jack-in-the-green-2026-2.webp"><img src="https://images.po-ru.com/opt/jack-in-the-green-2026-2.webp" alt="Drummers in a variety of festive attire: one wears an orange boiler suit
and white face paint; others have hats with leaves. The Jack in the Green is
off to the left hand side" /></a>
  
  <figcaption><p>Drummers</p>
</figcaption>
  
</figure>

<p>As well as drummers, there were pipers of various kinds, and people playing
guitar, banjo, concertinas, accordions, and even a hurdy gurdy. Somehow, they
all managed to play together, and it sounded much more cohesive than you might
expect from such a motley assortment.</p>

<p>I peeled off at St Nicholas’ church (where <a href="https://www.findagrave.com/memorial/8017/christopher-marlowe">Christopher Marlowe is
buried</a>) and walked down the high street for lunch at the <a href="https://waitingroomse8.co.uk/">Waiting
Room</a>.</p>

<p><strong>When I set up my new phone</strong> a few weeks ago, I configured <a href="https://syncthing.net/">Syncthing</a> to
upload new photos, but without downloading the old ones to my new phone. At
least, that was my intention, but at some point it had synchronised the other
way and deleted the old photos everywhere.</p>

<p>I had set it to keep backups for a week, but more than a week had elapsed by
the time I realised.</p>

<p>This still wouldn’t be a problem except that I hadn’t got round to sorting and
importing pictures into my photo management program for a few months.</p>

<p>After a bit of panic, I realised that the photos were still on my old phone,
which was switched off, so I just walked down the street until I was out
of range of our home network, switched the phone on, and set it to aeroplane
mode. Back at home, I plugged it in and pulled all the photos off via USB.</p>

<p>And then I remembered that I had taken a backup of that phone just before I
bought the new one, so it was never going to be as catastrophic as it
seemed in the moment.</p>

<p>Nonetheless, it’s a reminder: synchronisation alone is not a backup strategy.</p>

<p>Unfortunately, thanks to “AI” companies having bought up all disks (as well as
memory and graphics cards) and made them unaffordable, backups are no longer
quite so easy. Yet another thing ruined by LLMs!</p>

<p><strong>I spent a quarter of an hour</strong> running around the house on Friday night
trying to work out where I’d put my music stand. I searched high and low, and
even in the loft, but it was nowhere to be seen.</p>

<p>It was in the middle of the living room with a score open on it. You’d think
that would be obvious, but I was oblivious: I was looking for a small black
folded package, not the deployed stand. L— saw the stand, but assumed I was
looking for a different one, because surely I couldn’t fail to see
something so conspicuous. No, really, I could.</p>

<p><strong>The Sanshinkai performance at Yokimono Market</strong> on Saturday went well. We
ended up playing both sets an hour later than scheduled because, although we
had sent detailed instructions to the organisers, no one had communicated the
staging requirements to the people responsible on the ground.</p>

<p>Whether in Dalston or Stratford, Yokimono always seems to be the most chaotic
of all the events we play, but it’s popular. Both sets went well, and we
finished before the rain started; we were covered, but the audience
wasn’t, and it would be a downer if everyone ran for shelter in the middle
of a performance.</p>

<p>Although it rained in the early evening, the weather was lovely for most of
the day. Between sets, I took advantage of the proximity of Westfield to escape
the captive pricing and massive queues, picked up a marinara pizza from
Franco Manca – still good value, even if the price has now broken above £7 –
and ate it on the river bank under a weeping willow. It would have been even
better if I’d chosen a spot without ants.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/ucl-building-stratford.webp"><img src="https://images.po-ru.com/opt/ucl-building-stratford.webp" alt="A vast brutalist edifice stands alone. Its façade is made of dozens of
narrow concrete columns" /></a>
  
  <figcaption><p>The UCL East Marshgate building at Stratford looks like it would
have been rejected as a bit too imposing for Albert Speer’s Berlin</p>
</figcaption>
  
</figure>

<p><strong>I had a bit of success</strong> in speeding up a slow connection negotiation process
at $CLIENT. This is a tool that attempts to connect to a router via a UDP
protocol. The previous algorithm tried each network device in turn, and ran
through three attempts with a generous timeout before trying the next one. If
the relevant device was low down the list, it could take several minutes.</p>

<p>Instead, I rewrote it try each device once with a short timeout, then repeat
with a slightly longer timeout, then finally a longer one still. This typically
finds the connection in a few seconds.</p>

<p><strong>My new toothbrush arrived,</strong> although as you’ll find out, that was really
<em>last</em> week’s news. I didn’t necessarily want to buy a new electric toothbrush,
but my old one stopped working. I <a href="/2025/04/02/week-221-cell-rejuvenation#:~:text=I%20replaced%20the%20battery,18%20years.">replaced the battery last year</a> and
had hoped that it would manage another decade, but it seems that opening it up
compromised the seal and it corroded on the inside.</p>

<p>I don’t mind using an old-fashioned manual toothbrush, but the dentist seems
insistent that I should use an electric toothbrush (with a pressure sensor).</p>

<p>After reading around a bit, I ordered a <a href="https://www.trysuri.com/">Suri 2.0</a>. It’s well reviewed,
it looks stylish, it’s less covered in gunk-harbouring greebling than most of
the other ones, and it promises less plastic waste. And as it uses vibration
rather than an oscillating head it doesn’t have any moving parts to nip my
tongue.</p>

<p>The toothbrush is great. The online purchasing experience, not so great.</p>

<p>16 April:</p>

<blockquote>
  <p>We’re busy putting the finishing touches to your SURI order and we’ll keep
you updated on its journey and tracking details as we get ready to ship it
soon.</p>
</blockquote>

<p>22 April, after I enquired whether it would be shipped soon, given that
it was supposed to be 48 hour delivery:</p>

<blockquote>
  <p>Your order is still being prepared and hasn’t been dispatched yet. You’ll
receive a shipping confirmation and tracking details as soon as your order
leaves our warehouse.</p>
</blockquote>

<p>25 April, after I sent an email cancelling the order, because I realised I
could just buy one in Boots instead:</p>

<blockquote>
  <p>We’ve finished packing your SURI order #XXXXXXX, and it’s now ready to
leave our warehouse with our delivery partner.</p>

  <p>If your delivery service includes tracking, we’ll send you an update once
your parcel is on the way.</p>
</blockquote>

<p>27 April, after they read the email asking to cancel:</p>

<blockquote>
  <p>I’ve checked your order, and it’s currently marked as delivered.</p>
</blockquote>

<p>And there, in the screenshot, was a Royal Mail tracking number and the detail
that it was delivered two days before they told me it was still being prepared,
and five days before they told me they had finished packing it:</p>

<blockquote>
  <p>Your item was delivered on 20-04-2026</p>
</blockquote>

<p>Maybe I should have checked the post room every day just in case they had sent
it when they said they hadn’t, but it’s a big building and the post room is
enough of a mess that I don’t generally go hunting for parcels I’ve been led to
believe aren’t there.</p>

<p>Again, I’m very happy with the toothbrush, but it seems you’d be better off
buying one from a retailer with more business-to-consumer experience.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[May Day fell on Friday this year, and what better way is there to celebrate workers than by not doing any work? It was hot and sunny, so I slathered on some sun cream, put on a hat, and went down to Deptford to catch the Jack in the Green procession.]]></summary></entry><entry><title type="html">Week 277: An annual inconvenience</title><link href="https://po-ru.com/2026/04/29/week-277-an-annual-inconvenience" rel="alternate" type="text/html" title="Week 277: An annual inconvenience" /><published>2026-04-29T21:53:00+00:00</published><updated>2026-04-29T21:53:00+00:00</updated><id>https://po-ru.com/2026/04/29/week-277-an-annual-inconvenience</id><content type="html" xml:base="https://po-ru.com/2026/04/29/week-277-an-annual-inconvenience"><![CDATA[<p><strong>I gave blood on Wednesday.</strong> I usually go to Stratford, but they’re currently
refurbishing the donor centre, and the temporary replacement (a van in a car
park) has far fewer slots. And, of course, it’s a van in a car park, which is
not such a pleasant experience. But on Tuesday, as I was looking for slots for
Friday, I noticed that there was a session in Peckham the very next day, only a
minute’s walk away from where I rent a desk. I booked in for mid-afternoon and
spent a relaxing hour reading (<a href="https://app.thestorygraph.com/books/8bafe1e6-ec6a-42fb-ba3c-f81af521bd79"><em>A Short History of Tractors in
Ukrainian</em></a>, loved it) while I waited, donated, and ate crisps
afterwards. Maybe it doesn’t sound like a relaxing afternoon break to most
people, but it was for me.</p>

<p><strong>I started trying to tidy up my office</strong> at home, which has been a disaster
since I dumped everything in there after our house was renovated. There’s a
long way to go, but it’s a start.</p>

<p><strong>Everybody loves the London Marathon</strong> except for those of us for whom it’s an
annual inconvenience. We don’t live <em>near</em> the marathon; no, we’re surrounded
on three sides by it. You can’t cross the road; you can’t take the tube without
queueing for hours to get into the station; there are crowds hooting and
hollering everywhere. And, even worse, apparently they want to make it a
<a href="https://www.bbc.co.uk/sport/athletics/articles/cqxl8yn4gxwo">two-day event</a> next year.</p>

<p>At least we have a few underpasses and bridges that cross the route near here,
so we were able to escape to the riverward side of the route and cycle along
the Thames to the South Bank.</p>

<p><strong>At the Hayward Gallery,</strong> we met a friend and visited a combined double
exhibition.</p>

<p><a href="https://www.southbankcentre.co.uk/whats-on/yin-xiuzhen-heart-to-heart/">Yin Xiuzhen</a>’s installation was charming, and varied in scale from tiny
and whimsical cities stitched from old cloths to a vast heart in which a dozen
people can sit.</p>

<p>Pictures can’t capture the sheer amount of thread in <a href="https://www.southbankcentre.co.uk/whats-on/chiharu-shiota-threads-of-life/">Chiharu Shiota</a>’s
installation. It’s like several cat’s cradles, each the size of a room, and had
me puzzled just trying to work out how you’d even construct such a thing.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/shiota-threads.webp"><img src="https://images.po-ru.com/opt/shiota-threads.webp" alt="An art installation. There are old-fashioned beds covered in a web-like
structure made of interlocking threads like a massive cat's cradle" /></a>
  
  <figcaption><p>Threads of Life by Chiharu Shiota</p>
</figcaption>
  
</figure>

<p>If you time your visit well, I hear that you can even see performers get in and
out of the beds through some invisible gaps in the webs. (We didn’t.)</p>

<p><strong>I’ll be playing sanshin and guitar and singing</strong> with <a href="https://sanshinkai.uk/">London Okinawa
Sanshinkai</a> at <a href="https://www.eventbrite.co.uk/e/yokimono-japanese-market-in-stratford-queen-elizabeth-olympic-park-free-tickets-1986890248218">Yokimono Market</a> in Stratford this coming Saturday.
We’re doing two half-hour sets, one at 12:00 and the other at 15:30.</p>

<p>Fun fact: the Japanese word for <em>set</em> in the context of a musical performance
is <span lang="ja">ステージ</span> <em>(sutēji)</em>, from English <em>stage</em>. And
<em>stage</em> shouldn’t be mixed up with スタジオ <em>(sutajio)</em> which means <em>studio</em>.
It can get confusing in a multilingual setting.</p>

<p><strong>I slightly regret missing <a href="https://haggisruby.co.uk/">Haggis Ruby</a>.</strong> It would have
been an excellent excuse for a trip to Glasgow, and I was tempted.</p>

<p>However, I’m avoiding conferences this year because I can’t face the prospect
of being trapped in a room having AI explained at me. I would be very keen
to attend a 100% Generative AI Free conference somewhere reachable by train, if
anyone wants to promise such a thing.</p>

<p><strong><em><a href="https://www.bbc.co.uk/culture/article/20240903-why-slow-horses-is-the-ultimate-british-tv-show">Slow Horses</a></em> is good,</strong> isn’t it? We’re very late to the party, but that
means we won’t run out for a while. I have a lot or respect for Gary Oldman
for making himself quite so repulsive in it: I fully believe that that shirt
wasn’t washed at any point during the making of the first two seasons.</p>

<p><strong>I have a prediction:</strong> some time between now and the local elections on 7
May, BBC News will run another set of migrant-bashing headlines like their
recent “undercover investigation” into immigration lawyers.</p>

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

<ul>
  <li><a href="https://www.theverge.com/podcast/917029/software-brain-ai-backlash-databases-automation"> The people do not yearn for automation</a>.
“But: not everything is a business. Not everything is a loop! The entire
human experience cannot be captured in a database. That’s the limit of
software brain. That’s why people hate AI. It flattens them.”</li>
  <li><a href="https://ky.fyi/posts/ai-burnout">Do I belong in tech anymore?</a> 
“Ironically, what I’ve gained from AI is a deeper appreciation for human
communication, in all its messy imperfection.” This rings true to me too.</li>
  <li><a href="https://git.drupalcode.org/project/parli_protect">parli_protect</a>
for Drupal. “The Parliament Protect module will protect your website from
UK Parliament. There are two options for protection: A silly form asking
for far too much personal information or a simple message to be displayed.”
There’s a convenient list of IP addresses in the source if you too want to
inconvenience the MPs responsible for the Online Safety Act.</li>
  <li><a href="https://www.tunera.xyz/">Tunera Type Foundry</a> 
offers attractive and usable free SIL-licensed fonts.</li>
  <li><a href="https://www.nebulasans.com/">Nebula Sans</a> 
is Nebula’s new brand typeface, based on Source Sans, free under the SIL
Open Font License.</li>
  <li><a href="https://medialoot.com/blog/how-to-create-a-responsive-navigation-menu-using-only-css/">How To Create A Responsive Navigation Menu Using Only CSS</a>.</li>
  <li><a href="https://arcade.pirillo.com/fontcrafter.html">FontCrafter: Create Your Handwriting Font for Free</a>.
Print page, write letters, scan, get font.</li>
  <li><a href="https://smallsheds.garden/blog/2026/on-the-acceptance-of-genai/">On the acceptance of GenAI</a>.
“If any of these facts are new to you, you haven’t been doing your due
diligence.”</li>
  <li><a href="https://chrisdown.name/2026/03/24/zswap-vs-zram-when-to-use-what.html">Debunking zswap and zram myths</a>. 
“If in doubt, prefer to use zswap. Only use zram if you have a highly
specific reason to.”</li>
  <li><a href="https://github.com/OHF-Voice/piper1-gpl">Piper</a> 
is a “fast and local neural text-to-speech engine that embeds espeak-ng for
phonemization.”</li>
  <li><a href="https://eve.gd/2026/04/19/the-necessary-pain-involved-in-blogging-if-you-want-your-work-to-be-preserved-beyond-your-lifespan/">The Necessary Pain Involved in Blogging (if you want your work to be preserved beyond your lifespan)</a>.</li>
  <li><a href="https://github.com/LoredCast/filewizard/tree/main">File Wizard</a> 
is a “self-hosted, browser-based utility for file conversion, OCR and audio
transcription.” Can be run via a Docker image.</li>
  <li><a href="https://github.com/murpg/document-converter">Document Converter Pro</a> is
“A powerful, Docker-based document and image conversion application with a
modern web interface built using Streamlit. Convert between multiple
document and image formats with ease, including batch processing
capabilities.”</li>
  <li><a href="https://binaryigor.com/modern-frontend-complexity.html">Modern Frontend Complexity: essential or accidental?</a> 
Presents an alternative: “We can utilize HTMX, HTML Web Components and a
templating language to build websites and apps in a way much more aligned
with how the browser works - without sacrificing user experience, complex
features or developer experience.”</li>
  <li><a href="https://github.com/WeebLabs/DSPi">DSPi</a> 
“transforms a Raspberry Pi Pico or other RP2040-based board into a very
competent and inexpensive little digital audio processor.”</li>
  <li><a href="https://github.com/ramonvermeulen/whosthere">whosthere</a> is a
LAN discovery tool with an interactive TUI.</li>
  <li><a href="https://kayrock.org/kr106/">Ultramaster KR-106</a> is an
open source Roland Juno 106 emulator.</li>
  <li><a href="https://disconnect.blog/on-the-abdication-of-chief-prophet-tim-cook/">On the abdication of Chief Prophet Tim Cook</a>.
John Ternus has been appointed as Steve’s representative on Earth.</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[I gave blood on Wednesday. I usually go to Stratford, but they’re currently refurbishing the donor centre, and the temporary replacement (a van in a car park) has far fewer slots. And, of course, it’s a van in a car park, which is not such a pleasant experience. But on Tuesday, as I was looking for slots for Friday, I noticed that there was a session in Peckham the very next day, only a minute’s walk away from where I rent a desk. I booked in for mid-afternoon and spent a relaxing hour reading (A Short History of Tractors in Ukrainian, loved it) while I waited, donated, and ate crisps afterwards. Maybe it doesn’t sound like a relaxing afternoon break to most people, but it was for me.]]></summary></entry><entry><title type="html">Wild axolotls</title><link href="https://po-ru.com/2026/04/23/wild-axolotls" rel="alternate" type="text/html" title="Wild axolotls" /><published>2026-04-23T08:49:00+00:00</published><updated>2026-04-23T08:49:00+00:00</updated><id>https://po-ru.com/2026/04/23/wild-axolotls</id><content type="html" xml:base="https://po-ru.com/2026/04/23/wild-axolotls"><![CDATA[<p>How many wild axolotls are there in the UK? I heard a news segment on the
<a href="https://www.bbc.co.uk/6music">radio</a> this morning about an axolotl that had been caught in the wild in
Wales. Here’s a transcript:</p>

<blockquote>
  <p>An endangered Mexican axolotl, a species of aquatic salamander, has been
found living under a bridge near Bridgend in south Wales by a ten-year-old
girl. The amphibian is the size of a small cat, and it’s the first documented
discovery of the species in the wild in the UK.</p>

  <p>Evie Hill was on holiday with her family when they stopped at the dipping
bridge over the river Ogmore.</p>

  <blockquote>
    <p>I went down to the bank and there was this thing with gills on its head and
I’m like, that’s an axolotl, and I went, Mum, there’s an axolotl in the
river, and she said, no there’s not, you’re not going back in the water,
though I went back in the water anyway because I could see it and then I
caught it and brought it back and my cousin’s going mum, Evie’s caught the
axolotl, she’s caught it!</p>
  </blockquote>
</blockquote>

<p>So of course the first thing I did was to open a browser and search for a
picture of this small-cat-sized critter. I found a slightly longer <a href="https://www.bbc.co.uk/sounds/play/p0nfzcm7">standalone
version of the story</a> with a small picture of the axolotl’s face, but
nothing more.</p>

<p>I did, however, find <a href="https://www.facebook.com/groups/axolotlslovers/posts/1791405658411166/">something similar from September last year</a> in an
“Axolotls Lovers” [sic] group on Facebook.</p>

<blockquote>
  <p>Hi. My son recently rescued a axolotl from a river near us. Being the uk
waters and fast flowing waters she must have had a really bad time and lucky
my son found her. I managed to quickly get a tank together for her and shes
setting well i think lol. I have done alot of research and hope im doing
things right for her. Any tips on helping her gain weight as she was very
skinny and help her grow her fluffy gills again?also finding it straige she
has no black dots in her eyes they are see through. She obviously had a very
stressful time being dumped in a river. Any information il need to know would
be a massive help.</p>
</blockquote>

<p>A few seconds of searching for the author’s name led to their Instagram
account with <a href="https://www.instagram.com/p/DQRxKM5CKlt/">a video of the axolotl</a>.</p>

<p>So … is it <em>really</em> “the first documented discovery of the species in the wild
in the UK”? (And do BBC journalists actually go beyond merely repeating what
they’re told?)</p>

<p>An interesting detail is that this other person also appears to live in or
near Cardiff: they are pictured wearing <em>University of South Wales/<span lang="cy">Prifysgol De Cymru</span></em> scrubs and talk about visiting <a href="https://www.clearwellfarm.co.uk/">Clearwell
Farm</a>.
This raises the possibility that there are more axolotls living wild in south
Wales, and perhaps even that they can survive over the winter!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[How many wild axolotls are there in the UK? I heard a news segment on the radio this morning about an axolotl that had been caught in the wild in Wales. Here’s a transcript:]]></summary></entry><entry><title type="html">Week 276: Back to reality</title><link href="https://po-ru.com/2026/04/22/week-276-back-to-reality" rel="alternate" type="text/html" title="Week 276: Back to reality" /><published>2026-04-22T21:42:00+00:00</published><updated>2026-04-22T21:42:00+00:00</updated><id>https://po-ru.com/2026/04/22/week-276-back-to-reality</id><content type="html" xml:base="https://po-ru.com/2026/04/22/week-276-back-to-reality"><![CDATA[<p><strong>After a holiday</strong> that was busy, full of new places and experiences, but also
very relaxing, going back to sitting in front of a computer all day has been a
difficult adjustment.</p>

<p><strong>And as if just getting used to work again</strong> wasn’t enough, Tuesday ended up being
longer than anticipated. I hadn’t had a chance to check over my bike and pump
up the tyres over the weekend, so I took the Overground to Peckham on Monday
and Tuesday. That was fine until Tuesday afternoon, when I checked the time of
the next train and saw that they had all been cancelled.</p>

<p>Something had caught fire at Clapham Junction, at the end of the line, and as a
result trains on the entire Surrey Quays to Clapham Junction branch were
cancelled all afternoon and evening. One might naïvely ask why they couldn’t
just run the trains most of the way and back again, but I think all the
platforms along that branch serve multiple routes, and using one as a temporary
terminus would block other services.</p>

<p>I checked the options to get home: 56 minutes on the slow, winding 381 bus, or
58 minutes on foot. I chose to walk, as it costs nothing and it’s a bit more
pleasant – on a mild light evening, that is; it would have been different in
the rain. I used to walk home from Holborn fairly regularly when I worked
there; that was a little further but more picturesque, especially along the
river. However, I prefer to walk out of choice than out of necessity.</p>

<p><strong>On Wednesday evening</strong> we went to a Green Party fundraiser comedy gig,
conveniently located just upstairs from my desk. You never really know what
you’re going to get at that kind of event, but the overall standard was good,
and it was an entertaining evening.</p>

<p><strong>I saw an unhappy-looking vole</strong> in the garden on Friday afternoon. It was
just sitting there, looking unwell. It scampered away when I got close, but
I put some water out in case that was the problem. I haven’t seen a dead vole,
so perhaps it helped, but that’s all I know.</p>

<p><strong>We met a friend for brunch</strong> at the recently-opened <a href="https://www.instagram.com/simplicity_bakerycafe/">Simplicity
Bakery</a> in old Rotherhithe, in the premises that used to be the
otherwise unconnected Simplicity restaurant. The coffee was good, and the leek
and potato pastry was delicious. I hope it succeeds; that it was busy is a
promising sign.</p>

<p><strong>It’s been a while</strong> since I posted any links, so here’s a few:</p>

<ul>
  <li><a href="https://www.nippon.com/en/japan-data/h01362/">A Japanese Glossary of Chopsticks Faux Pas</a>.</li>
  <li><a href="https://www.v68k.org/advanced-mac-substitute/">Advanced Mac Substitute</a> 
“is an API-level reimplementation of 1980s-era Mac OS. It runs 68K Mac
applications in an emulator without an Apple ROM or system software.”</li>
  <li><a href="https://novaramedia.com/2026/02/17/the-media-let-mandelson-get-away-with-it-for-decades/">The Media Let Mandelson Get Away With It for Decades</a>.</li>
  <li><a href="https://www.newstatesman.com/technology/2026/04/the-silent-coup">AI’s sinister takeover of British politics</a>.
“British laws are already being written by AI.” But of course! Of course
those dunderheads would outsource their thinking to a machine.</li>
  <li><a href="https://eaw.app/picoz80/">picoZ80</a> is a
RP2350-based pin-compatible Z80 emulator plus RAM. It can also emulate a
disk controller and other peripherals.</li>
  <li><a href="https://github.com/ciscoriordan/kindling">Kindling</a> is a
fast, open source Kindle publishing toolkit that can also compile
dictionaries and comics.</li>
  <li><a href="https://bryankeller.github.io/2026/04/08/porting-mac-os-x-nintendo-wii.html">Porting Mac OS X to the Nintendo Wii</a>.</li>
  <li><a href="https://interblah.net/self-updating-screenshots">Self-updating screenshots</a>.
A simple great idea: capture your documentation screenshots in your build
system so that you don’t have to faff around updating them every time you
make a change.</li>
  <li><a href="https://essays.johnloeber.com/p/4-bring-back-idiomatic-design">Bring Back Idiomatic Design</a>.
Modern web applications are idiosyncratic and lack the consistency,
predictability, and consequent usability of older desktop environments.</li>
  <li><a href="https://www.newscientist.com/article/2521256-ai-data-centres-can-warm-surrounding-areas-by-up-to-9-1c/">AI data centres can warm surrounding areas by up to 9.1°C</a>.
Is that good?</li>
  <li><a href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667.html">On the foolishness of “natural language programming”</a>.
Edgar Dijkstra: “The virtue of formal texts is that their manipulations, in
order to be legitimate, need to satisfy only a few simple rules; they are,
when you come to think of it, an amazingly effective tool for ruling out
all sorts of nonsense that, when we use our native tongues, are almost
impossible to avoid.”</li>
  <li><a href="https://www.b-list.org/weblog/2026/apr/09/llms/">Let’s talk about LLMs</a>.
“Very few organizations have the strong fundamentals needed to absorb even
a relatively moderate, incremental increase in the amount of code they
generate, which I suspect is why so many studies and reports find mixed
results and lots of broken CI pipelines. Not only is there no silver
bullet, there <em>especially</em> is no quick or magical gain to be had from
rushing to adopt LLM coding without first working on those fundamentals.”</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[After a holiday that was busy, full of new places and experiences, but also very relaxing, going back to sitting in front of a computer all day has been a difficult adjustment.]]></summary></entry><entry><title type="html">Week 275: From Athens back to London</title><link href="https://po-ru.com/2026/04/19/week-275-from-athens-back-to-london" rel="alternate" type="text/html" title="Week 275: From Athens back to London" /><published>2026-04-19T15:14:00+00:00</published><updated>2026-04-19T15:14:00+00:00</updated><id>https://po-ru.com/2026/04/19/week-275-from-athens-back-to-london</id><content type="html" xml:base="https://po-ru.com/2026/04/19/week-275-from-athens-back-to-london"><![CDATA[<p><strong>Our journey back home started well.</strong> We <a href="/2026/04/11/week-274-london-to-athens-via-rome">reversed our steps</a>:
train to Kiato; bus to Patras; taxi to the port; overnight ferry to Bari. This
time, we were on the <em>Superfast I</em>, the twin sister of the vessel of the we’d
taken on our outbound voyage, and we even had the same room, identical except
for tiny things like the placement of a few electrical sockets.</p>

<p>In Bari, the weather was nicer than it had been last time. We walked a
different route past the castle and through the old town, stopped to pick up
lunch for the journey, and caught our train to Bologna.</p>

<p>The train made good progress as far as Foggia, where it paused. A landslip
further up the Adriatic line half an hour earlier had blocked traffic (and
would do so for a couple of days). This was the first misfortune.
We were to be rerouted via Rome, skipping Pescara and Ancona but stopping at
Bologna and Milan as intended. No problem; we were going to Bologna.</p>

<p><strong>But we didn’t leave Foggia,</strong> and although the display on the train and the
automated announcement kept repeating the same information, nothing was
happening. I went in search of information. I don’t really speak Italian, but
it’s basically just another Romance language with fairly reasonable
pronunciation (unlike, say, Portuguese, which is only comprehensible to me when
written) so I was able to grasp most of what was going on by listening to other
passengers talking to the staff, and occasionally asking for some
clarification.</p>

<p>Our train had broken down while waiting in the station. This was the second
misfortune.</p>

<p>Unfortunately, as they don’t let you take a train without a seat reservation,
we couldn’t just take the next train, and because it was Easter week all
the trains were already full. The Trenitalia staff said that we’d be taken
to our destination either on buses or on a replacement train, but they didn’t
know which.</p>

<p>Foggia is a backwater of a station to be stuck in. Much as I sometimes despair
at the shopping mall-ification of stations, at least you can get stuff there.
Foggia has not received these capitalist blessings. It has one bar and some
vending machines.</p>

<p>After a few more hours, there was more news, although I had to find it out by
asking, because if there’s one thing Trenitalia is absolutely dreadful at, it’s
telling passengers what’s going on. A replacement train set was being sent from
Rome, a few hours away.</p>

<p>Then a third misfortune befell us. A car had crashed on a level crossing,
and the train from Rome couldn’t reach us until that blockage was cleared.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/foggia-delay.webp"><img src="https://images.po-ru.com/opt/foggia-delay.webp" alt="A railway platform in Italy. Passengers and staff are standing around next
to a Freffiaross train. The departure board says that the 12:36 to
Milano Centrale is 620 minutes late. It is 22:30." /></a>
  
  <figcaption><p>Stuck in Foggia, over ten hours late</p>
</figcaption>
  
</figure>

<p>The replacement train eventually rolled into the station a little after half
past ten, ten hours after we should originally have left. It was greeted with
clapping and cheering from the exhausted passengers.</p>

<p>Even then it wasn’t entirely smooth: between Rome and Florence we took the
old, slow, winding route instead of the high speed track.</p>

<p><strong>We finally made it to Bologna at 06:00,</strong> nearly twelve hours later than
planned. At least it was still before dawn, and our hotel was only a couple of
streets away. We checked in and slept for a few hours before getting up in time
for the tail end of breakfast (until 10:00).</p>

<p>Between some low quality sleep on the train and some better quality sleep in
the hotel bed, we both felt rested enough to wander around Bologna. The sun
helped.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/bologna-street.webp"><img src="https://images.po-ru.com/opt/bologna-street.webp" alt="A cobbled street with tram tracks and cars between ochre-painted buildings
over colonnaded pavements" /></a>
  
  <figcaption><p>Bologna. Everywhere should have these colonnades: they’re good in
rain and shine</p>
</figcaption>
  
</figure>

<p>We walked around the city, saw the <em lang="it">Piazza Maggiore</em> and the Moline
Canal, ate lunch at <a href="https://missfagiola.com/">Miss Fagiola</a>, visited the <a href="https://www.museibologna.it/musica/">international
museum and library of music</a>, and had some <em>al fresco</em> beer at a
bar near our hotel.</p>

<p><strong>The last stop on our way home was Basel.</strong> The next morning, after a short
journey from Bologna to Milan, we boarded a Swiss train for the rest of the
journey. This was the most spacious and comfortable train of the trip.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/ch-train-window.webp"><img src="https://images.po-ru.com/opt/ch-train-window.webp" alt="A lake, with snow-capped mountains behind, and a buildings in the
foreground" /></a>
  
  <figcaption><p>Switzerland, as seen from the train window, definitely looks like
Switzerland</p>
</figcaption>
  
</figure>

<p>We were only in Basel for one night, but we arrived at 15:26, our hotel was
right next to the station, and we still had plenty of time to explore. We
walked around the old town, looked inside the <em>Münster</em>, took a rope ferry
across the river, and stopped at a bar on the river for a drink in the sun.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/basel-street.webp"><img src="https://images.po-ru.com/opt/basel-street.webp" alt="Looking down a hill towards an old building with elaborate decorations.
In the foreground is a bar with a welcome A-board and bags of rubbish outside.
In the street beyond, a cyclist passes." /></a>
  
  <figcaption><p>A street in Basel. The elaborate illustrations on the building include
a number of racial caricatures of the kind that wouldn’t be made today.</p>
</figcaption>
  
</figure>

<p>We walked along the Rhine, where people were relaxing in the evening sun and
they even have a little artificial beach, until we reached the restaurant
we’d booked for dinner: <a href="https://cantina-doncamillo.ch/">Cantina Don Camillo</a> in the old Warteck
brewery.</p>

<p>It’s a slightly odd concept for a restaurant: vegan starters, vegan mains,
vegan desserts, vegan wines, but they also serve meat main courses (but only
main courses). Is it so that you can take your non-vegan friends for a meal
and they won’t die from having to go through an entire meal without eating
meat?</p>

<p>In any case, the vegan food was delicious, I had a glass of one of the best
red wines I’ve ever tasted, and it came to an amount that reminds you that the
median salary in Switzerland is nearly twice that of the UK. It was a good
way to end our trip.</p>

<p><strong>The next morning,</strong> we walked the two minutes to the station and caught our
French TGV <em>Lyria</em> service to Paris. The travel agent hadn’t been able to book
us onto the earlier Eurostar that would have been a more reasonable connection,
so we ended up with a couple of hours to kill before we needed to check in.
There’s not a lot to recommend a visit around <em lang="fr">Gare du Nord</em>, but
one exception is <a href="https://europeancoffeetrip.com/cafe/cafetranquille-paris/">Café Tranquille</a> a block south. We drank coffee and
did a cryptic crossword before heading to the Eurostar terminal.</p>

<p>The previous train – the one we would have taken if we could – was running
late, and left about an hour late. Our train left about five minutes later than
scheduled. If we’d been able to take the earlier train, we’d just have spent an
extra hour in the unlovely environment of <em lang="fr">Gare du Nord</em>
departures.</p>

<p><strong>And then we were back in London</strong>, walking through Saint Pancras, and it
almost seemed as if we’d only been there the day before, even though it was
eleven days earlier.</p>

<p><strong>When I looked at our itinerary</strong> before we left, I was a bit worried that it
would feel as if we were spending the whole time on trains. In fact, it wasn’t
like that at all. Even in the places that we were in only for one night, it
seemed as if we saw a representative sample of what the city had to offer.
Furthermore, when you’re on the train, you see so much of the country between
the cities. We saw snow in the Alps, and abandoned houses – so many abandoned
houses – in the Italian countryside, and mountains and lakes everywhere. We
saw ancient ruins and mediaeval cities and four different countries and heard
multiple languages.</p>

<p>I’d definitely do it again. Even with the horrible delay on the way to Bologna,
I enjoyed the trip.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Our journey back home started well. We reversed our steps: train to Kiato; bus to Patras; taxi to the port; overnight ferry to Bari. This time, we were on the Superfast I, the twin sister of the vessel of the we’d taken on our outbound voyage, and we even had the same room, identical except for tiny things like the placement of a few electrical sockets.]]></summary></entry><entry><title type="html">Week 274: London to Athens via Rome (and a few other places)</title><link href="https://po-ru.com/2026/04/11/week-274-london-to-athens-via-rome" rel="alternate" type="text/html" title="Week 274: London to Athens via Rome (and a few other places)" /><published>2026-04-11T18:48:00+00:00</published><updated>2026-04-11T18:48:00+00:00</updated><id>https://po-ru.com/2026/04/11/week-274-london-to-athens-via-rome</id><content type="html" xml:base="https://po-ru.com/2026/04/11/week-274-london-to-athens-via-rome"><![CDATA[<p><strong>The <a href="https://sanshinkai.uk/">London Okinawa Sanshinkai</a></strong> was invited to perform at <a href="https://japanfestival.gr/">Japan
Festival Greece</a> in Athens on the Easter weekend – our Easter, that is;
Orthodox Easter as celebrated in Greece falls a week later this year – and I
decided to take part. L— and I chose to make a proper holiday of it: rather
than flying to Athens, we’d take the long route by train and ferry, and stop
off at some other places along the way. The itinerary, travel, and hotels
were all organised by <a href="https://www.byway.travel/">Byway</a>, who we used to arrange <a href="/2025/05/08/week-226-journey-to-the-basque-country">our trip to the
Basque country last year</a>, using their <a href="https://www.byway.travel/concierge">concierge</a> service. It wasn’t
cheap, but it wasn’t all that expensive either, considering that it included
travel, hotels, and first class upgrades on most of the train journeys. It
was also very easy and almost certainly cheaper than the nightmare of
administration that booking it ourselves would have been.</p>

<p>Our outbound itinerary was one night in Turin, two nights in Rome, and one
overnight ferry before arriving in Athens on Friday.</p>

<p>We left London on Monday morning. We started with the long queue for the
Eurostar at St Pancras (just behind the first example of <a href="https://www.youtube.com/watch?v=s7mefFgzfGo">Mar-a-Lago
face</a> I’ve seen in the flesh, and very disturbing it was). From Paris
<em lang="fr">Gare du Nord</em>, we took the RER to <em lang="fr">Gare de Lyon</em> and,
from there, a <em>Ouigo</em> TGV to Turin.</p>

<p><strong>Paris remains an annoying hold-out</strong> as the only place we visited where you
can’t just use a contactless bank card to travel, but instead need a special
card (Navigo) that you have to reload. Everywhere else, even on the diminutive
<a href="https://en.wikipedia.org/wiki/Turin_Metro">Turin Metro</a>, you can tap a card you already have.</p>

<p><strong>The TGV gets as far as Lyon</strong> rapidly, but then spends hours crawling across
the Alps on slow lines. We left London in the sunshine, but up in the
prematurely crepuscular shadow of the mountains it was snowing.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/modane-snow.webp"><img src="https://images.po-ru.com/opt/modane-snow.webp" alt="Station platform at Modane with a building, a freight train, the Alps
in the background, and snow falling" /></a>
  
  <figcaption><p>Snow in the Alps</p>
</figcaption>
  
</figure>

<p><strong>We broke through back into daylight</strong> on the Italian side and arrived in
Turin in time for dinner at <a href="https://gorillabar.it/">Gørilla</a>, a characterful bar with plenty of vegan
tapas options of which we ate our fill.</p>

<p>Although we were only in Turin for the night, after an early breakfast in our
hotel next to the station we had time to wander around the city for a couple of
hours before our 09:55 train to Rome.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/turin-mountains.webp"><img src="https://images.po-ru.com/opt/turin-mountains.webp" alt="A street harshly illuminated by the sun, half in black shadow, which
opens up to a view of snow-capped mountains beyond" /></a>
  
  <figcaption><p>Turin and the mountains behind</p>
</figcaption>
  
</figure>

<p>The <em>Frecciarossa</em> to Rome to was fast (295 km/h), it was reasonably
comfortable, and it arrived on time in the mid afternoon.</p>

<p><strong>Rome underwhelmed me, however.</strong> Whatever illusions of <em>la dolce
vita</em> you might harbour, dispel them. There is plenty of historic
architecture in various states of ruin, but the overwhelming theme of Rome is
<em>cars</em>. Perhaps it’s connected to the fact that the metro network is so
desultory, but every space that isn’t filled with as many lanes of traffic as
they could squeeze between the buildings is given over to static cars parked
double or even triple. We walked the Appian Way from the <em lang="it">Parco della
Caffarella</em> to the Colosseum; for most of the route the cobbled
street is two lanes of speeding vehicles, with only a narrow painted-on strip
for pedestrians on each side.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/rome-colosseum-crowds.webp"><img src="https://images.po-ru.com/opt/rome-colosseum-crowds.webp" alt="The Colosseum of Rome, next to a wide road, with pavements full of
tourists" /></a>
  
  <figcaption><p>The Colosseum in its context</p>
</figcaption>
  
</figure>

<p>The city is also crowded. By the raw numbers, there aren’t as many tourists in
Rome as in London – <a href="https://en.wikipedia.org/wiki/List_of_cities_by_international_visitors">fewer than half as many visitors</a>, in fact –
but because they seem to be squeezed into a smaller number of places it feels
much worse.</p>

<p>We decided not to squander our limited time in Rome in any of the queueing
opportunities, so we enjoyed the Colosseum and Palatine Hill from the outside.
I would, however, recommend the placid, tourist-ignored, and free <em lang="it"><a href="https://museodellemuraroma.it/">Museo delle
Mura</a></em> in the <em lang="it">Porta San Sebastiano</em>, in which
you can learn about the old city walls and walk along a section of them.</p>

<p>The churches are worth looking inside; for example, amongst all the scaffolding
and repairs in <em><a href="https://en.wikipedia.org/wiki/Santa_Maria_in_Campitelli">Santa Maria in Portico di Campitella</a></em> is a stunning
17th century altar:</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/rome-santa-maria-in-portico.webp"><img src="https://images.po-ru.com/opt/rome-santa-maria-in-portico.webp" alt="A shining altar with rays of gold between columns of grey stone" /></a>
  
  <figcaption><p>The golden altar of the church of Santa Maria in Portico</p>
</figcaption>
  
</figure>

<p>Our hotel was in the south of the city, in the <em>Garbatella</em> area, where we
found <a href="https://www.ristorantelebistrot.net/">Le Bistrot</a>, an amazing vegan restaurant, run by a friendly family,
serving adapted versions of traditional Roman and Italian cuisine.</p>

<p><strong>To get to Greece</strong> we first took another <em>Frecciarossa</em> to Bari on Thursday
morning. After a stop for a coffee, We walked through the old town in the rain
to the port, followed the long and perfunctory pedestrian route to the
terminal, and checked in for our ferry to Patras.</p>

<p>The ferry (<em><a href="https://www.superfast.com/en-gb/our-fleet/superfast-ii">Superfast II</a></em>) was fairly new and well appointed, and our room
was comfortable enough for a good night’s sleep disturbed only by the
alarming reverbrations of an intermediate stop in the wee small hours at
Igoumenitsa.</p>

<p>For most of the journey the ferry is within a short distance of the coast, so
to avoid the exhorbitant roaming charges of the marine base station on the
ferry itself, I turned off automatic network selection and fixed my phone
to an Italian network (and to a Greek one the following morning), and
had a working connection most of the time using my regular free roaming
allowance.</p>

<p><strong>The journey from Patras to Athens</strong> was more of a hassle. First, we had
to get from the ferry terminal to Patras itself. There are some intermittent
buses, but the easier way was a taxi for €10. There’s a railway station at
Patras, but you can’t get a train to Athens from there. Instead, you take
a bus operated by the railway company as far as Kiato, from where the train
to Athens departs. We’d been told to take the bus from the bus station across
the road, but when we reached the bus station we discovered that it was
abandoned, replaced by a newer bus station a few minutes further on. But
there was no sign of our bus on the departure board, and when I asked at the
information desk I was rudely informed that it was another company and they
didn’t know anything about it.</p>

<p>We walked back to the railway station, and found our bus parked in front. It
took us to Kiato, we changed to the Athens train (operated by Hellenic Train,
<em lang="it">Ferro dello Stato Italiane Group</em>, like it’s still the early Roman
Empire), and then caught the metro a couple of stops to our hotel, where we
arrived about 18:15 on Friday evening.</p>

<p>And then I immediately left again to go to the venue for a soundcheck, while
L— took our dirty clothes to a serviced laundry to be washed and dried for
€10. It’s much easier than carrying around a fortnight’s worth of clothes.</p>

<p>Athens is a lively place in the evening. We strolled to Exarcheia to
<a href="https://cookoomela.gr/en/">COOKooMÈLA</a> for delicious vegan souvlaki and generous cups of
wine (⅓ of a bottle for €3!) at a table on the pavement in front.</p>

<p>The Sanshinkai performance wasn’t scheduled until late on Saturday, which
left us plenty of time to wander around Athens, visit the <a href="https://kotsanas.com/">Museum of Ancient
Greek Technology</a> (fun and interesting), see some of the sights like the
National Garden, the Zappeion, the Temple of Olympian Zeus (we didn’t go in as
it’s half covered in scaffolding and you can see it pretty well from the fence
without paying €20 a head) and the Arch of Hadrian, wind our way through Plaka
and Monastiraki, and still have a few hours for a nap before heading to the
venue.</p>

<p>I found a music shop selling traditional instruments and tried several
<a href="https://en.wikipedia.org/wiki/Baglamas">baglamades</a> of various prices before choosing a mid-range one that was easy to
play and sounded good to my ears. It’s one more thing to cart with us on our
journey back, but at least it’s small and light: it’s specifically designed to
be that way.</p>

<p><strong>Our performance</strong> went well. Everyone knew what they were doing, nothing
broke, and the audience seemed to enjoy it. The taiko players didn’t bring
the bulky drums from London, but instead borrowed a couple from a Japanese
percussion group in Athens. Unfortunately, Japanese taiko drums are designed
for static use, rather than being carried by dancers, and these were about
twice as heavy as they were used to! They managed, but I don’t think it was fun
for them.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/sanshinkai-performance-athens.webp"><img src="https://images.po-ru.com/opt/sanshinkai-performance-athens.webp" alt="Eisa dancers, some with drums, and sanshin players, on a stage" /></a>
  
  <figcaption><p>Performing in Athens</p>
</figcaption>
  
</figure>

<p><strong>Early on Sunday morning</strong> L—, I, and most of the Sanshinkai performers
climbed up to the Acropolis in time for the 8am opening. The Ministry of
Culture had given us free tickets in exchange for our participation in the
cultural life of Greece, but the gate staff at the Acropolis, in full
jobsworth mode, were having none of it. “Why do you have free tickets?” Because
your government gave them to us. After our Greek member went to talk to the
ticket office staff, who didn’t have any problem with it, we eventually made it
inside.</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/athens-from-hill.webp"><img src="https://images.po-ru.com/opt/athens-from-hill.webp" alt="A view of Athens from high up. There is a large peripteral temple, and the
modern urban sprawl of Athens is visible behind." /></a>
  
  <figcaption><p>The Temple of Hephaestus and the modern city</p>
</figcaption>
  
</figure>

<p>Compared to Rome, even the most important sites in Athens are fairly quiet,
especially first thing on a Sunday morning. We took a relaxed wander around the
Parthenon and its environs before walking back down the hill to the Acropolis
Museum for brunch and a look at the exhibits.</p>

<p>The museum’s presentation of the Parthenon sculptures is excellent, and further
reinforces the inescapable truth that the ones that Elgin appropriated would
be better returned to their proper context, rather than continuing to sit in a
gloomy room in the British Museum.</p>

<p><strong>I liked Athens</strong> a lot, although I’ve never been anywhere quite so noisy.
We gave up on the idea of eating at one restaurant because the techno emanating
from a bar a street away was so unpleasantly loud – more appropriate to a
warehouse in an industrial estate than a residential street – that it would
have been like dining next to a pneumatic drill. The bar next to our hotel was
similarly loud, but luckily our room faced an internal courtyard and was
insulated from it.</p>

<p><strong>Sunday was our last full day</strong> in Athens; the journey continues in the next
installment.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[The London Okinawa Sanshinkai was invited to perform at Japan Festival Greece in Athens on the Easter weekend – our Easter, that is; Orthodox Easter as celebrated in Greece falls a week later this year – and I decided to take part. L— and I chose to make a proper holiday of it: rather than flying to Athens, we’d take the long route by train and ferry, and stop off at some other places along the way. The itinerary, travel, and hotels were all organised by Byway, who we used to arrange our trip to the Basque country last year, using their concierge service. It wasn’t cheap, but it wasn’t all that expensive either, considering that it included travel, hotels, and first class upgrades on most of the train journeys. It was also very easy and almost certainly cheaper than the nightmare of administration that booking it ourselves would have been.]]></summary></entry><entry><title type="html">Week 273: Ill communication</title><link href="https://po-ru.com/2026/03/31/week-273-ill-communication" rel="alternate" type="text/html" title="Week 273: Ill communication" /><published>2026-03-31T10:58:00+00:00</published><updated>2026-03-31T10:58:00+00:00</updated><id>https://po-ru.com/2026/03/31/week-273-ill-communication</id><content type="html" xml:base="https://po-ru.com/2026/03/31/week-273-ill-communication"><![CDATA[<p><strong>I spent the whole week with a horrible cold.</strong> My nose kept running. My
throat hurt. But the worst part was the lack of sleep: I slept fitfully and not
very much. Four hours on Wednesday night felt like a luxury by comparison to
the preceding days, and it wasn’t until about Friday that I felt actually
rested.</p>

<p>Monday was the worst. I took the day off because there was no chance of getting
any work done. I managed three days of work; they might not have been my most
productive ever, but I did at least finish off the thing I was doing.</p>

<p><strong>In Surrey Quays shopping centre,</strong> I saw teenagers queueing up to scan their
eyeballs with one of weirdo Sam Altman’s weird <em>World</em> (formerly <em><a href="https://time.com/6300522/worldcoin-sam-altman/">Worldcoin</a></em>)
iris-scanning orbs. I wonder if we’ll ever hear the outcome of <a href="https://web.archive.org/web/20230801005916/https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/2023/07/ico-statement-on-worldcoin/">the ICO’s
enquiries</a> (that post has since been scrubbed off their website), and I
wonder whether scanning the irises of minors into your massive database is
actually legal. I would have assumed not, but perhaps it counts as “innovation”
and thus benefits from some kind of impunity.</p>

<p>I hope the approximately £5 worth (at current prices) of oddball cryptocurrency
is worth giving their iris scans to Sam Altman forever.</p>

<p>It doesn’t feel like the kind of thing that happens in a society where things
are going well.</p>

<p><strong>L— and I went out delivering leaflets</strong> for the Green Party in advance of
the local elections. We tried on Friday night, but after about ten minutes it
started raining hard and we had to call it off. It was sunny on Saturday
morning, so we finished off the rest of it. The hardest part was getting to
letterboxes in blocks of flats where the developers have blocked off the
post boxes <em>inside</em> the locked entrance. Must be hard to get anything
delivered when you live there. The second hardest thing was deciphering the
unreasonable house numbering scheme perpetrated by developers when building
housing during the <a href="https://en.wikipedia.org/wiki/London_Docklands_Development_Corporation">London Docklands Development Corporation</a> era.</p>

<p><strong>On the way, we saw a fox</strong> brazenly eating off the road in the middle of the
day, only moving reluctantly to allow the occasional traffic to pass. On closer
inspection, its irresistible meal turned out to by a grey squirrel, squashed
flat into a pancake of flesh and fur by passing cars. The fox eventually pried
the sheet off the ground and carried it away to be finished off in peace
somewhere else.</p>

<p>It’s a bit gross, but hey, that’s the circle of life in the city.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I spent the whole week with a horrible cold. My nose kept running. My throat hurt. But the worst part was the lack of sleep: I slept fitfully and not very much. Four hours on Wednesday night felt like a luxury by comparison to the preceding days, and it wasn’t until about Friday that I felt actually rested.]]></summary></entry><entry><title type="html">Week 272: It’s a long way to Heilongjiang</title><link href="https://po-ru.com/2026/03/24/week-272-its-a-long-way-to-heilongjiang" rel="alternate" type="text/html" title="Week 272: It’s a long way to Heilongjiang" /><published>2026-03-24T18:57:00+00:00</published><updated>2026-03-24T18:57:00+00:00</updated><id>https://po-ru.com/2026/03/24/week-272-its-a-long-way-to-heilongjiang</id><content type="html" xml:base="https://po-ru.com/2026/03/24/week-272-its-a-long-way-to-heilongjiang"><![CDATA[<p><strong>I’m writing this sleep-deprived,</strong> having come down with a nasty cold at the
weekend that has kept me awake for the past two nights. I hope it won’t be too
incoherent as a result.</p>

<p><strong>My week didn’t start auspiciously, either.</strong> I had to re-prove my identity to
one of my bank accounts by uploading a photo of my driving licence – in case I
had ceased to be myself in the past few years, I suppose – as a result of
which left my wallet on my desk at home before cycling down to Peckham for the
day.</p>

<p>I didn’t realise until I tried to get it out of my pocket to open the door. I
just turned straight around and cycled home. At least it was a mild and
sunny morning for it, although there was enough pollen to leave me sneezing.</p>

<p>On the way, I spotted a sticker on a lamppost advertising another “Unite the
Kingdom” <a href="/2025/09/16/week-245-infinite-variations#:~:text=Hundreds%20of%20thousands,terrified.">jamboree of littering and racism</a> in May. That will be a weekend to
avoid central London.</p>

<p><strong><a href="https://traid.org.uk/">Traid</a> on Rye Lane</strong> were doing one of their periodic sales; this time,
everything was £2, so I thought it was worth a look. I found a nice hooded
cotton/linen lightweight jacket from Uniqlo that’s perfect for the warmer
weather. It’s not brand new, but it doesn’t look like it was worn more than
once or twice. I’ll take that for £2!</p>

<p><strong>I narrowly escaped falling victim</strong> to <a href="/2026/03/19/week-271-dislocation#:~:text=On%20Wednesday%20morning,ground.">a similar fate as L— the week
before</a>, in the same place, when someone on a rental e-bike (Forest, this
time) raced down from the <a href="https://www.openstreetmap.org/#map=18/51.485569/-0.048913&amp;layers=C">Millwall path onto Senegal Way</a>
in front of me without slowing or looking.</p>

<p>Rental e-bikes are useful and clearly popular, but they do seem to attract some
especially insouciant riders who put everyone in danger. They’re full of
instrumentation and comms hardware in order to track their location and operate
the service, so I wonder whether the companies could be made to take more
responsibility for their riders. Perhaps accelerometer data could identify
hazardous riders, or location data could be used to reduce the maximum speed
near junctions. I don’t think they’ll do anything without legislation or
the threat of losing licences, though.</p>

<p><strong>I had a much-needed haircut.</strong> My hairdresser, whom I’ve been visiting for over
a decade, had been away visiting her family in Malaysia for over a month.
That’s long enough for me to really need a haircut, but not long enough to go
to the hassle of finding someone new. She’s back now, and I look better for it.</p>

<p><strong>We went to the Tate Britain</strong> to see the <a href="https://www.tate.org.uk/whats-on/tate-britain/turner-and-constable">Turner and Constable exhibition</a>
before it closes next month. I came away with a distinct preference for
Constable’s work: in comparison, his paintings seem livelier, and more human,
whereas Turner doesn’t even really seem to like people. Given the choice, I
prefer realism over classical scenes. On the other hand, my absolute favourite
picture was <a href="https://www.tate.org.uk/art/artworks/turner-norham-castle-sunrise-n01981"><em>Norham Castle, Sunrise</em> by Turner</a>, painted late in his
life, a canvas of pure light.</p>

<p><strong>On the way back,</strong> we passed a <a href="https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_China">Chinese-registered</a> car, just parked on
Millbank. How did a car from <a href="https://en.wikipedia.org/wiki/Harbin">Harbin</a>, a landlocked city in Heilongjiang
province in Northern China, come to be parked in London? How would you even
drive here? And why? It’s one thing to transport a supercar halfway across the
planet, but a <a href="https://en.wikipedia.org/wiki/GAC_Toyota">Chinese-made Toyota</a>?</p>

<figure class="image-container">
  <a href="https://images.po-ru.com/opt/heilongjiang-car.webp"><img src="https://images.po-ru.com/opt/heilongjiang-car.webp" alt="A white car parked on the street by the River Thames. It has a Chinese
number plate and Chinese branding" /></a>
  
  <figcaption><p>A long way from home</p>
</figcaption>
  
</figure>

<p><strong>Links</strong> for good or ill:</p>

<ul>
  <li><a href="https://www.sciencedirect.com/science/article/pii/S1571064524001672">The major-minor mode dichotomy in music perception</a>.
A systematic review of literature on how we feel about major and minor
keys. Even in Western music, the association of major with happy and minor
with sad is relatively recent.</li>
  <li><a href="https://onlinelibrary.wiley.com/doi/10.1111/desc.13341">Children’s associations between space and pitch are differentially shaped by language</a>.
The idea that musical pitch is “high” or “low” is not universal, and not
necessarily even particularly intuitive; in this study, they found that the
Turkish concept of “thin”/”thick” is internalised at a younger age than
“high”/”low”.</li>
  <li><a href="https://github.com/asciimoo/hister">Hister</a>
is a search engine that indexes websites you’ve visited.</li>
  <li><a href="https://www.theweavingmill.com/reverse-drafting-club">Reverse Drafting Club</a>:
“Reverse drafting is the process of unraveling fabric swatches and
diagramming their construction using weave draft notation. It’s really fun!
So fun that we started a Reverse Drafting Club to work remotely on this
practice with friends near and far.”</li>
  <li><a href="https://tiledwords.com/">Tiled Words</a> is
a sort of crossword/Scrabble mash-up daily word game.</li>
  <li><a href="https://no01.substack.com/p/march-19-21-god-is-a-comedian">March, 19-21: God is a comedian</a>.
“Friday’s press gaggle. Barely exaggerated: at 12:03 PM, President Trump
told reporters he wanted a ceasefire with Iran. At 12:05 he declared
victory. At 12:07 he announced he was sending Marines. At 12:08 he said no
boots on the ground. At 12:11 he said he did not want a ceasefire. At 12:16
he declared victory again. At 12:17 he asked for a ceasefire. At 12:23 he
told NATO they were cowards. At 12:29 he said Iran was begging for a
ceasefire. At 12:31 he said everything was perfect. At 12:36 he said $500
oil was a good thing. At 12:37 he demanded Iran open Hormuz. At 12:39 he
said Hormuz was never closed. At 12:41 he said the US was not at war with
Iran. At 12:42 he declared victory in Iran.”</li>
  <li><a href="https://thatshubham.com/blog/news-audit">The 49MB Web Page</a>.
“I went to the New York Times to glimpse at four headlines and was greeted
with 422 network requests and 49 megabytes of data. It took two minutes
before the page settled. And then you wonder why every sane tech person has
an adblocker installed on systems of all their loved ones. […] To truly
wrap your head around the phenomenon of a 49 MB web page, let’s quickly
travel back a few decades. With this page load, you would be leaping ahead
of the size of Windows 95 (28 floppy disks). The OS that ran the world fits
perfectly inside a single modern page load.”</li>
  <li><a href="https://www.theguardian.com/lifeandstyle/2026/mar/16/pet-ill-never-forget-penny-the-pigeon-who-never-left-my-side">The pet I’ll never forget: Penny, the pigeon who never left my side</a>.
“[Pigeons] are so misjudged: they’re incredibly intelligent, loyal and
affectionate. Just like Penny was. I was never lonely while she was in my
life.”</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[I’m writing this sleep-deprived, having come down with a nasty cold at the weekend that has kept me awake for the past two nights. I hope it won’t be too incoherent as a result.]]></summary></entry></feed>