Vulnerability
By Scott Helme
One of eMudhra's certificate authority private keys is the number 4.
Not a number that starts with 4, or the number 4 followed by a few hundred random digits, just, 4... Another one is 56, and another is 115. I know, because I recovered all of them from
By Troy Hunt
I have this sense that we've passed the point where "vibe coding" is a derogatory term. I have no empirical evidence for this; it's more a feeling that those weaponising the term have now accepted the inevitability and are just getting with the program.
By Niko Köbler, Sebastian Rose
📣 It’s time to share what you’ve built, learned and fought with! The Call for Papers for Keycloak DevDay 2027 is open until October 24, 2026.
As announced in our Save the Date post back in June, the world’s largest Keycloak community conference returns to Darmstadt, Germany, on April 8–9, 2027. And once again, we want the conference day to be shaped by the people who know Keycloak best: you, the community.
Anything Keycloak-related is welcome! To give you some inspiration, we’d love to hear about:
Real-world implementations and case studies
Migration stories and lessons learned – including the things that went wrong
Keycloak core features and new developments
Extension development and customization (SPIs, themes, providers, …)
Operating Keycloak in production: deployment, monitoring, upgrades
Performance optimization and scaling
Security best practices and patterns
Identity standards and protocols (OpenID Connect, OAuth 2.x, SAML, passkeys, …)
Integration with cloud-native technologies
One thing to keep in mind: everyone at DevDay already knows Keycloak. Please don’t submit an introduction talk. Our audience wants to go deep, so bring the details, the code and the war stories.
👉 Submit your proposal on Sessionize: sessionize.com/keycloak-devday-2027
⏰ Deadline: October 24, 2026
As a speaker, you get free access to the event (main speaker only, not co-speakers). As a community conference, we keep costs as low as possible, so we can’t cover travel or accommodation. Thanks for your understanding!
Need some inspiration for your proposal? Check out the talks from previous editions on YouTube:
We’re looking forward to your submissions – and to seeing you in Darmstadt next April! 🚀
Niko & Sebastian
By Scott Helme
A post called Passkeys are a trap. Do not use them. has been doing the rounds over the last few days, making it pretty high on Hacker News, and I've had it sent to me many times with an 'is this true?' kind of vibe. It&
By Troy Hunt
I remember the name of that AI doco now - The AI Doc: Or How I Became an Apocaloptimist. I was watching it on the long-haul flight home the other day, and what I found particularly engrossing was the polar-opposite opinions from a bunch of people: "it'
To download the release go to Keycloak downloads.
Before upgrading refer to the migration guide for a complete list of changes.
By [email protected] (RevK)
Latest project is a time server.
So why? Well, they exist - you can buy a really nice LeoNTP server, with impressive specs. We see response times of 0.1ms, and it claims 100,000 requests a second. They also have a PPS output, and can do a calibrated 10MHz output apparently (I can't do that).
Can I get close using an ESP32? Well, sort of.
See shop.revk.uk if you want to buy. £60 not £600!
It should be simple, in theory - a GPS module, capture CPU cycle count on PPS interrupt and use to get clock rate. Capture NMEA to get time for PPS. Capture cycle count on NTP packet and use reference cycle count, clock rate, and reference time to know exact time of day to fill in NTP reply. yay!
Of course it is never entirely that simple. I did all this and got a working system, but I could do better. My latency as measured on a FireBrick was 2.5ms. I did averaging of the PPS intervals to get a more consistent clock rate, and often the standard deviation on that was below 10ns! But not always. I then did a best of last 5 seconds in terms of a PPS interval to use as a reference - that way the odd delayed interrupt had no impact. That seems to work.
One thing I wanted was PPS interrupt at higher priority than Ethernet, but all GPIOs on an ESP32 are the same interrupt source. Bugger. Do a search and you see plenty of people pissed off about this. I found a fix, make the PPS a PCNT (Pulse count) which has an interrupt (count to 1) which can be set separately to the Ethernet interrupt. There is a trick to remember.
The PCB design is not that hard now I have cracked Ethernet. A main PCB, with USB-C, DC input, PoE, and Ethernet.
I have since made an even more compact design.
This then connects to a GPS module, which you can hang out the window (or better, fit in a Stevenson screen). Link with 5 core cable (solid cat5 is ideal), and it can handle a few metres.
Then put both in a nice 3D printed case. See shop.revk.uk if you want to buy. £60 not £600!
The fact my response times where around 2.5ms was not ideal. I wanted better, but how.
First bodge was hook in to the Ethernet driver receive code and check for NTP packets as they come in, and do a direct reply. I got latency down to 1ms, yay!
But I can do better :-)
Scrap the Ethernet controller altogether. Write my own custom low latency driver. Dedicate CPU1 to PPS and Ethernet only. My custom driver can...
And guess what - latency down to 0.1ms - bang on what I wanted. Indeed I have seen 0.077ms even.
Now, the logic is fun - it makes the Ethernet no use for anything but NTP. So I have made it (a) optional, and (b) normal Ethernet for first 2 mins so you can access it via Ethernet if needed (assuming you can control power/PoE to reset).
But once switched to low latency NTP only Ethernet, you have to use the WiFi for any access, management, MQTT, and so on.
I found bugs in the Ethernet chip (KSZ8851SNL) which does not check IPv6 UDP checksums correctly!
I also found it almost impossible to convince the Ethernet chip to give me unicast, multicast, and broadcast packets - in spite of a lot of reading the data sheet and trial and error. It is now in promiscuous and relying on the switch to protect it. Even that makes no sense - you have to set "Allow any packet" and "Invert the input filter" which to mean means "allow no packets!". I may yet find a working setting. I have already spent a day on this.
I also found it used edge triggered interrupt with a check in task for ISR set as well on timer, I changed to level triggered and that seems to work without hanging.
I also found it nearly impossible to cleanly decommission the Ethernet driver in ESP IDF. I managed to take over interrupts and kill the task, and that was all. Anything more thorough was a nightmare. But that works.
Well some people are putting in the UK NTP pool, it seems to meet the requirements well and work at a level similar to the rest of the pool.
But it is mainly aimed as being the main server in any business / office. Include with your pool NTP, but being local it will win.
I do not get close to even 10,000 requests a second, more like 5,000, but that is not needed for a typical business, even a large one.
By [email protected] (RevK)
I am pleased to say that my new time servers are in the UK NTP pool now.
Dave has done a nice report on how well they are performing, here.
See shop.revk.uk if you want to buy.
By [email protected] (RevK)
Some time geeks (should I say Time Lords) checked out my clocks.
Seems they are impressed, saying sub microsecond.
I have spent all day trying to improve on that, and I think I have.
The issues are several - the PPS interrupt that captures the time signal works well, but can randomly have extra latency. The original signal can have jitter, drift, and ever sawtooth (actually have not seen this).
What I did not realise is that there is also noticeable clock drift on the processor, probably temperature related.
I previously assumed clean "on the second" PPS. I have changed it so that is used as a reference on longer term (moving average 5 mins) for frequency, and shorter term phase offset tweaks.
This means my per second reference CPU cycle counts change by 1 at a time as things change, the main change being clock frequency drift. This result is reference ticks varying by 4ns or less.
I need to get the Time Lords to check my latest code and see what they find.
See shop.revk.uk if you want to buy. £60 not £600!
By [email protected] (RevK)
It is a while since I have ranted about "Special Faults Investigation" service that Openreach sell.
This system worked pretty well, and at each level someone is providing a service to some spec for a fee, and if the service breaks and does not meet that spec, then of course, they have to fix it, at no charge to their customer. Each layer builds on many parts to make a service to their customer.
This is where SFI comes in - there is gap. If the metallic path breaks, Openreach will fix it, however if it meets the spec (based on telephone calls) but is not good enough for ADSL data (e.g. below the min sync level BTW have agreed with the ISP), then Openreach DON'T HAVE TO FIX IT because it meets the metallic path spec. So they SELL an extra service to BTW, a Special faults Investigation, which, for a fee, involves the engineer trying to improve the metallic path (beyond the spec) to be better for data (e.g. ADSL). BTW have to buy this so as to fix the broken data service that they are selling to the ISP.
All of the above sounds fine, at first. Bear in mind, BTW sell a data service to ISPs, and if a DSLAM breaks they will get it fixed (at not charge to ISP) and the same should apply if the data over the metallic path breaks (e.g. below agreed minimum sync rate), and again as not to spec that should be at no charge to ISP. But BTW DID CHARGE ISPs for the SFI. What is worse is many ISPs then charged their customers for the SFI!
This led to a lot of disputes, and the pettiness got mental. Some examples are BTW used to say SFI was optional so on all faults said we do not opt for SFI. They then refused to actually fix lines unless and SFI was booked but said charge was for work beyond the master socket, so we said do no work beyond master socket. They then said they could not accept that request, and also said that a visual inspection of the end user router and wiring counted as (chargeable) work beyond the master socket. At one point we instructed customers (who did this) to remove their router and all wiring and physically hide it out of sight before the BT engineer arrived. We had pictures even. BTW still tried to charge. On one occasion the engineer immediately closed the fault as "no customer router plugged in", without testing or fixing the fault! We have done well disputing SFI charges at every stage, usually quoting their own terms to them and again explaining that we (as an ISP) are not buying a metallic path.
Note: there is a logic for a charge for wasting time - reporting something that is not a fault, e.g. an engineers visits and finds the end users router is on fire - a charge on that basis, as a penalty of some sort, does make sense and makes sense to be passed on to whoever screwed up.
Now we have the crux here - we are still getting SFI charges, and still spending time disputing them, but for almost all lines SFI should not exist. To explain, that initial bullet point has changed for most lines now - because of the UK telephone service switch over from old copper pairs to the exchange.
What we have here is no longer a gap - no longer is Openreach selling a metallic path and BTW using it to sell a data service. If the data service is not working it is Openreach not providing something to spec, and so Openreach should fix that as a NORMAL FAULT INVESTIGATION. There is no gap for which SFI was invented to cover. Indeed, BTW should dispute every such SFI charge before even thinking of charging us (ISP).
There are still some ADSL, but they are quickly going, so SFI could exist for those lines for now - with the same original controversy of BTW trying to charge ISPs, but this is dwindling. Somehow BT try to charge for SFI for VDSL and FTTP services even now where it logically makes zero sense.
If BTW really are separate from Openreach now, they really have no excuse for not disputing every SFI charge related to FTTC or FTTP on this basis.
One thing BT never had the nerve to do with all their changes to contract terms was make it so that their customer would have to pay them to fix a service they agreed to provide, but were failing to do so. Such a contract, even on a commercial basis, would be very challenging, and I would hope OFCOM could be persuaded to step in if that happened. The basic concept of I agree to pay you for a service and you agree to provide that service relies on the provider having to provide what they agreed, or they fix at their own cost. They tried a lot - the whole visual inspection is perhaps the most creative, but never that.
I may not be able to say that for all providers, but that is another story.
By [email protected] (RevK)
What is fun with a nice UV ink jet printer is on what you can print...
One thing is a bank card.
This is now my Monzo card, oops.
Someone suggested I make a flashy web site offering this as a service just to see how many people will send me their bank cards to print. It really is the 2026 version of "wallet inspector"!
By Richard Speed
October preview raises supported limit from 300,000 items, with general availability penciled in for June 2027By Richard Speed
Maintainers reckon a quarter of incoming pull requests are slop, rising to 31% on larger projectsBy Jessica Lyons
Consider this the wake-up callBy /u/hexxlibris
Like...absolute garbage that i try to throw away before the kids even see it. How can I (politely) ask them to stop?
By /u/MoneySaverPete
I do love a dad joke, but even I know they're not funny after a certain point.
I still can't help myself though.
The one that I always say...
Every time I see a hearse, I tell my family, "I hate those cars. You wouldn't catch me dead in one of them".
It's actually got to the point where they try and say it first.
Anybody else lacking self-control?
By /u/ButHowDoesItFeel
submitted by /u/ButHowDoesItFeel to r/bigbrotherukBy /u/frantic_calm
| submitted by /u/frantic_calm to r/unitedkingdom [link] [comments] |
By /u/drlouies
| @bigassdave [link] [comments] |
By /u/Character_Growth_397
| What If - In one of the comics Miles becomes Thor, and it's full of stereotypes about black people such as the Mjolnir having graffiti on it and the infamous "by Odin's fade" Emilia Perez - Everything about the movie [link] [comments] |
By /u/Incustody444
| submitted by /u/Incustody444 to r/drivingUK [link] [comments] |
By /u/boriskin
| submitted by /u/boriskin to r/worldnews [link] [comments] |
By /u/Curious-Expert926
submitted by /u/Curious-Expert926 to r/AskRedditBy /u/HotMinuteUK
| submitted by /u/HotMinuteUK to r/GoodNewsUK [link] [comments] |
By /u/jco23
| No one noticed because it was on a middle shelf in the back and turned black. [link] [comments] |
By /u/digidevil4
| The main bedroom in this house is a loft room and the house was built with this really awkward storage cupboard. Its too deep and has headroom above the door. Apologies its currently stuffed with clothes so ive used an Ikea design tool to visualize the inside, A Kallax box for scale.. Roughly 75.5x103cm and 176cm height. I cant fathom what they were thinking with this.. Its too deep to reach to the back, its awkwardly off the ground, there is a gap above the door.. Help UPDATE: The paint is Dulux Emerald Glade as people keep asking. [link] [comments] |
By /u/Xander725
Please settle a debate. Lad I work with goes downstairs for a large bag of buttons at 1-3am almost daily. He will eat them in the kitchen before returning to bed. Is this weird, as I think it’s worth putting someone in a straight jacket for. Cheers
Edit - for those that think I and my colleagues have a pitchfork out for this lad, obviously we haven’t. It was just a shock to us all who tend to do our eating outside of our sleep schedule. He says ‘everyone he’s ever met does it, hence the post’ I know some people love donning the white knight armour
Edit 2 - after 500 comments I am willing to concede there are more midnight snackers than I thought. However it has been established that it’s not massively common. We’ve also established that smashing a massive bag of buttons is mad, even for you midnight munchers
Edit 3 - He has now stated he is aware that 3am buttons is a problem. But has acknowledged if he has a few beers he doesn’t ever fancy 3am buttons. So has convinced himself that having a few beers a day is a healthier alternative as he sleeps better
By /u/DaddyRAS
| After about 12 years. Because I've come to enjoy lemon, lime and bitters. I've bought a new bottle too. [link] [comments] |
By /u/Benjibob55
I seem to start most business emails with it, would you appreciate it or shall I just get straight to the point? After 20+ years I'm questioning it...
eMudhra Intermediate CA Compromise
This is very, very bad news:The private keys of eight eMudhra intermediate CA certificates have been compromised. They chain to roots trusted by the Mozilla, Microsoft, Apple and Chrome root programs and by many downstream trust stores.
Any software that bundles a list of trusted certificates needs to be updated. This site is tracking software updates via this GitHub repository - Linux distros need to update their ca-certificates packages.
In Python world uv 0.13.4 and pip 26.2.2 and certifi 2026.10.19 have been released with upgraded certificate lists.
My latest vibe coded game experiment is a Command & Conquer style RTS (Real Time Strategy) game called Battle Drones (play it here). Unlike my previous experiments, this one is actually fun to play. I'm somewhat embarrassed to admit that I got there by telling Claude to "Make it a LOT more fun". It also supports multiplayer between nearby devices using audio to synchronize game state! Here's what I've built so far, and some of the things I learned along the way.
My initial goal was to build an RTS game I could play on my phone, in the style of Command & Conquer. I have fond memories of the 1995 original (I liked Red Alert too) and wanted to recapture a little bit of the magic.
After 12 major iterations (and 321 commits by coding agents, mainly Claude Code) I now have a browser-based game that works on mobile and desktop, has multiple play modes, several maps (including a random map generator) and even supports multiplayer for two devices within microphone range of each other. (Update: also online multiplayer; the audio multiplayer induced headaches!)
Here's a video demo of Battle Drones running in a desktop browser:
Features so far include:
Battle Drones is heavily vibe coded - I've reviewed almost none of the code, and it's built in a language (TypeScript) that I've hardly used myself. I've playtested it quite a bit though, and it's been through a large number of iterations since I started the project.
Here's a rough history of the project so far, including key prompts and links to transcripts.
I started out with Claude Fable 5 back in July:
We are going to build a mobile friendly RTS game - command and conquer style - called Battle Drones, in which two armies of drones (both flying and ground-based) battle for territory and resources
Let's start with a MVP design, ask me some questions
Here's a shared transcript. I'd given Claude Code for Web an environment variable with an OpenAI API key and told it to use the OpenAI Image Generation API for assets, which got me some basic sprites.
You can try v1 here - it looked like this:

It's recognizable as an RTS, has building mechanics and the ability to select and direct units, and a basic AI to play against.
This first version was barely a proof of concept, and it wasn't any fun to play.
Claude used the Phaser 2D game framework for these early versions. I didn't even realize this until several iterations later!
The second version (try v2 here) added sprites for all of the vehicles and the "AI vs. AI" mode, so I could watch the game playing without having to directly control it myself.
Claude proved reasonably competent at prompting OpenAI's image models to generate sprites. You can browse the v2 sprites in the public/assets/sprites folder.

It still wasn't much fun, and the graphics were boring. It was now October, and I had upgraded to Claude Opus 5.5. I told it:
Massively improve this game. Make the graphics and gameplay better (keep it mobile friendly). Render new graphics using the latest OpenAI GPT image API (lookup details) with the API key in the environment variable. Add new unit types and balance the gameplay better. Also add new buildings and better, more varied terrain.
This resulted in five new maps with generated background tiles in a variety of styles, visible here. Opus also regenerated the sprites, making them much more visually appealing. You can try v3 here - it looks like this:

This is starting to feel like a real game! It still wasn't very fun to play though - I found myself getting bored pretty quickly.
So far my Battle Drones experiment was confirming my previous belief that coding agents can build a thing that looks like a game but can't actually make something that's genuinely compelling to play.
I shared this theory with someone over dinner, and then thought to myself that I should give the models a proper chance to prove me wrong. I prompted Opus 5.5 on my phone:
This game isn't fun enough yet. Make it a LOT more fun.
This time I was running in Ultracode mode, where Claude Code (in this case Claude Code for Web) runs "dynamic workflows", described in their docs as:
A dynamic workflow is a JavaScript script that orchestrates many subagents at once.
This kicked off many hours of work. I started it in the evening and didn't get a playable result back until late into the next morning. But the results were spectacular.
You can try v4 here - it looks like this:

I had Claude write its own release notes - here are the highlights:
Every skirmish and Daily Op now opens with a choice, gives the side that's losing a way back, and pulls the armies into the middle of the map. There are also two new ways to play.
- Openers: pick Blitz, Industry or Air Wing before the clock starts.
- Call-down powers: Barrage, EMP, Drop Pod and the Sky Hammer orbital strike.
- Objectives and salvage: Uplink relays, supply drops and wrecks worth scrap.
- Feel: combat juice, adaptive music, unit voices and an announcer.
- Command: battle alerts, game speed, saved squads and touch placement.
- New modes: Last Stand survival waves and an 8-mission Ops campaign.
- Progression: heroes, an after-action report with awards, a career, 7 mutators and a Daily Op.
Fights run longer and swing more. In 1,200 AI-vs-AI test matches on Normal, games still undecided after 25 minutes fell from 14% to 0.9%. The share of wins by a side that had been 800+ scrap behind rose from 24% to 46%.
Part of the reason Claude took so long was that it ran over a thousand simulated playtest sessions, and used the results to rebalance the existing units, add new ones, and introduce new features.
After the success of Ultracode at "Make it a LOT more fun", I decided to be more ambitious:
Port this game to three.js with 3D models for all of the buildings and vehicles and landscapes
That was another overnight run. I woke up to this v5 version:

The new 3D models were entirely constructed by Claude in TypeScript code.
v6 (play v6 here) added some more visual polish. v7 (play v7) added robot infantry (troopers, rocket squads, snipers) and a "Condor" troop carrying aircraft.
I was beginning to feel guilty at how little actual design input I had into the game - it really had been a case of me saying "make it more fun" and "add visual polish" for the past few releases.
I'd noticed that the AI didn't use the new infantry and troop carrying aircraft from v7 very often - there wasn't a great strategic reason to use them.
It would be neat if we had a new map with a new game mechanic that actively encouraged players to load up Condors with infantry robots and send them out into the map.
This resulted in my longest prompt yet:
Design a new map. Goal is to make different strategic incentives that encourage use of Infantry and Condors and aerial vehicles.
To do this the map will have limited harvester resources but several more uplinks - but uplinks will be on islands that are inaccessible by land vehicles or infantry. These uplinks can also not be claimed using air vehicles. The ONLY way to get them is to fly infantry there in a Condor.
Armies always start with a Condor and a single squad. If an army has no Condor a new one will be provided for free, flying in from the edge closest to their HQ and landing there. That free condor will come with a single free squad on board.
The two HQs should be entirely separated by water, but still accessible by vehicles thanks to two bridges across the map in different places
I want to encourage a battle over uplinks.
The map should be the times the size of other maps - still square
First research and then critique this design. Only build after we have agreed on any modifications
You get to design a new biome for this
The result was the tropical Archipelago map, with seven island uplinks that players can only capture by flying out infantry in a Condor. It's definitely the most fun map to play, once you've got the hang of the basic game mechanics from the simpler maps. The v9 edition made that map a little more interesting - it now looks like this:

I decided to add giant robot mechs to the game - think Jaegers from Pacific Rim, or Titans from Warhammer 40,000.
Here are some of the prompts I used to brainstorm with Claude:
Help me brainstorm ideas for adding giant robots to this game - think dreadnoughts or titans from W20K - how could we do this in a way that enhanced gameplay, kept things balanced, added unique twist? Don't overthink this yet
Let's keep brainstorming. I like the idea that it's a mobile base - that can accept harvested scrap and can have buildings built near it (even if it later moves on) and can produce infantry units too. An interaction with condor would be neat but I don't know what that could be.
Idea: as it gets damage it loses the ability to fire some weapons - by default it has eye laser (like lancers) and arm canons (like titan) and two shoulder mounted mortars, plus machine guns similar to a squad of troops
Damage knocks out mortars and then laser - it always has guns. You can't build next to a building that was only put there because of the mech, you need the mech there for off-base building and only within three squares of it
[...] Lets do two condors can carry the mech
The end result is really cool.
Goliaths can be constructed using a Gantry - a building that can only be created after first building a Fab, Bay, Airpad, and Tech Lab. You can see the Goliath under construction, and it then walks out from the Gantry and can march around the map.
Goliaths can "anchor", which digs them into the ground. In their anchored state they can act as a new HQ, constructing infantry units and additional buildings in a new area.
Two Condor aircraft can hook onto a Goliath, at which point it can be flown around the map!
The game now ends when you destroy the enemy's HQ building and any Goliaths they might have built.
There are also a couple of mutators relating to Goliaths:
The other v10 feature is agent battles. In musing about how multiplayer could work I had an idea: what if different LLMs could fight it out in the game?
Fun extra challenge: think about how we might make multiplayer available to coding agents. It would be neat if we could set up a battle between eg GPT-6 Sol and Claude Opus 5.5 where each model has access to a tool which gives them information about the game (presumably non-visual, but only the information they could see through fog of war etc) and lets them control their units etc [...]
Consult ~/dev/llm/docs and include notes in that file about how LLM could be used here via a new tools plugin
Opus 5.5 went to work on this, producing this AGENT-BATTLES.md proposal and then implementing and testing it. The feature also includes the ability to record and replay these battles - here's a replay of Claude Haiku 5.5 vs. GPT-6 Luna, and here's that same battle in a separate debug tool that shows the underlying prompt responses.

The prompt that drives agent battles can be seen here.
There are a few more replays like this linked in the README. I hope to turn this into a full league table at some point in the future.
This version exists purely because I glanced at my Claude Usage page one day and saw that I'd only used 75% of my weekly allowance and it was resetting in 45 minutes. I decided to see if I could get an extra Battle Drones feature from my remaining tokens, and picked "random map" as the target:
Design and implement a mechanism for generating a random map using any of the available biomes - it should be the size of the largest map and rivers and bridges and rocks and forest and scrap and crystals are all in play. Make them rotationally symmetric and use a seed to allow them to be selected or reused later. You have 45 minutes to build this! Be creative.
Here's the transcript, and an image Claude generated to show me its work:

I only just got this working, so I've not had much time to actively test it yet. The latest Battle Drones now supports multiplayer via two devices sat within microphone distance of each other!
This feature started out as my Chirp Pong experiment from last week. I pointed Claude Code at that working proof of concept:
Clone Simonw/tools from GitHub and look at recent branches for the example pong game that uses web microphone to implement multiplayer between two phones via audio signals
Build a version of that for battledrones
Opus built this Radio Probe tool to measure how much bandwidth we could get between two devices and, based on positive results from that, implemented a full audio modem system. I've tried it between laptops, iPhones and iPads so far and it seems to work really well!
Why use sound for this? Because I love static HTML that costs nothing to run, and I don't want to spin up a server somewhere and then stay responsible for keeping it operating for as long as anyone might want to play the game.
I know almost nothing about game development. This makes it a great opportunity to try out coding agents in a field where my existing software engineering experience has less impact on the results.
Games are also super low stakes. The worst that can happen is one of my silly game experiments suffers a bug.
This morning (via Hacker News) I found Steam Fans Are Begging for a No-AI Filter as Steam Next Fest Is Filled With Slop. I wouldn't personally dream of submitting Battle Drones to an event like this - it's still way too low effort to warrant consideration as a legitimate indie gaming project.
... but I can now see a path to vibe coded games like this being taken seriously. Battle Drones is fun, it looks good, it has innovative features (the multiplayer-over-audio thing is a first for an RTS as far as I can tell).
I'd love to see what someone with better taste than me and a driving passion to produce something truly exceptional could build!
A few other observations from this project:
Math.sin() and Math.cos() and friends with custom versions because different browsers (Chrome vs. Safari, for example) returned very slightly different numbers, desynchronizing the replay.llama.cpp fame).Earlier in this article I said:
Games are also super low stakes. The worst that can happen is one of my silly game experiments suffers a bug.
Then I tried playing the multiplayer version with Natalie... and the high pitched modem sounds gave her a nasty headache!
That's a pretty bad bug. I added a warning and was then inspired to build proper network multiplayer. I tried getting WebRTC to work but couldn't get a connection going between two of my own devices even on my own WiFi network, so I had Claude build a simple, stateless WebSockets relay server instead:
If I wanted to support multiplayer between two devices at a very low cost without storing any state on the server could I do that with a tiny asyncio web server running on the cheapest Fly instance?
Build the server and the fly.toml for deploying it, use Fly application name battledrones-relay - put that in a folder in the repo, include deploy instructions in the README in that folder
Here's the resulting server. Since this scales to zero and runs on a single Fly.io shared-cpu-1x instance it should cost me no more than $2.19/month - and that's if it stays hot and serving connections the whole time.
Battle Drones now supports online multiplayer. Click "Duel a friend online", then either share the resulting room URL via your messaging app of choice or have them snap a picture of the displayed QR Code.
I also added a feature where you can copy JSON of the match once it has ended and then feed that into the replay feature to rewatch your game.
I didn't expect to introduce online multiplayer this soon, but the headache bug felt like it warranted an urgent alternative.
Tags: game-design, projects, ai, generative-ai, llms, claude, vibe-coding, coding-agents, claude-code
Programming turned into one of the greatest jobs you could imagine. You got paid to work on tricky little logic puzzles. The trickier the puzzle, the more you got paid. But even pretty simple puzzles were worth a lot of money because regular people just couldn't do it! No, they needed us. They would give us a problem and we would solve it the way we wanted. We set the strategy, we made the timeline, we defined what was and was not possible.
If you're a programmer who thrives on building working systems and doesn't care too deeply about the problems solved along the way, LLMs are the gift that keeps on giving.
If directly solving those problems was a big part of your enjoyment, the loss is very real.
Via lobste.rs
Tags: programming, careers, ai, generative-ai, llms, coding-agents, deep-blue
Release: llm-tools-datasette 0.1.1
When I switched LLM over to httpx2 in LLM 0.33 I forget that this would break any plugins which used httpx without directly depending on it. llm-tools-datasette was one of those plugins, now fixed.
Release: llm-echo 0.5
I'm working towards a new LLM release, and testing PRs caused me to revisit the llm-echo debug plugin. This plugin provides a "model" which doesn't involve an LLM at all - it just repeats back the prompts that have been fed to it. The new release now updates the simulated token usage counts to take tool calls, system prompts, and reasoning tokens into account.
Example usage:
uvx --with llm-echo llm -m echo 'hi there' -o thinking 1 --usage
Outputs:
First I consider the prompt, then I decide what to say.
{
"prompt": "hi there",
"system": "",
"attachments": [],
"stream": true,
"previous": []
}
Token usage: 2 input, 24 output
Tags: llm
Inline rendering with document.currentScript
Lean Rada describes a neat trick that takes advantage of the document.currentScript property. You can use that to drop in a tiny inline<script> element that replaces itself when the page loads:
The year is <script>
document.currentScript.replaceWith(
new Date().getFullYear())</script>
If you define a shortcut function like this:
$=(...n)=>document.currentScript.replaceWith(...n)
You get a tiny template language:
The year is <script>$(new Date().getFullYear())</script>
Tags: javascript
Release: web-edit 0.1a2
web-edit (previously) is my tiny web app for browsing and editing files in a folder. I mainly built it for editing files on different machines via Tailscale.
I added a "copy to clipboard" option for both text and image data. I needed this because I was running pelican prompts on a laptop from my phone (here's DeepSeek 4.1 Flash 1017) and I wanted an easy way to copy the resulting logs into a Gist.
Tags: projects, pelican-riding-a-bicycle, deepseek
We think "did a human read the code?" is an imprecise proxy for "what could go wrong with this change, and which check—automated or human—is the right one to catch it?"
Asking that question also changed when review happens. Before, review was a gate at the end of the road: write the code, open a PR, wait for your colleague.
Now, review runs continuously, more like spellcheck while you write. Most changes have been reviewed and fixed by Claude at least once before a human is asked to look. This catches most routine mistakes, and saves team attention for higher-level questions and scrutiny.
— Addy Osmani, Morgan Westlee Lunt, and Qing Wang, How the Claude Code team does code review
Tags: anthropic, claude, ai, claude-code, llms, addy-osmani, coding-agents, generative-ai, agentic-engineering, code-review
Tool: Chirp Pong
Another game experiment - I wanted to see if it was feasible to have a two player game on two separate phones running in static HTML where the networking code uses chirps sent via the microphone. It seems to work!
Build a two player competitive pong like game where two players use their phones close to each other and the game state is sent via audio noises which the web microphone API can interpret - but add graphical and gameplay twists to make it a lot more fun and intertwine than pong
Claude Opus 5.5 Extra in Claude Code.
Tags: game-design, ai, generative-ai, llms, claude-code
Anthropic tells investors quarterly revenue up nearly 50% to $16.8bn ahead of IPO
The phrase "told investors" appears four times in this FT article, which reports on Anthropic's day of hosting investors on Wednesday. Lots of details in here from "people with knowledge of the matter".Key things I learned from the article:
This point about distillation is worth quoting in full (highlight mine):
The start-up has also clamped down on “distillation” — a controversial practice whereby rival AI labs train their models on the outputs of more advanced ones.
When rival companies “distil” their models from Anthropic’s models, that involves heavy usage and spending.
Anthropic told investors on Wednesday distillation accounted for 5 per cent to 7 per cent of revenue and that they had cut it back “materially” in the third quarter of the year, said four people with direct knowledge of the matter.
Napkin maths says that if distillation was 5% of their Q2 revenue (before they cut it back in Q3) then unnamed "other labs" spent over half a billion dollars distilling Anthropic's models in that quarter!
Also notable: Anthropic appear to no longer be leaning on "annualized run-rate revenue" (previously) in these communications to their investors.
Tags: ai, generative-ai, llms, anthropic
Tool: LaTeX renderer
Inspired by Paul Ford and Aboard Foundary's new web app Tiny Little Office, which provides a suite of web app content editors (a Word Processor, Outliner, Presentation Builder, Spreadsheet, Calculator, Drawing Tool, Diagram Maker, Animator, Calendar, and Trip Planner).
Tiny Little Office's signature trick is to store all of the document data in the #fragment section of the URL, so every document created using it becomes a bookmarkable and shareable link.
It also has an llms.txt file telling agents how to construct URLs that will render as documents. Claude used that file to generate this link to a deck that explains how the URL format works:

Tiny Little Office inspired me to have Claude Code (Opus 5.5 Extra) build a similar tool that works with LaTeX. Here's the sequence of prompts I used:
I want a tool where you can link to it with a fragment hash #code-here and it treats that code as LaTeX and renders it really effectively. It should also support a prefix which means the latex is compressed with a custom compression dictionary optimized for latex. Use the best available latex render library from a CDN (consider WebAssembly too). If loaded without a fragment hash show an editor you can paste latex into and then toggle to a "rendered" view. That rendered view should be bookmarkable. The #fragment view should let you switch to edit source too.
Since it was working in my tools repo I told it to take inspiration from the <iframe sandbox="..."> mechanism used by my existing SVG in Markdown tool as protection against XSS risks:
Safe from XSS? We could run in an iframe sandbox like we do on the SVG markdown render project
I had it copy the Gist/URL loading feature from that tool as well:
We should have an option to load latex from a URL (or gist) similar to the markdown SVG tool
Here's an example link. The tool uses Pako 2.1.0, MathJax 4.1.3, faster-latex 0.3.1, and DOMPurify 3.4.16.

Tags: latex, paul-ford, tools, urls, ai, generative-ai, llms
Tool: Tree Appreciator
Another game experiment with Claude. This one used the default Claude iPhone app (chat mode, not Claude Code mode), where I prompted Claude Opus 5.5 Max with:
Build a three js game called "Tree appreciator" - it shows you two algorithmically generated trees and the game mechanics is about appreciating the differences between them. Think hard about how to make sure it is both fun and beautiful.
Somewhat embarrassingly given my recent talk, I've found that telling Opus 5.5 "make sure it is fun" works uncomfortably well. In this case Claude crunched for 3 hours and 7 minutes before retuning a cosy little spot-the-difference game with music and animation and achievements that's quite compelling to play.

Tags: game-design, javascript, ai, generative-ai, llms, claude, vibe-coding, three-js
AI is mass decompiling games. That's both awesome and scary.
Indie game developer Popcar talks about the recent wave of AI-powered decompilation of existing games, enabling weird mashups between existing games, and producing a boom in game preservation projects to get old games working on new hardware (often in a browser using WebAssembly).I like how this piece captures both the positives and the negatives of this new development:
Most people already realized the scary part by now. If AI can decompile games and software, then the entire tech industry is about to explode. Anybody can decompile other software and use it any way they'd like, and nobody can stop them. Companies can steal from competitors. Your paid game or app can be open-sourced against your will. This isn't exclusive to old video games, we can apply this to any software. [...]
This is also a big win for preservation. Old games can be ported, modified, enhanced, and made much more easily accessible than before. [...[
With console makers going all in on digital and games becoming entirely unplayable due to servers shutting down, this is fantastic news. We could own software we bought regardless of what the company thinks.
Via Hacker News
Tags: computer-history, game-design, ai, webassembly, generative-ai, llms, ai-ethics, coding-agents
Redesigning source control at Anthropic
Interesting piece from Anthropic describing why and how they built their own custom alternative to Git, based on the dramatic increase in rate of changes to their code after the past six months.In May 2026, Anthropic averaged around 2,500 code changes merged per day; as of September, we merged over 30,000 per day.
They included a chart showing those changes. I had Claude modify their chart (code here) to add markers for the public releases of each of their models in 2026:

This shows public release dates, not the date when models became available for Anthropic's internal use. My guess is that the introduction of Fable/Mythos class models is a key factor in the increased coding velocity.
"Antique" is their new code review system. The source control system is called Scion, and sounds to me like a reinvention of centralized source control along the lines of Subversion.
(Update: Anthropic credit Google's Piper and Meta's Sapling as "prior art" - it looks like the core concept of "derived data" was heavily inspired by Mononoke, the server component of Sapling.)
They had some pretty extreme requirements:
The history of our main branch alone is almost 100 GB, and a compressed working copy is over 25 GB. We perform on the order of 25 million code checkouts per day for CI, before counting developer environments, agent sandboxes, and research jobs. Fetched naively, that would be over 600 PB of git traffic per day.
The new system was built by a team of seven people, and the migration from Git was completed in five months.
When asked on Hacker News about the lack of offline support, Scion engineer Nick G replied:
Since Claude is by far the heaviest user of Scion and is necessarily online, this just wasn't important to do.
As an aside, I've been trying adversarial review in my own projects recently, where you have a model try and find flaws (I often play Claude and GPT off against each other). This note from the article reflected my own experience with that:
Anthropic also makes extensive use of adversarial review, and, while this is incredibly effective in many ways, it can also be myopic, so skilled engineers needed to steer Claude away from over-engineering parts of the system in response to hypothetical concerns.
Via Hacker News
Tags: git, migrations, version-control, ai, generative-ai, llms, anthropic, agentic-engineering
Release: llm-gemini 0.35
I added support to llm-gemini for the new Gemini 4 Argon model, made available today via the Gemini API and for customers of their $100/month subscription plan.
Here are the low, medium and high pelicans. As expected, they are all excellent: Gemini has a track record of producing great SVGs, and are the only lab where I know their staff have invested in SVG specifically (and who have boasted about their pelicans before.)
Here's the "high" illustration, which cost me 17.166 cents:

The pricing is interesting. At launch, Argon is $2/million input and $10/million output - the same price as GPT-6 Sol, half the price of Claude Opus 5.5 and 1/5th the price of Claude Fable 5.1 and GPT-6 Astra.
But on December 1st Argon is set to double in price - so it will be the same price as Opus 5.5.
Prices like this aren't really comparable these days since what really matters is how many tokens a model takes to achieve a goal within an agentic harness.
One useful clue for that comes from Artificial Analysis, who publish the total cost to run their benchmark using each model. Argon is looking very good there - costing $2,407 to run the benchmark, putting it close to GLM-5.3 and significantly cheaper than OpenAI, Anthropic, and Meta's latest models.
When the price doubles it will still be a little cheaper than GPT-6 Astra.

(I used ChatGPT to edit that chart! The data is all correct, I checked - I needed to get that Gemini 4 Argon info box to display without overlapping the other numbers.)
Some bonus examples using Gemini 4 Argon: here's Generate an SVG of an armadillo in fishnet tights jaywalking on Mars, here's a Fabergé egg it created for me using Blender, and DeepMind staffer @fofrAI shared a video of a pelican riding a bike, using fourier epicycles. That's a fun new twist!
Tags: google, ai, generative-ai, llms, llm, gemini, llm-pricing, pelican-riding-a-bicycle, llm-release
This post accompanies my recent video on this topic.
Large Language Models (LLMs) - often called "AI" - are incredibly capable at some tasks and rather misapplied for others. One of the things I think they're strongest at is intent analysis and extraction, and this is a place where they can be genuinely useful as an improvent to the human-computer interface (rather than merely being slapped on top so someone can call it "AI").
However, there's a catch - you can't trust LLM output any more than you can trust the user on the other end of it. In fact, it's even worse; you can't trust the LLM more than the lowest trust of any input it has, including any web pages it fetches, its system prompt, and in theory some part of its training set.
...
I've just returned from a fourteen-day trip spent building, running and tearing down EMF, and as I sit on the plane writing this, as well as physical exhaustion, I am experiencing a whole host of emotions - happiness, wonder, determination, and also a strange sense of loss.
It is impossible to describe EMF to anyone who has not attended; while initially you might want to compare it to a normal festival, or something like Burning Man, it is fundamentally unlike almost any other event on Earth. The Dutch and German camps maybe come close, but even those have their own somewhat different vibe.
Over the course of my time heading up the logistics team over the last two weeks, I have done and seen such a wild variety of things that I'm never quite sure what was real. Among others, I watched a man play the US National Anthem on a tesla coil using a theremin; climbed up into a DJ booth in a solarpunk-themed Null Sector and pressed the "!! FIRE !!" button to light up the night sky with pillars of burning alcohol; exited the shower to hear HACK THE PLANET echo out over the field from the stage a quarter of a mile away; saw an inflatable t-rex driving a miniature Jurassic Park jeep, played games on a hillside using lasers, and refilled the duck flume several times (shortly after exclaiming "We have a duck flume?").
...
I've had many different development platforms over the years - from Notepad++ on library computers in my youth, to Gentoo and then Ubuntu installed on a series of carefully-chosen laptops with working drivers, and then for the last five years or so on Surface devices via the rather wonderful Windows Subsystem for Linux (WSL).
Of course, in the WSL era I am still just running Ubuntu, but inside the pseudo-VM that is the WSL subsystem of the Windows kernel. It's honestly pretty great, and I regularly joke that I'm using Windows as the GUI layer to develop on Linux.
Between the Steam Deck and WSL both being ascendant, maybe we finally got the Year Of Linux On The Desktop, just not as we expected.
...
TLDR: I am looking for new developers and maintainers for Takahē who want to help in exchange for my mentorship, or I'll have to sunset the project.
I find it important to have hobbies that aren't the same as what I do for work, which is why an increasing number of them don't involve computers at all - I'm very happy building new things on my camper van, making weird geographic art, or hiking around bits of the Rockies.
However, I still love programming and systems work, and I'll always have at least one project going on the side that involves it - nothing beats the size and complexity of what you can create in just a few hours of coding. That said, I have two basic rules for my programming side projects:
...
There are many questionable things about American car culture, but the road trip is not one of them. In a country as large and geographically varied as the USA, road travel is not just a necessity, but it can also be the attraction itself.
When I first moved to the USA, I had vague plans of doing some driving around and enjoying the sheer alien-ness of tiny towns in the middle of nowhere, or motels where you are somehow the only guest. Nine years in, I've done a decent amount of that, but these days my attention is more focused around the camper van that I spent half a year building.
I like to try and share a bit of the experience with those who want to see it, and as well as posting pictures and videos, I've always liked the idea of having a live map of where I am - even if it's just for friends and relatives who are interested in my progress.
...
I had taken two months off from developing Takahē in the run up to PyCon US; both due to pressures at work (and then, more recently, half the company being laid off around me), as well as not quite being sure what I wanted to build, exactly.
When I started the project, my main goal was to show that multi-domain support for a single ActivityPub server was possible; once I had achieved that relatively early on, I sort of fell down the default path of implementing a lightweight clone of Mastodon/Twitter.
While this was good in terms of developing out the features we needed, it always felt a bit like overhead I didn't really want; after all, if you're implementing the Mastodon API like we do, all the dedicated apps for viewing timelines and posting are always going to be better than what you ship with a server.
...
Today is the 0.7 release of Takahē, and things are really humming along now; this release marks the point where we've built enough moderation and community features to make me happy that I can open up takahe.social to registrations, albeit with a user number cap.
We've also launched a Patreon for Takahē, in a quest to make development and operation of Takahē more sustainable - and work towards start paying some people to help out with the less exciting work like triaging tickets, user support, and moderation of takahe.social. If you want to volunteer directly, that's covered in our Contributing docs.
There's some interesting technical topics I want to dig into today, though - it's been a little while since my last blog post and ActivityPub and friends continue to surprise.
...
Yesterday I pushed out the 0.5.0 release of Takahē, and while there's plenty left to do, this release is somewhat of a milestone in its own right, as it essentially marks the point where I've implemented enough of ActivityPub to shift focus.
With the implementation of image posting in this release, there are now only a few things left at a protocol level that I know I'm missing:
Custom emoji (these are custom per-server and a mapping of name-to-image comes with each post)
...
So, after a few weeks of development, I'm happy enough with the state of Takahē to issue its first official release - which I've chosen to number 0.3.0, because version numbers are made up and I can start where I want.
We're only releasing Docker images right now in order to try and keep the support burden down (it removes having to worry about people's OS versions and library environments), so you can find it on Docker Hub.

...
Twitter is - was - such a unique place. Somewhere where you can have the President
of the United States coexist with teenagers writing fan fiction; where
celebrities give personal insights into their lives while government
departments post memes about public safety;
the place that gave us @Horse_ebooks and @dril.
The "Fediverse", with Mastodon at its helm, is not this. It doesn't seem to want to be, and I honestly think that's fine - as many thinkpieces have recently said, the age of global social media might just be over. And given the effect it's had on the world, maybe that's alright after all.
But there is still a void to fill, and as someone who enjoyed Twitter most at its "medium" size, I think the ActivityPub ecosystem is well-placed to grow into such a space. But first, I think there's some important things we have to discuss about it.
...
By Jeff Atwood
Yesterday, I received this email as a response to You Can't Vibe Code Love. It's such a remarkable and powerful statement that I asked permission to share it here, in its entirety, with personal information redacted:
Hey Jeff,
Hope you and your family are doing well.
By Jeff Atwood
About a year ago, I was offered a presentation slot at the WeAreDevelopers World Congress in Berlin. I rarely take speaking engagements, especially international ones, but this one arrived at just the right time, the right place, and with the right person – I said yes, on the contingency that
By Jeff Atwood
About 3 weeks ago, Leo Laporte and I recorded the first episode of what will be a new monthly show on the TWiT network. Naming things is hard, and we almost voted on the name, like we did for Stack Overflow, but we quickly landed on Off By One with
By Jeff Atwood
It's been one of those months, and by that, I mean one of the 663 months since I was born. This won't be a long post, because I only have two things to say. First, I'm really glad we re-ordered the GMI (Guaranteed
By Jeff Atwood
It's been a year since I invited Americans to join us in a pledge to Share the American Dream:
1. Support organizations you feel are effectively helping those most in need across America right now.
2. Within the next five years, also contribute public dedications
By Jeff Atwood
The dream is incomplete until we share it with our fellow Americans.By Jeff Atwood
A few months ago I wrote about what it means to stay gold — to hold on to the best parts of ourselves, our communities, and the American Dream itself. But staying gold isn’t passive. It takes work. It takes action. It takes hard conversations that ask
By Jeff Atwood
We are at an unprecedented point in American history, and I'm concerned we may lose sight of the American Dream.By Jeff Atwood
With a 13 billion year head start on evolution, why haven’t any other forms of life in the universe contacted us by now?

(Arrival is a fantastic movie. Watch it, but don’t stop there – read the Story of Your Life novella it was based on
By Jeff Atwood
If you haven’t been able to keep up with my blistering pace of one blog post per year, I don’t blame you. There’s a lot going on right now. It’s a busy time. But let’s pause and take a moment
By Jeff Atwood
It’s my honor to announce that John Carmack and I have initiated a friendly bet of $10,000* to the 501(c)(3) charity of the winner’s choice:
By January 1st, 2030, completely autonomous self-driving cars meeting SAE J3016 level 5 will be commercially
By Jeff Atwood
In a way, these two books are responsible for my entire professional career.

With early computers, you didn’t boot up to a fancy schmancy desktop, or a screen full of apps you could easily poke and prod with your finger. No, those computers booted up to the command
By Jeff Atwood
Hard to believe that I’ve had the same PC case since 2011, and my last serious upgrade was in 2015. I guess that’s yet another sign that the PC is over, because PC upgrades have gotten really boring. It took 5 years for me to muster
By Jeff Atwood
In an electric car, the (enormous) battery is a major part of the price. If electric car prices are decreasing, battery costs must be decreasing, because it’s not like the cost of fabricating rubber, aluminum, glass, and steel into car shapes can decline that much,
By Jeff Atwood
I’ve never thought of myself as a “car person.” The last new car I bought (and in fact, now that I think about it, the first new car I ever bought) was the quirky 1998 Ford Contour SVT. Since then, we bought a
By [email protected] (Jon North)
I have written before about ageing. For the moment - long may it continue - Mary and I are both reasonably capable, but we find ourselves among friends and family who have more serious problems of health, mobility and wellbeing. In more than one case close to us one of a couple has started to become confused to the distress of both partners a diagnosis of dementia is a broad brush for a multitude of distressing conditions. We are all too aware both of the presures of old age creeping on and feel incredibly lucky thus far to have escaped serious illness, so we feel all the more glad to have avoided major physical or mental disabilities. Above all we are constantly aware and think with love of our various friends and family members who have suffered or (like my younger brother Tom) are sadly no longer with us in body.
On top of all this, increasing difficulties with mobility mean that we risk losing touch even friends fairly close by here in France. For many years we had frequent meetings with our friends Pierre and Charles who live in the hills north west of here, in a small and beautiful old château, and have a second house in Genoa. We have stayed with them in both places, and were at their wedding in their French mairie a few years ago, and we played trio sonatas with them often. Communication has become more and more difficult for them, and we miss them as we miss many other friends
My mind often turns to words, and links between English and French. I woke up in the night recently quite worried by the links between spiders and arrest - the French for spider araingnée seems close to an English root/synonym for arrest - arraign - but the connection is tenuous. It took me awhile to get this out of my sleepy head and return to sleep! Anyway, this mild autumn there are plenty of toiles d'arraignée (spiders' webs) around our house to remind us of the complexities of language - tangled webs we weave whether or not we are practising to deceive!
As always we have been reading a lot, not just current afairs which often make us feel gloomy, but revisiting favourite fictional series, including two by Alexander McCall Smith, the Botswana stories of Mma Ramotswe and those of the Scottish philosopher Isabel Dalhousie. AMS is an amazingly prolific author quite apart from his legal texts (he helped write the legal framework for the newly independent Botswana) and the quality never dips across several quite different sets of novels. We have also rered the Montalbano novels of Antonio Camilleri, whose stories of refugees reaching Sicily in small boats are also amazingly relevant in these Meloni times. Both authors relish complex detective plots; the translator into English of the Camilleri books Stephen Sartarelli is also inccredibly talented.
| our weekly bilingual conversation groups continue and help us stay in touch |
Recently we also revisited the tv seris of Yes minister and Yes Prime Minister, which remain quite relevant and very amusing in these topsy turvy times. We need the light relief. We look back with pride and sadness on the talented lives of actors like Paul Eddington and Nigel Hawthorne
Out here in the European world so sadlly abandoned by Johnson et al we rely on good internet communication, and that is ever more difficult. I like reading the Guardian, and have had a subscription for around 20 years. Of course costs go up, but in addition the subscription conditions alter and it is not always easy to simply pay the extra. new operating systems arrive and subs are linked to them, so in the worst case you have to buy a new tablet. Or, instead of just asking for more on the next renewal you get a flash message to say 'please contribute to gain unrestricted access' - without ads - when you thought you already had it. The same applies to The Week which now demands a new subscription even tough it says our payments are up to date - another out-of-date operating system on the iPad no doubt. Of course, all the time age creeps on, so we oldies have to keep up with ever more whizzy systems. No easy answers, I guess.
By Jon North ([email protected])
| Welcome new discovery of La Clausade, a new domaine quite near us in, Mauguio, producing wines from little-known grape varieties (see below) |
| Fires in the Corbièeres area were all too frequent this summer, controlled more or less by the planes we heard often passing over our house carrying water from the seaside étangs (not my photos) |
| The Pic Saint Loup, backdrop to the Chemin des Rêves vineyard |
By [email protected] (Jon North)
| Not my phhoto, but that of someone patent who waited patientlyfor the storm over the Pic Saint Loup |
By [email protected] (Jon North)
| last month's red high risk map in the Aude - Lunel is on the far right, still orange and therefore still at risk a few days ago. The Aude area is apparently still smouldering underground |
By [email protected] (Jon North)
From time to time - I should probably do this more often to improve my language skills - I translate articles in French media. Here's one from this week.
Translation of article in Midi Libre 13/8/25 - interview with Stéphanie Latte Abdallah, historian and anthropologist, by Arnaud Boucomont Now living in the Cevennes, previously in Jerusalem, she has a harsh view of the strategy pursued in Gaza by the Netenyahu government, which requires an active response.
Do you think total occupation of Gaza by the Israeli army is feasible?
That would be complicated, although it has long been its public aim, staying in and recolonising Gaza. We've heard that for ages; the commander-in-chief of the army has said that clearly to politicians but the message has not been heard. It would take a huge number of men in the longer term, and the army is relatively fatigued with many reservists refusing to serve there. The Israeli army is faced by an ongoing guerilla war by Hamas. Gaza is pretty well destroyed but Hamas' capacity to act is not completely exhausted.
What's your view of the attitude of the international community, France in particular, over the past two years?
The recognition of the Palestinian state is long overdue, but there is an interest in isolating the current Israeli government over its refusal to recognise a Palestinian state. If Britain joins France as it has promised then the USA will be the only state in the UN Security Council not to recognise it. In the proposals publicised so farthere are no means of enforcing the proposals. There should be sanctions, and suspension of the accord of co-operation between the EU and Israel. But that would be to act without acknowledging the current genocide, without naming it as such. Because if it were named the countries involved could be even seen as complicit in the genocide because of their inaction.
What about the growing famine in Gaza?
There will be severe consequences for children, older people and those with chronic illnesses. In the long term I call that 'futuricide', resulting in killing as many people as possible. More than 61,000 have died directly as a result, but the lack of healthcare, chronic sickness, famine, land poisoned by armaments, pollution, lack of refuse collection and of cleaning services brings the total up to around 200,000 people.
How would you sum up the policy of Netenyahu over the past two years?
He was always against a Palestinian state. There is a fragile coalition between supremacist and pro-colonisation ministers and deputies and those in favour of annexation of the West Bank and the re-colonisation of Gaza. They claim to be following the biblical principles. Netenyahu himself is not especially religious but uses this language to build up support for his project. He has stayed in power by enlisting the most extremist members of his government who guarantee his position. He hopes to keep tension up by occupying as much territory as possible. He tries to avoid political scrutiny.
How do you view the religious aspects of the conflict?
On the Israeli side we can see the co-option of a religious-sounding language through the idea of a battle with Amalek, the old testament enemy of Israel, each side trying to destroy the other. In the Bible it was seen as necessary to destroy Amalek completely. In a March 2025 study by Penn State University, 82% of Israelis were in favour of moving all Palestinians out of Gaza.
In the other camp, obviously there are the islamist groups like Hamas and jihadists who fight in Gaza using islamist language. There are also other groups which are mainly secular. Within the Palestinian population religious motives are not so much to the fore.
The typical Palestinian who finds her/himself being bombed, losing children, how can that do other than generate hate or antisemitism?
Speculating on such emotions takes us beyond the realm of rational analysis But Palestinians distinguish clearly between Israeli policy and jews. the question of antisemitism as seen from France does not arise in the same way in Israel or Palestine.
So how do you see this conflict being played out in France?
Generally we've seen a gradual change in public perception over the past two years. People were quite virulent in their views to start with, not wanting to see what was actually happening, that the Israeli government really wanted to destroy Gaza, but things are changing. Better late than never. For France, which has long supported the State of Israel, it's complicated. It is difficult to tell yourself that Israeli governments are committing genocide when that very state grew out of genocide suffered by Jewish people.
What about the strategy of Hamas?
At the time of the 7 October outrage Hamas' objective was to make sure Palestine was not forgotten in the signing of the Accords of Abraham which foresaw making peace without taking account of the Palestinian question. They also wanted to avoid the annexation of the West Bank and demonstrations in front of mosques.
They could have reacted differently!
From what they've said, some things got away from them. They do not accept that they intended to target civilians. They claimed that other groups had infiltrated theirs. But there were certainly abuses and war crimes by several groups, of course including Hamas.
All the same, the strategy involved murders and taking hostages…
Hostages certainly. They wanted to exchange them for Palestinian prisoners, using them as a kind of exchange currency to protect themselves. They ahd also decided to push the Israeli army to the Gaza border to break the siege. They see themselves as being involved in a war of resistance. I'm just saying how they see things - I'm not saying I agree with them.
By [email protected] (Jon North)
The men's Tour finished for this year in spectacular fashion. Wout van Aert won on the Champs Elysées with the overall Tour winner Tadej Pogačar a few seconds behind. The novelty this year was the addition of three ascents of Montmartre to the Sacré Coeur to the usual flat-out sprint round and round the Champs Elysées. To my mind the change was excellent, adding excitement on the last day. Wout deserved his final accolade - he had planned the attack on the final ascent - and seeing the final circuits happening on the cobbles, in the rain, was dramatic and without mishap.
Amusingly Van Aert had earlier openly criticised the change in the final day, saying it was too dangerous. He had the last laugh (or perhaps it was a cunning double bluff), and I'm fairly certain the new routine will stay - better than the old procesion with added sprinters (sorrry Cav). I know there are those of my friends who find our interest in sport tedious,, but there we are. It also applies to cricket (which we sadly can no longer watch) - in fact at least one friend I can think of can stand neither cricket nor cycling. Sorry again! But the women's race proved quite absorbing and came up with several top French contenders, which guarantees a French tv exposure. Although women's cycling is advancing by leaps and bounds, not yet a level playing field.
| slower creatures |
A friend has just recalled a time in our lives when he and I lost touch. Happly, we both feel, despite often living in different places, countries even, we have restored and stayed in contact since. And there are ever more gaps in our circle as we age. But we are so glad to remember those still with us even if we can seldom meet face to face. This blog serves to keep some in contact, and despite its notorious replutation Facebook is still for us a valuable way of keeping in touch with old friends and newer ones. The warmth of memories fills a lot of gaps when we can no longer travel so much.
The non-exhaustive list of people no longer physically with us include friends and Friends we made in France. In the small Quaker community of Congénies were Dennis Tomlin and Brian Painter; others important in our lives here included Marcel and Michèle Bombart and neighbours in Lunel Michel Cazanave and Mme Picard. Quakers back in the UK were (among many others) Polly Tatum (an honorary Friend in my mind) and her husband Arlo, Arthur White, Geoffrey Bowes, Ted Milligan and Malcolm Thomas. Apart from my parents and Mary's mum, family members now no longer with us include my brother Tom, my aunt Ida (who travelled with us memorably more than once in France) and Sam's father-in-law Taeke Oosterwoud.
![]() |
| My ex-boss Ted Milligan centre stage at our wedding reception in 1978 A complete album of our wedding photos is here |
We have just re-established our car insurance. The car is a lifeline now mainly for local travel, but above all for two things - for Mary to enjoy her cello outings, and for both of us to go to twice-weekly language groups which meet in various people's homes (including ours). The summer has put a pause to all that, and I can well understand that she does not want to practise until the hot weather has passed. Anyway, the car insurance would have lapsed next January for silly bureaucratic reasons, and we have to pay more (naturally!) for the replacement, but it is worth it.
Like another friend who has been sifting and disposing of huge piles of old papers, indeed like everyone until a few years ago, we have a life that used to be defined by files of papers but is now rapidly being encrypted in bits and bytes on electronic devices. We have just re-sorted the paper files that still line our office, and finally tracked down various folders we thought lost. And of course, 85% of the paper is no longer useful; the other 15% is probably useful but we may never get round to sorting it out. So now we are continuing the endless process of chucking out old files into recycling - once the office is more or less up to date I have started to excavate the roof where layers of dust need to be tackled too. But it is frightening to find how soon things that I labelled clearly as current are just more unwanted archives. As for the electronic things, the identifiers that work are fine, but once a chanin is broken oneis reduced to scurring between devices to confirm that I am me and getting in a fog of confusion when a password no longer works.
Outside the August sunshine is just beautiful and the evening skies often breathtaking. There have to be ways of setting aside the humdrum, confusing processes of admin, all the more when the old expedient of going for a walk (which Mary still enjoys) is slower and more laborious.
Reading still occupies a lot of our time. Mary is a regular reader of books in French, often borrowed from the local library which has been one of several useful developments in our neighbourhood. They sometimes have interesting short afternoon lectures. I read a lot though mostly in English. We are both re-reading series of novels we've enjoyed and enjoy still - Mary is nearly up-to-date with the Bertie books by Alexander McCall Smith, and I am well into the Montalbano detective books by Andrea Camilleri, beautifully translated by Stephen Sartarelli. We shall revisit the tv series over the winter I expect. It is good to read paper books at least some of the time, even if some are far too heavy and cumbersome to take to bed and the Kindle is a welcome and more flexible alternative.
The hot weather is back this month. There have been several severe fires in the countryside east and west of us, and the sound of the Canadair planes passing over us has been more frequent in July - they scoop water up from the étangs near the coast then drop it on the fires in the garrigue north of us. Not too near where we live, but very worrying all the same.
By [email protected] (Jon North)
![]() |
| We have been scanning our wedding pics from 1978 |
By [email protected] (Jon North)
By [email protected] (Jon North)
| These 2 are well in evidence even at this early stage of the race |
By [email protected] (Jon North)
It has been over 40° in the afternoon these last few days. A British friend who has lived in the tropics sent some useful tips - "In the middle of the night...open up all windows and even doors if it is safe security wise to do so to get the coolest air of the day circulating throughout your property. That should reduce internal heat to whatever the lowest overnight temperature was. Then when things start to rise... close all windows and doors and draw all curtains. And keep them that way if you can throughout the day. Inside should then stay much cooler than outside. The mistake folks make here in UK is that the hotter it gets the more they open windows during the day 'to get a breeze'. Well that breeze is as hot as outside temperature so it quickly brings inside up to outside." Languedoc temps are less trying before mid-morning, and here we don't have curtains, but the principles stand. I would add, from my O level physics, that keeping cool can be aided bynot drying oneself too thoroughly after a shower - 'evaporation causes cooling'. The fans we bought last week also help.
There is now a red heat warning across part of France. We shall not be going to our French groups this Tuesday - some people still want to meet, but driving to places would be a problem, and driving back more so for us and others who are approaching their 80s. Having airconn in a house is one thing, but going back to a roasting car quite another.
![]() |
| our language groups have shrunk a lot in the summer heat, but Danielle stilll helps those who remain! |
One sad background to our afternoons is the sound of Canadair planes flying over on the way to fires to dump bellyfuls of water. It hppens every dry summer, but I'm guessing this year will be the worst yet. Mary read of one fire started someone towingn a lighted barbecue which shed lethal sparks along the roadside.
The mayor of Lunel, Pierre Soujol, has died. Very sad news - he seems to have done a lot of good things for the town.
Mary has just set off down the garden to feed the 2 larger tortoises. Their appetite for lettuce is undiminished.
I am collecting examples of autocorrect misfires and silly mistypes:
![]() |
| our son and daughter-in-law have been in Brittany but are unlikely to have encountered such onion-sellers. |
| Our newly surfaced road - not sadly our own cul-de sac de la Bréchette, which is long-neglected |
By [email protected] (Jon North)
Following my previous short post on cycling, I've been thinking about my own long association with bikes. I learnt to ride before the age of 10 on the large lawn of a friend in Chesham. Soon after I had my first crash, setting out confidently down the steep hill from our gate and failing to judge the turn into the road just opposite. Collision with curb, probably a grazed knee but it did not stop me for long. Soon after I was going for rides with my dad, one of the few things we did together; we both had sit-up-and-beg bikes with rod brakes.
In my teens both at home and at boarding school I had a jazzy yellow 'racing' bike with 5-speed dérailleur (we pronounced it di-raill-ear or something - I only more recently learnt the French signification). My main memory of those days is of the several journeys I made to and from boarding school to home, from Saffron Walden (via Royston, Baldock and a stop for refreshment around Hitchin), around 60 miles (83 km in new money). For several years in my teens I went for Sunday afternoon bike rides around the Essex coutnryside - Thaxted, Audley End and other local places. But those rides between home and school were the longest I tried - it amazes me now that I could do this. But I enjoyed my cycling days until only a few years ago when I fell off rather more than I liked, and sold my nice 10 speed touring bike to a local contact in Lunel. I do still miss it, and am tempted to buy a 3-wheeler with some motor assistance - we'll see once complex analysis of knee arthritis has ground on a bit. I had an x-ray in a hi-tech scanner tunnel, complete with an array of whirrs and growls, in a virtually deserted outpatients clinic yesterday - a far cry from the old simple x-rays I had for my first knee replacement about 10 years ago.
The French love of cycling racingis largely if not exclusively linked to the participation of French riders who very rarely win whole races (the Criterium is over 8 days, the Tour covers 3 weeks), but who quite frequently win stages in the classics. This summer sees the retirement of one icon of French cycling, Romain Bardet as another young hopeful, Paul Seixas edges into the top ten. Bardet had a guard of honour of upended bikes on his final appearance in the Dauphiné. We are always pleased and amused to see and hear Thomas Voeckler, a previous French legend, ex-yellow jersey in the Tour, now commentating from the back of an accompanying motorbike.
The dubious example of Lance Armstrong, bang to rights for taking drugs after many years dominating the Tour, is in everyone's minds. (He is now being rehabilitated, in a way, by people who cite his help for others recovering from drug misuse. I'm not sure about that). Seeing Pogačar winning often raises questions in some minds despite all the efforts made these days to test for doping. Interestingly there is relatively little suspicion expressed in the French press about him - I prefer to go by the usual fair view 'innocent till proved guilty'. But there is also the question of doping bikes - that is, hidden motor assistance in racing bikes. In our everyday lives we have friends who use electrically assisted pedal bikes, but the motors to be any use have to be more bulky than would work or be invisible on a pared down racing bike. In any case, among competitors to win at the highest level, surely everyone must be doing it if anyone is.
One thing that always strikes me is the lack of protection cyclists have from injury - they are skinny beings, and can use virtually no padding, only head protection, yet you often see them fall, get up with horrible looking scrapes and get back on to try and lose as little time as possble.
More interesting is the question of how competition pans out in the top ehelons of the international cycling world. When Pogačar and Vingegaard are in a stage race, few others stand much chance; when they are not involved Roglič (really from the previous generation of Slovenian cyclists, and having taken up cycling after a skiing accident) comes to the fore, and in less prestigious races other cyclists emerge from the péloton to win - and so on all the way down the pecking order.
By [email protected] (Jon North)
A short post this week. The cycling season is with us (for us two, strictly as tele-spectators) - there have already been major internationsl races, but the Criterium du Dauphiné is the first of the year in France where the major contenders for the Tour de France all show up. This week the weather is getting warmer, and it's dry, so the scenery is a real pleasure in the early summer sunshine. Geographically the Dauphiné is the mountainous region around our old twin area, the Diois, but the race spreads its route a long way to the north. By the fourth day as I write it has more or less reached Valence passing through the rolling countryside of central France. Mid-week we'll have the time trial, and then three tough mountain stages to finish thte week
Having started talking about cyclists like Pogačar I needed a č, but the special ALT+ 0269 code I tried did not work (it is simple on the iPad) so I had to cut and paste it from a website! The petty trials of modern life!
By [email protected] (Jon North)
| The wonderful flowers of the ornamental grenadier (pomegranate) whose hedge blooms year on year |
I have recently sent in our French tax return for 2024 (calendar years here which have to be jiggled into line with British April to March financial years, since we receive our pensions from the UK. I am always nervous about this, but generally there's no need provided the formulae on my spreadsheet are entered correctly, but one by-product of the cross-checking I always do to be sure is that year by year the gap between Mary's income and mine shrinks - the bulk of my pension comes from a fixed-sum pot, while Mary and I both have British OAPs which are triple-locked so go up by more than the rate of inflation. It would take a long while for her income to approach mine, but it is getting nearer every year.
I am writing having just been out successfully to buy fans which we hope will moderate the heat to come. For the last several years we have been too late, none left in shops, but this year we found what we wanted. Many others we know have air conditioned houses, but we have decided not to go down that road - like swimming pools which many friends have, we realise that they are expensive and troublesome luxuries - now, with my legs being as they are, even geting out of a pool would be tricky and I have taken to having shower rather than even an occasional bath.
| a nearly deserted town centre after a visit to the local museum |
Even more than the excesses of Trump, my mind has been occupied with the excesses of the Israeli government. More than ever, I find it impossible to relate its obscene actions in any way to the presence or absence of antisemitism, and I know many Jewish friends feel the same. I think the world is anaesthetising itself to destroying human life, easier and easier as the technology makes the distance between atacker and attacked ever greater, and the chances of innocent loss of life likewise.
As we approached a beautiful sunny weekend I was stranded at home while M is equally left in the lurch, waiting for the breakdown after our car locked her out. We have had a succession of mishaps with the car (two punctures, then this) which makes us all too aware how dependent we are on the car. It is only a question of waiting, but as we both suffer from age and infirmity I am seriously thinking of a second vehicle. This is very unecological but we could afford it. In the end it turned out some tiny ball-bearings had got trapped in the ignition keyhole.
On top of that, the main road to our house is to be closed for resurfacing for the next fortnight. There are ways round it, and the whole hting has been well signalled, but with our luck the visitors we expect next week may have problems.
Two bits of cheer this weekend - Simon Yates did an amazing ride uphill on a gravel track to overtake the then leader of the Giro d'Italia and effectively winning the multi-stage race. And today thanks to the BBC still available here we can hear one of our favourite pianists Angela Hewitt interviewed.
| poppy time here - usually en masse in fields, but this one outside our front gate! |
By [email protected] (Jon North)
A headline in the local paper (mid-May) says there is a shrinking number of readers of books in France - according to the survey organisation Ipsos 63% of French people read fewer than 5 books a year. In this house we do our best to keep the numbers up, but although Mary is a loyal visitor to our local library my reading is almost all on electronic devices and I'm not sure how that is included in the statistics. Whatever, we in this house read a lot - a silent house more often means we are reading than absent. We are, as they say, big readers, I mainly in English, Mary now mainly in French. I do admire this, but I would be too slow if I tried, always stoppping to look up words. But we read in French in a group twice a week, with native French support, and are currently working through a history of Algeria and a translation of Alan Bennett's The lady in the van, very different and both very enjoyable though the history of the French in Algeria is much less cheerful.
My diary, and from time to time this blog, have frequently focused on my leg pain - three overlapping phenomena, arthritis, sciatica and (oh dear) gout as well as general aches and pains that the French lump together as courbatures. Gout is, of course, a result of drinking alcohol. Well, it is avoidable but I ask myself how being a wine-lover is compatible with avoiding it. So, moderation in all things, but it shows on my frequent blood tests so my doctor is 'aware' - he often mentions the uric acid but seldom directly talks about drinking less. However, I have been presecribed a kind of trolley I can walk with and rest on if necessary. Unfortunately so far it is not much good for me - I prefer to continue with my stick.
This had long since ceased to surprise me, since French culture and wine are intimately bound up with wine my present doctor refers to the subject obliquely via the annual reports from the blood lab - our previous doctor, now retired, did not mention it at all, adhering probably to an old French culture in which drinking wine was more commonplace. In the UK medics often talk about drinking too much. Someone gave me a book (in French so I am only slowly reading it) about alcohol at the time of the French Revolution, before which it was apparently only consumed by people of a certain (upper) class. So not at all commonplace until the 19th century, and now 200 years later, the press is full of reports of declining wine consumption.
My leg pain has intensified, and tests and treatments are on the horizon. I have become a very slow walker although I can still manage, and luckily I can still drive so things will be easier once I can pick my way through the French bureaucracy to get preferential parking. Most of the treatment I use at present is in the shape of pills relieveing pain, but a treatment I use daily now which is non-chemical is TENS - the French use the English phrase, abbreviated from Transcutaneous Electrical Nerve Stimulation
We have just revisited a restaurant, La Maison Soubeiran in Lunel, which is becoming one of our favourite places to eat - a small family business, friendly with beautiful food. The walls are decorated with photos of Jane Birkin and Serge Gainsbourg.Although this post is mostly about current things, I'll add one other thing. Since we visited Armenia a few year ago we have been interested in the country, so I picked this up from the European Correspondent newsletter this month and thought it worth repeating:
How Armenia is becoming the region's only democracy – sort of (by Nerses Hovsepyan)
In 2018, Armenians pulled off something rare: a peaceful overthrow of a corrupt government. What started as street protests led by ordinary citizens grew into a movement that toppled Serzh Sargsyan's long-standing regime. Since then, the country has taken small but important steps toward democracy. Elections aren't guaranteed to favour the ruling party, opposition leaders aren't silenced, and media outlets have more freedom than ever before. This might not seem remarkable to the average European, but in a region where autocratic rule has been the norm for decades, Armenia's gradual shift is a noteworthy exception.
In Azerbaijan, elections are largely a formality, and Iran, well, is Iran. In Türkiye, the government regularly throws opposition politicians into prison, along with journalists and protesters. Meanwhile, Georgia, once the democratic leader of the region, has been sliding toward authoritarianism (which you already know if you've been reading us). To illustrate this: Georgia's press freedom ranking fell from 60th to 103rd since 2013, while Armenia's improved from 102nd to 50th in the same period. Before 2018, Armenia appeared locked into an authoritarian trajectory similar to its neighbours, with Russia influencing every aspect of its economy and politics: Moscow controlled 95% of its foreign trade, all major infrastructure, and even its border security.
The Velvet Revolution didn't just topple a corrupt government; it began unravelling this decades-old dependence. Today, while still formally allied with Russia through the CSTO, Armenia has frozen its participation in the bloc and is actively but carefully pursuing an EU membership application – a geopolitical reorientation unimaginable before 2018. The largely peaceful 2018 Revolution began because Armenians were fed up with a corrupt regime that had hijacked Armenia's democratic promise while tightening Moscow's grip on the country. It was led by Nikol Pashinyan, who has been prime minister ever since, and was dubbed 'velvet' in reference to the nonviolent 1989 Czechoslovak Velvet Revolution.
Our one trip to Armenia and Georgia was several years ago now and a plan to revisit with friends was stymied by Covid. Now Mary and I have more or less decided not to fly again (our friends still travel a lot: they like others we know here are originally from other parts of the world and so have diverse reasons for wanting, needing to fly).Seven years after the revolution's euphoric promise, Armenia's democracy remains a work in progress. Yes, Armenia has seen peaceful power transfers, and opposition parties can now operate more freely. But the country still faces serious challenges. The judicial system is slow to reform and remains deeply mistrusted. Media outlets, while less restricted, are still influenced by political and business interests. LGBT+ rights remain a thorny issue – queer events are frequently canceled under threats, and hate crimes often go unpunished. For Armenia's fragile democracy to survive and grow, it needs sustained support – financial, diplomatic, and, given its security challenges, military – especially from the European Union. With authoritarianism tightening its grip across the region, from Azerbaijan's iron-fisted rule to Georgia's democratic backsliding, the threat of Armenia slipping backwards is all too real.
By [email protected] (Jon North)
| Another crop of lemons on the way |