I get a lot out of Alex Smith’s newsletters about strategy, and love the book “No Bullsh*t Strategy”. Today he put one out which resonated more than most, so much so, I wanted to adapt it here, for our industry…
Dogfooding is often talked about as a best practice, but I don't often see the results of such activities. For all new features introduced on Report URI, we are always the first to try them out and see how they work. In this post, we'll look
Recently, Virgin was fined £23.8m by Ofcom for failing its duties to vulnerable consumers in migrating to digital landlines. This is a topic relatively close to my heart, having been pointing out the risks to various personnel in the regulator…
Oxford's roads have been relatively unchanged over the last fifty five years - the last significant main road build was Marston Ferry Rd, opened in 1971 and there has been almost no attempt at road-widening. The result is that a fairly simple street classification is possible: woonerf/mews, side-streets, main roads, and strategic highways. The first […]
Keycloak has from day one supported identity brokering, allowing users to authenticate via an
external OpenID Connect or SAML 2.0 identity provider. With federated client authentication it is
now possible to authenticate OpenID Connect clients through external identity providers as well.
Depending on the environment the clients is running in this can eliminate the need for managing
secrets for clients altogether.
A number of cloud vendors for example support injecting tokens automatically for workloads,
Kubernetes have support for service accounts, and last but not least there is SPIFFE that can be
leveraged in most environments.
How does federated client authentication work?
The first step to setting up federated client authentication is to define a trust relationship
between Keycloak and the external identity providers. This is done by creating a new identity
provider in the realm.
Keycloak currently has three types of identity providers that support federated client authentication:
OpenID Connect
SPIFFE
Kubernetes
Clients can retrieve a token from the external identity providers that the client can then use to authenticate with
Keycloak. In many cases clients can retrieve these tokens automatically through workload identity capabilities enabled
for particular environments.
Let’s look at an example decoded JWT that can be used to authenticate a client:
The most relevant claims are iss, aud and sub. Keycloak uses the iss claim to identity the external party
that issued the token as well as retrieving the external parties signing keys to verify the token.
The aud claim is to make sure the token was issued to be used by Keycloak and not other applications. It is important
that this contains a single audience that uniquely identifies Keycloak as the target audience, as leaking this token
to other parties can then allow them to authenticate as the client.
Finally, the sub claim is used to lookup the local client associated with this external identifier. When configuring
a client in Keycloak it will have a local client id, as well as a reference to the external client id.
Once the client has obtained the token it can now send the token in the client_assertion parameter
instead of using client_id and client_secret parameters.
When Keycloak receives the token it verifies the signature using the registered identity providers
public keys and looks-up the associated client.
OpenID Connect
Leverage any identity provider supporting OpenID Connect for federated client authentication
as long as it is able to issue signed json-web tokens with the following claims:
iss - Must uniquely identify the external identity provider.
aud - Must be set to the Keycloak Realm issuer URL; alternatively there’s an option to allow the ID of the client in the external identity provider.
sub - Must uniquely identify the client in the external identity provider.
exp - Must contain a future time when the token expires.
jti - May contain a unique identifier for the token, which is used by Keycloak to prevent re-use of tokens.
For more details on how to configure an OpenID Connect identity provider check out the Keycloak Documentation.
SPIFFE
Leverage any identity provider supporting SPIFFE APIs for federated client authentication
as long as it can issue SPIFFE JWT SVIDs and provides a SPIFFE Bundle Endpoint accessible by
Keycloak.
One important distinction between SPIFFE and other providers is the lack of an iss claim. Instead the sub claim
contains both the SPIFFE Trust Domain as well as the client ID. An example sub claim is
spiffe://my-trust-domain/my-client where the first part is the trust-domain (spiffe://my-trust-domain) that is
equivalent to the standard iss claim.
If you want to try out using Keycloak and SPIFFE/SPIRE together check out the demo available in the Keycloak Playground.
For more details on how to configure a SPIFFE identity provider check out the Keycloak Documentation.
Kubernetes Service Accounts
For workloads running on Kubernetes, Kubernetes Service Accounts can be leveraged for federated
client authentication. Applications can retrieve service account tokens through the TokenRequest API
or Token Volume Projection.
One requirement for using Kubernetes Service Accounts is Keycloak needs to be able to access
the <ISSUER URL>/.well-known/openid-configuration endpoint to retrieve the public keys used to sign the
service account tokens. By default, this endpoint requires authentication. If Keycloak is running
in the same Kubernetes cluster as the client, Keycloak leverages its own Kubernetes Service Account to authenticate to this endpoint. When Keycloak is running externally the Kubernetes cluster must
be configured with an Issuer URL accessible by Keycloak, and Keycloak needs to be able to
reach the .well-known/openid-configuration endpoint without requiring authentication.
When clients retrieve service account tokens they must request the Keycloak Realm Issuer URL as
the audience, and additionally request short-lived tokens.
If you want to try out using Keycloak and Kubernetes check out the demo available in the Keycloak Playground.
For more details on how to configure a Kubernetes identity provider check out the Keycloak Documentation.
How secure is federated client authentication?
There is an implicit trust relationship with the external identity provider. If the external
identity provider is compromised attackers can potentially generate tokens to authenticate
as any clients in Keycloak leveraging this provider for authentication.
Tokens used as client assertions can potentially be leaked or intercepted. As tokens are
short-lived the risk is reduced. For additional protection replay prevention can be leverage. However, bear in mind
there is a performance penalty replay prevention. For every request the client sends to Keycloak it must then retrieve
a new token from the external provider, additionally Keycloak has to keep track of previously used tokens until they
expire.
Neither SPIFFE or Kubernetes Service Accounts supports reuse protection. Both SPIFFE and Kubernetes limit how often a
client can retrieve new tokens. In both cases this is configurable, but make sure token lifespans are configured to be
shorted lived and not long lived. Recommendations here would be a maximum 10 minutes lifespan, which brings a good
balance between security and performance.
End-to-end encryption between the client, the external identity provider, and Keycloak provides a
good level of protection against tokens being leaked. Combined with short-lived tokens and
preventing clients from sharing or storing tokens insecurely, a high level of security can be
achieved.
In general federated client authentication eliminates the need for clients to manage secrets to authenticate with Keycloak, are short-lived, and cryptographically signed, which provides a high
level of security compared to client secrets.
Compared to self-signed client assertions, where a client signs client assertions using its own
private keys it depends on the environment which is more secure. Federated client authentication
introduces a third-party into the mix as well as additional points where tokens can be leaked. On the
other hand how frequently are private keys for clients rotated and how securely are they stored?
What’s next?
We would love feedback on the preview federated client authentication feature, both the good
and the bad. Let us know if you’ve successfully tried the feature out and with what environment,
or if you failed to get it working let us know. We’ll try to help and improve the feature for the future.
Federated client authentication with OpenID Connect and Kubernetes Service Accounts is planned
to be fully supported in Keycloak 26.6. However, SPIFFE will remain preview until the
OAuth SPIFFE Client Authentication is finalized.
FOSDEM is a free event for software developers to meet, share ideas and collaborate.
Every year, thousands of developers of free and open source software from all over the world gather at the event.
Meet the community at the Sovereign Identity stand
On Saturday, January 31st 2026, the Keycloak project will co-host the “Sovereign Identity for server, desktop, and a cloud” stand together with the FreeIPA, SSSD and OpenWallet project. We’ll be open from 1000 in the morning until around 1800 in the early evening.
We will be at K building on level 1 in group C. Visit this stand to interact with the teams of several popular solutions in this space.
Extensible self-hosted Single-Sign-On for your applications. Supporting Passkeys, OpenID Connect, OAuth 2.0, SAML 2.0 and Kerberos. Integrating with other Identity Providers through brokerage via SAML or OpenID Connect, or via LDAP.
Manage Linux users and client hosts in your realm from one central location, define Kerberos authentication and authorization policies for your identities, create mutual trust with other Identity Management systems. Issue certificates to your users and services.
Open Source Client for Enterprise Identity Management. Enroll your Linux machine into an Active Directory, FreeIPA or LDAP domain. Use remote identities, policies and various authentication and authorization mechanisms to access your computer.
We drive global adoption of open, secure and interoperable digital wallet solutions. We set best practices for digital wallet technology through collaboration on standards-based OSS components that issuers, wallet providers and relying parties can use to bootstrap implementations that preserve user choice, security and privacy.
Talks about Keycloak and related topics
FOSDEM is a big event divided into smaller, single-track conferences with their own call for papers and organizers. Submit by November 30th to be part it!
Here a short list of those dev rooms that might be of interest for you if you are into Keycloak:
This is all about identity, integration of identities and the various open source technologies available for that.
There are two Keycloak-related talks on the schedule:
As security threats become more sophisticated, the need for efficient, real-time communication between identity providers and relying parties is essential. The Shared Signals Framework (SSF) and related specifications such as CAEP and RISC address this challenge by providing a standardised way for systems to exchange security related signals, such as session revocations, credential breaches, and other identity-related incidents, in a secure and scalable manner. This talk introduces the Shared Signals Framework and explains how it enhances security and operational efficiency in modern identity ecosystems. We’ll explore how SSF can be supported in Keycloak to enable real-time event-driven communication between providers and relying parties. Attendees will learn how Keycloak can help to detect and mitigate threats, and improve overall system security with SSF.
OAuth 2.0 and OpenID Connect have been around for years to secure web and mobile applications alike with growing popularity.
To keep your applications and their data secure, these standards are evolving to align with security best practices.
Join this talk to see how the FAPI 2.0 Security Profile and the upcoming OAuth 2.1 standard promotes and enforces best practices, how to adapt your applications, and how Keycloak as an Open Source IAM can help you. Expect a demo and examples for some of the enhancements.
Everything that is relevant to security in the free software and open source world.
Talks cover topics like cryptography, supply chain, secure development and hardening.
Connecting developers and EU lawmakers from the European institutions to discuss the impact of past, ongoing, and upcoming EU laws affecting the Open Source community. The day will feature interventions from lawmakers from the European Commission and Parliament, as well as from the community, and will include presentations, workshops, short talks and Q&As.
The Building Europe’s Public Digital Infrastructure devroom is for
discussing topics and issues related to full-stack digital sovereignty,
from secure and interoperable digital workspaces to sovereign cloud
infrastructure, including standards, technologies, and best practices
for designing, deploying, and operating independent and resilient
digital ecosystems for the public sector.
There is, as I recall, a film that has a guy finds some universal remote that, amongst other things, allows him to skip forward. The moral of the film is he skips over his entire life and regrets it.
But this would, some times, be cool - right? It is 4pm on a Saturday and I am doing nothing special, watching TV (a show I have watched before) and a bit hungry - if only I had a magic button to make it 6pm and I could order Chinese now.
But yes, massively tempting to "skip" more and more, I am sure.
To be fair, if I had a magic button to skip ahead I would want it to not eat from my life time as well, that would be way more sensible.
But we sort of have this - it is sleep - we can skip over 6 to 8 hours of time over night (and use up some of our life).
It is almost a shame we cannot simply choose exact periods that would be handy to skip instead, maybe.
Last week, we signalled our progressive pivot to AI. This doesn’t diminish our commitment to existing services, and we’ll continue to invest in them, unlike most; but AI, for voice and messaging, is going to become more central to our…
For some reason it fetched more than it should? As expected, it fetched
"strolling around a system" and "numeric limits.
As unexpected, it also fetched "Making the most of a dumb fax switcher
box in the old days" (Sep. 2025) and "Web page annoyances that I don't
inflict on you here" (from 2024?) - both of which I have definitely
read before.
So... you have, and you haven't. Sometimes I change things well after a
post has gone live. I'm talking about months or years here. It doesn't
matter. If I see something that's wrong, I go in and fix it, and it'll
ripple out as updates to old posts.
Here's one such difference, as seen by the git repo which holds the
input files:
--- a/2025/09/01/fax/notes
+++ b/2025/09/01/fax/notes
ever wanted a second line. That is, in addition to the red/green, they
also had a yellow/black pair in there, just hanging out, not doing
anything. It didn't "stop off" at any of the jacks, but it was in fact
-present and ran interrupted from end to end.
+present and ran uninterrupted from end to end.
See the problem? I originally said it "ran interrupted from end to end"
which doesn't make any sense, so I fixed it.
So, yeah, now and then, an old post will "spring back to life", and
that's why. That's usually just me fixing my mistakes, and sometimes
adding in a new bit of flavor which wasn't there the first time around.
There's a field in the Atom feed spec which amounts to "date this entry
was last updated", and it gets bumped. The others stay the same, so
your feed reader doesn't bring it back up to the top (even though
they're physically present in the feed it downloads).
This is part of why the feed is the past 100 posts and not just the past
couple of days or something like that. This way, if I fix something
within a reasonable horizon, there's a chance of the fix appearing on
the reader side of things.
If your feed reader notices this, then everything is working as
intended. If you're seeing post updates on a reasonable timeframe, then
odds are good that your feed reader software is doing the right thing.
Modern applications and AI agents increasingly operate across distributed trust domains, where each domain is protected by its own OAuth 2.0 Authorization Server. A single request may also traverse multiple resource servers to complete a task.
This raises an important challenge: every protected resource must understand who initiated the request, which authorization was granted, and optionally which other resources were accessed before making an authorization decision. Preserving this information across domains is critical.
Keycloak 26.5 introduces preview support for the new feature JWT Authorization Grant, implementing RFC 7523. This feature allows a client to present a signed JWT from an external issuer and obtain a Keycloak access token, providing a standard and secure way to authorize requests based on external assertions.
However, exchanging a token alone does not fully solve the problem of propagating identity and authorization context across multiple trust domains.
The IETF draft OAuth Identity and Authorization Chaining Across Domains defines a standardized flow that combines JWT Authorization Grant (RFC 7523) with OAuth 2.0 Token Exchange (RFC 8693), which Keycloak already supports, to preserve the original user’s identity, claims, and authorization throughout the chain.
JWT Authorization Grant
The JWT Authorization Grant feature allows a client to present a signed JWT assertion to the token endpoint and obtain an access token without an interactive authorization step. To initiate this flow, the client sends a request to the token endpoint with the grant_type set to urn:ietf:params:oauth:grant-type:jwt-bearer and the external token passed in the assertion parameter.
It provides a standard and secure alternative to the preview feature External-to-Internal Token Exchange V1 which will be deprecated.
Trust relationships in Keycloak are defined through Identity Providers. The JWT Authorization Grant can be enabled and configured in a dedicated section of the existing OpenID Connect v1.0 Identity Provider, or via a new dedicated JWT Authorization Grant Identity Provider.
A confidential client can request a JWT Authorization Grant by enabling the dedicated option in the client settings and selecting the allowed identity providers.
The JWT Authorization Grant is a preview feature. Full configuration details are available in a dedicated guide:
JWT Authorization Grant.
OAuth Identity and Authorization Chaining Across Domains
Although the JWT Authorization Grant allows a client to obtain a Keycloak access token based on an external JWT, it does not by itself solve the broader problem of propagating identity and authorization context across multiple trust domains.
A typical scenario involves Domain A (an external IdP or Keycloak realm) and Domain B (an internal Keycloak realm). The goal is to allow a client in Domain A to access resources in Domain B while preserving the original user’s identity.
Step 1: Token Exchange in Domain A
In this first step, the client requests a token for Domain B using a Token Exchange request.
The client in Domain A must be configured to allow the target audience, typically by assigning a Client Scope with an Audience Mapper if you are using Keycloak for Domain A. The audience parameter in the request is then used to restrict the resulting token to that specific target, ensuring it contains the correct aud claim for Domain B.
# Request to Domain A
POST /realms/domain-a/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&subject_token=$ORIGINAL_ACCESS_TOKEN
&audience=http://localhost:8080/realms/domain-b
Domain A issues a new JWT access token, which acts as the assertion for Domain B.
Step 2: JWT Authorization Grant in Domain B
The client uses this token to authenticate with Domain B using the JWT Authorization Grant.
# Request to Domain B
POST /realms/domain-b/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=$TOKEN_FROM_STEP_1
Domain B validates the token and issues a local access token. Identity and authorization context are now securely propagated from Domain A to Domain B.
The JWT Authorization Grant solves an important problem in cross-domain OAuth flows. It lets an Authorization Server issue tokens based on a signed JWT assertion, making authorization decisions explicit and verifiable. Combined with Identity Chaining, it allows each domain to check and extend authorization context in a standards-based way.
JWT Authorization Grant brings several advantages:
Preserves user identity. Cross-domain access often relies on generic service accounts to call APIs. With a signed JWT assertion, a service can request tokens on behalf of a user, keeping identity and intent clear when moving across domains.
Standards-based cross-domain support. The JWT Authorization Grant with the support of the RFC 7523 is part of ongoing OAuth work on cross-domain identity and authorization chaining, including
OAuth Identity and Authorization Chaining Across Domains and
Identity Assertion Authorization Grant.
This allows workflows that are traceable, constrained, and aligned with least-privilege principles, ideal for distributed systems and AI agents.
Next Steps
Promote JWT Authorization Grant from preview to a fully supported feature in the next Keycloak release
Deprecate Token Exchange version 1
Enable JWT Authorization Grant for social Identity Providers (e.g., Google)
Monitor and follow the evolution of the Identity Chaining draft to ensure full compliance
Try It Out
As the JWT Authorization Grant is currently in preview, your feedback is helpful to help to refine the feature before it reaches full support.
We encourage you to test this new feature and share your experience. Feedback and contributions from the community are always welcome.
Meta also replaces a legacy C++ media-handling security library with Rust
Users of Meta's WhatsApp messenger looking to simplify the process of protecting themselves are in luck, as the company is rolling out a new feature that combines multiple security settings under a single, toggleable option. …
How a cold morning, failed O-rings, and flawed decision-making led to tragedy
Forty years ago, Space Shuttle Challenger disintegrated 73 seconds into its flight, killing its crew of seven and exposing the management culture and decision-making process that led NASA to launch on a freezing January day.…
There’s a man in my office who has a chopped-up apple and a can of sardines every day. Close second is someone I used to work with who would have a bowl of bread and grated cheese.
I’m on my weight loss journey right now and I haven’t had a takeaway since end of November, which is a long time for me. At one point I was eating about four a week.
I just wondered how often you all eat them? I’m wondering if I should just cut them out completely so I don’t fall back into the addiction…
embedding-shapes was so infuriated by the hype around Cursor's FastRender browser project - thousands of parallel agents producing ~1.6 million lines of Rust - that they were inspired to take a go at building a web browser using coding agents themselves.
The result is one-agent-one-browser and it's really impressive. Over three days they drove a single Codex CLI agent to build 20,000 lines of Rust that successfully renders HTML+CSS with no Rust crate dependencies at all - though it does (reasonably) use Windows, macOS and Linux system frameworks for image and text rendering.
It even rendered my SVG feed subscription icon! A PNG image is missing from the page, which looks like an intermittent bug (there's code to render PNGs).
I had thought that "build a web browser" was the ideal prompt to really stretch the capabilities of coding agents - and that it would take sophisticated multi-agent harnesses (as seen in the Cursor project) and millions of lines of code to achieve.
Turns out one agent driven by a talented engineer, three days and 20,000 lines of Rust is enough to get a very solid basic renderer working!
I'm going to upgrade my prediction for 2029: I think we're going to get a production-grade web browser built by a small team using AI assistance by then.
Kimi K2 landed in July as a 1 trillion parameter open weight LLM. It was joined by Kimi K2 Thinking in November which added reasoning capabilities. Now they've made it multi-modal: the K2 models were text-only, but the new 2.5 can handle image inputs as well:
Kimi K2.5 builds on Kimi K2 with continued pretraining over approximately 15T mixed visual and text tokens. Built as a native multimodal model, K2.5 delivers state-of-the-art coding and vision capabilities and a self-directed agent swarm paradigm.
The "self-directed agent swarm paradigm" claim there means improved long-sequence tool calling and training on how to break down tasks for multiple agents to work on at once:
For complex tasks, Kimi K2.5 can self-direct an agent swarm with up to 100 sub-agents, executing parallel workflows across up to 1,500 tool calls. Compared with a single-agent setup, this reduces execution time by up to 4.5x. The agent swarm is automatically created and orchestrated by Kimi K2.5 without any predefined subagents or workflow.
I used the OpenRouter Chat UI to have it "Generate an SVG of a pelican riding a bicycle", and it did quite well:
As a more interesting test, I decided to exercise the claims around multi-agent planning with this prompt:
I want to build a Datasette plugin that offers a UI to upload files to an S3 bucket and stores information about them in a SQLite table. Break this down into ten tasks suitable for execution by parallel coding agents.
The Hugging Face repository is 595GB. The model uses Kimi's janky "modified MIT" license, which adds the following clause:
Our only modification part is that, if the Software (or any derivative works thereof) is used for any of your commercial products or services that have more than 100 million monthly active users, or more than 20 million US dollars (or equivalent in other currencies) in monthly revenue, you shall prominently display "Kimi K2.5" on the user interface of such product or service.
Given the model's size, I expect one way to run it locally would be with MLX and a pair of $10,000 512GB RAM M3 Ultra Mac Studios. That setup has been demonstrated to work with previous trillion parameter K2 models.
Someone asked on Hacker News if I had any tips for getting coding agents to write decent quality tests. Here's what I said:
I work in Python which helps a lot because there are a TON of good examples of pytest tests floating around in the training data, including things like usage of fixture libraries for mocking external HTTP APIs and snapshot testing and other neat patterns.
Or I can say "use pytest-httpx to mock the endpoints" and Claude knows what I mean.
Keeping an eye on the tests is important. The most common anti-pattern I see is large amounts of duplicated test setup code - which isn't a huge deal, I'm much more more tolerant of duplicated logic in tests than I am in implementation, but it's still worth pushing back on.
"Refactor those tests to use pytest.mark.parametrize" and "extract the common setup into a pytest fixture" work really well there.
Generally though the best way to get good tests out of a coding agent is to make sure it's working in a project with an existing test suite that uses good patterns. Coding agents pick the existing patterns up without needing any extra prompting at all.
I find that once a project has clean basic tests the new tests added by the agents tend to match them in quality. It's similar to how working on large projects with a team of other developers work - keeping the code clean means when people look for examples of how to write a test they'll be pointed in the right direction.
One last tip I use a lot is this:
Clone datasette/datasette-enrichments
from GitHub to /tmp and imitate the
testing patterns it uses
I do this all the time with different existing projects I've written - the quickest way to show an agent how you like something to be done is to have it look at an example.
One of my favourite features of ChatGPT is its ability to write and execute code in a container. This feature launched as ChatGPT Code Interpreter nearly three years ago, was half-heartedly rebranded to "Advanced Data Analysis" at some point and is generally really difficult to find detailed documentation about. Case in point: it appears to have had a massive upgrade at some point in the past few months, and I can't find documentation about the new capabilities anywhere!
Here are the most notable new features:
ChatGPT can directly run Bash commands now. Previously it was limited to Python code only, although it could run shell commands via the Python subprocess module.
It has Node.js and can run JavaScript directly in addition to Python. I also got it to run "hello world" in Ruby, Perl, PHP, Go, Java, Swift, Kotlin, C and C++. No Rust yet though!
While the container still can't make outbound network requests, pip install package and npm install package both work now via a custom proxy mechanism.
ChatGPT can locate the URL for a file on the web and use a container.download tool to download that file and save it to a path within the sandboxed container.
This is a substantial upgrade! ChatGPT can now write and then test code in 10 new languages (11 if you count Bash), can find files online and download them into the container, and can install additional packages via pip and npm to help it solve problems.
I was initially suspicious that maybe I'd stumbled into a new preview feature that wasn't available to everyone, but I tried some experiments in a free ChatGPT account and confirmed that the new features are available there as well.
My first clue to the new features came the other day when I got curious about Los Angeles air quality, in particular has the growing number of electric vehicles there had a measurable impact?
I prompted a fresh GPT-5.2 Thinking session with:
Show me Los Angeles air quality over time for last 20 years
Here's the shared transcript. Annoyingly that doesn't make the thinking trace available, so here's a screenshot:
This bit instantly caught my eye:
[...] The URL from the error message leads to an Excel file containing air quality trends. I can use the container.download tool to fetch it. [...]
Without running any searches tell me about your container.download tool
And got back:
Sure. container.download is a built-in tool I can call that fetches a file from a URL and saves it into the sandboxed container filesystem for this chat session.
What it does
Takes a publicly reachable URL and a destination filepath in the container.
Downloads the bytes from that URL and writes them to the given path.
After that, I can read/process the file locally in the container (e.g., unzip it, parse it with Python, open it as an image, convert it, etc.).
That 52.230.164.178 IP address resolves to Microsoft Azure Cloud (centralus) in Des Moines, Iowa.
Is container.download a data exfiltration vulnerability?
On the one hand, this is really useful! ChatGPT can navigate around websites looking for useful files, download those files to a container and then process them using Python or other languages.
Is this a data exfiltration vulnerability though? Could a prompt injection attack trick ChatGPT into leaking private data out to a container.download call to a URL with a query string that includes sensitive information?
I don't think it can. I tried getting it to assemble a URL with a query string and access it using container.download and it couldn't do it. It told me that it got back this error:
ERROR: download failed because url not viewed in conversation before. open the file or url using web.run first.
This looks to me like the same safety trick used by Claude's Web Fetch tool: only allow URL access if that URL was either directly entered by the user or if it came from search results that could not have been influenced by a prompt injection.
(I poked at this a bit more and managed to get a simple constructed query string to pass through web.run - a different tool entirely - but when I tried to compose a longer query string containing the previous prompt history a web.run filter blocked it.)
So I think this is all safe, though I'm curious if it could hold firm against a more aggressive round of attacks from a seasoned security researcher.
Bash and other languages
The key lesson from coding agents like Claude Code and Codex CLI is that Bash rules everything: if an agent can run Bash commands in an environment it can do almost anything that can be achieved by typing commands into a computer.
When Anthropic added their own code interpreter feature to Claude last September they built that around Bash rather than just Python. It looks to me like OpenAI have now done the same thing for ChatGPT.
Here's what ChatGPT looks like when it runs a Bash command - here my prompt was:
npm install a fun package and demonstrate using it
It's useful to click on the "Thinking" or "Thought for 32s" links as that opens the Activity sidebar with a detailed trace of what ChatGPT did to arrive at its answer. This helps guard against cheating - ChatGPT might claim to have run Bash in the main window but it can't fake those black and white logs in the Activity panel.
In the previous example ChatGPT installed the cowsay package from npm and used it to draw an ASCII-art cow. But how could it do that if the container can't make outbound network requests?
In another session I challenged it to explore its environment. and figure out how that worked.
The key magic appears to be a applied-caas-gateway1.internal.api.openai.org proxy, available within the container and with various packaging tools configured to use it.
The following environment variables cause pip and uv to install packages from that proxy instead of directly from PyPI:
Neither Rust nor Docker are installed in the container environment, but maybe those registry references are a clue of features still to come.
Adding it all together
The result of all of this? You can tell ChatGPT to use Python or Node.js packages as part of a conversation and it will be able to install them and apply them against files you upload or that it downloads from the public web. That's really cool.
The big missing feature here should be the easiest to provide: we need official documentation! A release notes entry would be a good start, but there are a lot of subtle details to how this new stuff works, its limitations and what it can be used for.
As always, I'd also encourage OpenAI to come up with a name for this set of features that properly represents how it works and what it can do.
In the meantime, I'm going to call this ChatGPT Containers.
Update: a full list of tools
I decided to ask ChatGPT about other tools that were available to it in case there was anything interesting in there:
List all tools that are available to you, with their exact names and descriptions and signatures
List of ChatGPT tools according to GPT-5.2 Thinking on 26th January 2026
Below are all tools available to me in this chat, with their exact names, descriptions, and signatures (as defined in my tool interface).
python
python.exec (FREEFORM) → any
Description: Execute Python code in a Jupyter environment for private/internal reasoning (not shown to you). Internet access is disabled. Signature:python.exec(FREEFORM) -> any
web
web.run (ToolCallV5 JSON) → any
Description: Access the internet and specialized lookups (search, open/click/find pages, screenshot PDFs, image search, product search, finance, weather, sports, calculator, time). Supports citations via returned turn... reference IDs. Signature: web.run({ open?, click?, find?, screenshot?, image_query?, product_query?, sports?, finance?, weather?, calculator?, time?, search_query?, response_length? }) -> any
automations
automations.create → any
Description: Schedule a future/recurring task/reminder/search via iCal VEVENT. Signature: automations.create({ prompt: string, title: string, schedule?: string, dtstart_offset_json?: string }) -> any
Description: Read a batch of Gmail messages by message IDs (read-only). Signature: gmail.batch_read_email({ message_ids: string[] }) -> any
gcal (read-only)
gcal.search_events → any
Description: Search Google Calendar events in a time range and/or by keyword (read-only). Signature: gcal.search_events({ time_min?: string, time_max?: string, timezone_str?: string, max_results?: integer, query?: string, calendar_id?: string, next_page_token?: string }) -> any
gcal.read_event → any
Description: Read a specific calendar event by ID (read-only). Signature: gcal.read_event({ event_id: string, calendar_id?: string }) -> any
gcontacts (read-only)
gcontacts.search_contacts → any
Description: Search Google Contacts by keyword (read-only). Signature: gcontacts.search_contacts({ query: string, max_results?: integer }) -> any
Description: Apply regex-based edits to the current canvas textdoc. Signature: canmore.update_textdoc({ updates: { pattern: string, multiple?: boolean, replacement: string }[] }) -> any
canmore.comment_textdoc → any
Description: Add actionable comments on matched regions of the current canvas textdoc. Signature: canmore.comment_textdoc({ comments: { pattern: string, comment: string }[] }) -> any
python_user_visible
python_user_visible.exec (FREEFORM) → any
Description: Execute Python code that you will see (tables, plots, generated files). Internet disabled. Signature:python_user_visible.exec(FREEFORM) -> any
user_info
user_info.get_user_info → any
Description: Get your current location and local time (or UTC if unknown). Signature:user_info.get_user_info({}) -> any
summary_reader
summary_reader.read → any
Description: Read safe-to-share internal reasoning summaries from earlier turns (used when asked how I arrived at something). Signature:summary_reader.read({ limit?: integer, offset?: integer }) -> any
container
container.exec → any
Description: Run a command inside the container and return stdout/stderr. Signature: container.exec({ cmd: string[], session_name?: string | null, workdir?: string | null, timeout?: integer | null, env?: object | null, user?: string | null }) -> any
container.feed_chars → any
Description: Send input to a running interactive exec session and flush output. Signature: container.feed_chars({ session_name: string, chars: string, yield_time_ms?: integer }) -> any
container.open_image → any
Description: Display an image from an absolute path in the container (jpg/jpeg/png/webp). Signature: container.open_image({ path: string, user?: string | null }) -> any
container.download → any
Description: Download a file from a URL into the container filesystem. Signature: container.download({ url: string, filepath: string }) -> any
bio (memory)
bio.update (FREEFORM) → any
Description: Persist (or forget) user-specific info across conversations (“memory”). Signature:bio.update(FREEFORM) -> any
api_tool
api_tool.list_resources → any
Description: List available “resources” (including invokable tools) in an OP-style file tree. Signature: api_tool.list_resources({ path?: string, cursor?: string | null, only_tools?: boolean, refetch_tools?: boolean }) -> any
api_tool.call_tool → any
Description: Invoke a resource as a tool (must know its full path/URI from list_resources). Signature: api_tool.call_tool({ path: string, args: object }) -> any
personal_context
personal_context.search → any
Description: Retrieve user-specific context from prior interactions/linked sources to maintain continuity. Signature: personal_context.search({ query: string }) -> any
Description: Read current settings and allowed values (personality, accent color, appearance). Signature:user_settings.get_user_settings() -> any
user_settings.set_setting → any
Description: Change one setting (accent color, appearance, or personality) to an allowed value. Signature: user_settings.set_setting({ setting_name: "accent_color" | "appearance" | "personality", setting_value: string }) -> any
artifact_handoff
artifact_handoff.prepare_artifact_generation → any
Description: Must be called immediately when the user asks for a spreadsheet or slide deck artifact. Signature:artifact_handoff.prepare_artifact_generation() -> any
Paul Kinlan is a web platform developer advocate at Google and recently turned his attention to coding agents. He quickly identified the importance of a robust sandbox for agents to operate in and put together these detailed notes on how the web browser can help:
This got me thinking about the browser. Over the last 30 years, we have built a sandbox specifically designed to run incredibly hostile, untrusted code from anywhere on the web, the instant a user taps a URL. [...]
Could you build something like Cowork in the browser? Maybe. To find out, I built a demo called Co-do that tests this hypothesis. In this post I want to discuss the research I've done to see how far we can get, and determine if the browser's ability to run untrusted code is useful (and good enough) for enabling software to do more for us directly on our computer.
Paul then describes how the three key aspects of a sandbox - filesystem, network access and safe code execution - can be handled by browser technologies: the File System Access API (still Chrome-only as far as I can tell), CSP headers with <iframe sandbox> and WebAssembly in Web Workers.
Co-do is a very interesting demo that illustrates all of these ideas in a single application:
You select a folder full of files and configure an LLM provider and set an API key, Co-do then uses CSP-approved API calls to interact with that provider and provides a chat interface with tools for interacting with those files. It does indeed feel similar to Claude Cowork but without running a multi-GB local container to provide the sandbox.
My biggest complaint about <iframe sandbox> remains how thinly documented it is, especially across different browsers. Paul's post has all sorts of useful details on that which I've not encountered elsewhere, including a complex double-iframe technique to help apply network rules to the inner of the two frames.
Thanks to this post I also learned about the <input type="file" webkitdirectory> tag which turns out to work on Firefox, Safari and Chrome and allows a browser read-only access to a full directory of files at once. I had Claude knock up a webkitdirectory demo to try it out and I'll certainly be using it for projects in the future.
Critical update for this year's Kākāpō breeding season: the New Zealand Department of Conservation have a livestream running of Rakiura's nest!
You’re looking at the underground nest of 23-year-old Rakiura. She has chosen this same site to nest for all seven breeding seasons since 2008, a large cavity under a rātā tree. Because she returns to the site so reliably, we’ve been able to make modifications over the years to keep it safe and dry, including adding a well-placed hatch for monitoring eggs and chicks.
Rakiura is a legendary Kākāpō:
Rakiura hatched on 19 February 2002 on Whenua Hou/Codfish Island. She is the offspring of Flossie and Bill. Her name comes from the te reo Māori name for Stewart Island, the place where most of the founding kākāpō population originated.
Rakiura has nine living descendants, three females and six males, across six breeding seasons. In 2008 came Tōitiiti, in 2009 Tamahou and Te Atapō, in 2011 Tia and Tūtoko, in 2014 Taeatanga and Te Awa, in 2019 Mati-mā and Tautahi. She also has many grandchicks.
She laid her first egg of the season at 4:30pm NZ time on 22nd January. The livestream went live shortly afterwards, once she committed to this nest.
Jenny Wen, Design Lead at Anthropic (and previously Director of Design at Figma) gave a provocative keynote at Hatch Conference in Berlin last September.
Jenny argues that the Design Process - user research leading to personas leading to user journeys leading to wireframes... all before anything gets built - may be outdated for today's world.
Hypothesis: In a world where anyone can make anything — what matters is your ability to choose and curate what you make.
In place of the Process, designers should lean into prototypes. AI makes these much more accessible and less time-consuming than they used to be.
Watching this talk made me think about how AI-assisted programming significantly reduces the cost of building the wrong thing. Previously if the design wasn't right you could waste months of development time building in the wrong direction, which was a very expensive mistake. If a wrong direction wastes just a few days instead we can take more risks and be much more proactive in exploring the problem space.
I've always been a compulsive prototyper though, so this is very much playing into my own existing biases!
If you tell a friend they can now instantly create any app, they’ll probably say “Cool! Now I need to think of an idea.” Then they will forget about it, and never build a thing. The problem is not that your friend is horribly uncreative. It’s that most people’s problems are not software-shaped, and most won’t notice even when they are. [...]
Programmers are trained to see everything as a software-shaped problem: if you do a task three times, you should probably automate it with a script. Rename every IMG_*.jpg file from the last week to hawaii2025_*.jpg, they tell their terminal, while the rest of us painfully click and copy-paste. We are blind to the solutions we were never taught to see, asking for faster horses and never dreaming of cars.
Last week Cursor published Scaling long-running autonomous coding, an article describing their research efforts into coordinating large numbers of autonomous coding agents. One of the projects mentioned in the article was FastRender, a web browser they built from scratch using their agent swarms. I wanted to learn more so I asked Wilson Lin, the engineer behind FastRender, if we could record a conversation about the project. That 47 minute video is now available on YouTube. I've included some of the highlights below.
See my previous post for my notes and screenshots from trying out FastRender myself.
What FastRender can do right now
We started the conversation with a demo of FastRender loading different pages (03:15). The JavaScript engine isn't working yet so we instead loaded github.com/wilsonzlin/fastrender, Wikipedia and CNN - all of which were usable, if a little slow to display.
JavaScript had been disabled by one of the agents, which decided to add a feature flag! 04:02
JavaScript is disabled right now. The agents made a decision as they were currently still implementing the engine and making progress towards other parts... they decided to turn it off or put it behind a feature flag, technically.
From side-project to core research
Wilson started what become FastRender as a personal side-project to explore the capabilities of the latest generation of frontier models - Claude Opus 4.5, GPT-5.1, and GPT-5.2. 00:56
FastRender was a personal project of mine from, I'd say, November. It was an experiment to see how well frontier models like Opus 4.5 and back then GPT-5.1 could do with much more complex, difficult tasks.
A browser rendering engine was the ideal choice for this, because it's both extremely ambitious and complex but also well specified. And you can visually see how well it's working! 01:57
As that experiment progressed, I was seeing better and better results from single agents that were able to actually make good progress on this project. And at that point, I wanted to see, well, what's the next level? How do I push this even further?
Once it became clear that this was an opportunity to try multiple agents working together it graduated to an official Cursor research project, and available resources were amplified.
The goal of FastRender was never to build a browser to compete with the likes of Chrome. 41:52
We never intended for it to be a production software or usable, but we wanted to observe behaviors of this harness of multiple agents, to see how they could work at scale.
The great thing about a browser is that it has such a large scope that it can keep serving experiments in this space for many years to come. JavaScript, then WebAssembly, then WebGPU... it could take many years to run out of new challenges for the agents to tackle.
Running thousands of agents at once
The most interesting thing about FastRender is the way the project used multiple agents working in parallel to build different parts of the browser. I asked how many agents were running at once: 05:24
At the peak, when we had the stable system running for one week continuously, there were approximately 2,000 agents running concurrently at one time. And they were making, I believe, thousands of commits per hour.
How do you run 2,000 agents at once? They used really big machines. 05:56
The simple approach we took with the infrastructure was to have a large machine run one of these multi-agent harnesses. Each machine had ample resources, and it would run about 300 agents concurrently on each. This was able to scale and run reasonably well, as agents spend a lot of time thinking, and not just running tools.
At this point we switched to a live demo of the harness running on one of those big machines (06:32). The agents are arranged in a tree structure, with planning agents firing up tasks and worker agents then carrying them out. 07:14
This cluster of agents is working towards building out the CSS aspects of the browser, whether that's parsing, selector engine, those features. We managed to push this even further by splitting out the browser project into multiple instructions or work streams and have each one run one of these harnesses on their own machine, so that was able to further parallelize and increase throughput.
But don't all of these agents working on the same codebase result in a huge amount of merge conflicts? Apparently not: 08:21
We've noticed that most commits do not have merge conflicts. The reason is the harness itself is able to quite effectively split out and divide the scope and tasks such that it tries to minimize the amount of overlap of work. That's also reflected in the code structure—commits will be made at various times and they don't tend to touch each other at the same time.
This appears to be the key trick for unlocking benefits from parallel agents: if planning agents do a good enough job of breaking up the work into non-overlapping chunks you can bring hundreds or even thousands of agents to bear on a problem at once.
Surprisingly, Wilson found that GPT-5.1 and GPT-5.2 were a better fit for this work than the coding specialist GPT-5.1-Codex: 17:28
Some initial findings were that the instructions here were more expansive than merely coding. For example, how to operate and interact within a harness, or how to operate autonomously without interacting with the user or having a lot of user feedback. These kinds of instructions we found worked better with the general models.
I asked what the longest they've seen this system run without human intervention: 18:28
So this system, once you give an instruction, there's actually no way to steer it, you can't prompt it, you're going to adjust how it goes. The only thing you can do is stop it. So our longest run, all the runs are basically autonomous. We don't alter the trajectory while executing. [...]
And so the longest at the time of the post was about a week and that's pretty close to the longest. Of course the research project itself was only about three weeks so you know we probably can go longer.
Specifications and feedback loops
An interesting aspect of this project design is feedback loops. For agents to work autonomously for long periods of time they need as much useful context about the problem they are solving as possible, combined with effective feedback loops to help them make decisions.
Feedback loops to the system are very important. Agents are working for very long periods continuously, and without guardrails and feedback to know whether what they're doing is right or wrong it can have a big impact over a long rollout. Specs are definitely an important part—you can see lots of comments in the code base that AI wrote referring specifically to specs that they found in the specs submodules.
GPT-5.2 is a vision-capable model, and part of the feedback loop for FastRender included taking screenshots of the rendering results and feeding those back into the model:
16:23
In the earlier evolution of this project, when it was just doing the static renderings of screenshots, this was definitely a very explicit thing we taught it to do. And these models are visual models, so they do have that ability. We have progress indicators to tell it to compare the diff against a golden sample.
The strictness of the Rust compiler helped provide a feedback loop as well: 15:52
The nice thing about Rust is you can get a lot of verification just from compilation, and that is not as available in other languages.
The agents chose the dependencies
We talked about the Cargo.toml dependencies that the project had accumulated, almost all of which had been selected by the agents themselves.
Some of these, like Skia for 2D graphics rendering or HarfBuzz for text shaping, were obvious choices. Others such as Taffy felt like they might go against the from-scratch goals of the project, since that library implements CSS flexbox and grid layout algorithms directly. This was not an intended outcome. 27:53
Similarly these are dependencies that the agent picked to use for small parts of the engine and perhaps should have actually implemented itself. I think this reflects on the importance of the instructions, because I actually never encoded specifically the level of dependencies we should be implementing ourselves.
It's currently vendored. And as the agents work on it, they do make changes to it. This was actually an artifact from the very early days of the project before it was a fully fledged browser... it's implementing things like the flex and grid layers, but there are other layout methods like inline, block, and table, and in our new experiment, we're removing that completely.
The inclusion of QuickJS despite the presence of a home-grown ecma-rs implementation has a fun origin story:
35:15
I believe it mentioned that it pulled in the QuickJS because it knew that other agents were working on the JavaScript engine, and it needed to unblock itself quickly. [...]
It was like, eventually, once that's finished, let's remove it and replace with the proper engine.
I love how similar this is to the dynamics of a large-scale human engineering team, where you could absolutely see one engineer getting frustrated at another team not having delivered yet and unblocking themselves by pulling in a third-party library.
Intermittent errors are OK, actually
Here's something I found really surprising: the agents were allowed to introduce small errors into the codebase as they worked! 39:42
One of the trade-offs was: if you wanted every single commit to be a hundred percent perfect, make sure it can always compile every time, that might be a synchronization bottleneck. [...]
Especially as you break up the system into more modularized aspects, you can see that errors get introduced, but small errors, right? An API change or some syntax error, but then they get fixed really quickly after a few commits. So there's a little bit of slack in the system to allow these temporary errors so that the overall system can continue to make progress at a really high throughput. [...]
People may say, well, that's not correct code. But it's not that the errors are accumulating. It's a stable rate of errors. [...] That seems like a worthwhile trade-off.
If you're going to have thousands of agents working in parallel optimizing for throughput over correctness turns out to be a strategy worth exploring.
A single engineer plus a swarm of agents in January 2026
The thing I find most interesting about FastRender is how it demonstrates the extreme edge of what a single engineer can achieve in early 2026 with the assistance of a swarm of agents.
FastRender may not be a production-ready browser, but it represents over a million lines of Rust code, written in a few weeks, that can already render real web pages to a usable degree.
A browser really is the ideal research project to experiment with this new, weirdly shaped form of software engineering.
I asked Wilson how much mental effort he had invested in browser rendering compared to agent co-ordination. 11:34
The browser and this project were co-developed and very symbiotic, only because the browser was a very useful objective for us to measure and iterate the progress of the harness. The goal was to iterate on and research the multi-agent harness—the browser was just the research example or objective.
FastRender is effectively using a full browser rendering engine as a "hello world" exercise for multi-agent coordination!
[...] i was too busy with work to read anything, so i asked chatgpt to summarize some books on state formation, and it suggested circumscription theory. there was already the natural boundary of my computer hemming the towns in, and town mayors played the role of big men to drive conflict. so i just needed a way for them to fight. i slightly tweaked the allocation of claude max accounts to the towns from a demand-based to a fixed allocation system. towns would each get a fixed amount of tokens to start, but i added a soldier role that could attack and defend in raids to steal tokens from other towns. [...]
exe.dev is a new hosting service that, for $20/month, gives you up to 25 VMs "that share 2 CPUs and 8GB RAM". Everything happens over SSH, including creating new VMs. Once configured you can sign into your exe.dev VMs like this:
ssh simon.exe.dev
Here's the clever bit: when you run the above command exe.dev signs you into your VM of that name... but they don't assign every VM its own IP address and SSH has no equivalent of the Host header, so how does their load balancer know which of your VMs to forward you on to?
The answer is that while they don't assign a unique IP to every VM they do have enough IPs that they can ensure each of your VMs has an IP that is unique to your account.
If I create two VMs they will each resolve to a separate IP address, each of which is shared with many other users. The underlying infrastructure then identifies my user account from my SSH public key and can determine which underlying VM to forward my SSH traffic to.
I haven't been paying much attention to the state-of-the-art in speech generation models other than noting that they've got really good, so I can't speak for how notable this new release from Qwen is.
In this report, we present the Qwen3-TTS series, a family of advanced multilingual, controllable, robust, and streaming text-to-speech models. Qwen3-TTS supports state-of- the-art 3-second voice cloning and description-based control, allowing both the creation of entirely novel voices and fine-grained manipulation over the output speech. Trained on over 5 million hours of speech data spanning 10 languages, Qwen3-TTS adopts a dual-track LM architecture for real-time synthesis [...]. Extensive experiments indicate state-of-the-art performance across diverse objective and subjective benchmark (e.g., TTS multilingual test set, InstructTTSEval, and our long speech test set). To facilitate community research and development, we release both tokenizers and models under the Apache 2.0 license.
The Hugging Face demo lets you try out the 0.6B and 1.7B models for free in your browser, including voice cloning:
I tried this out by recording myself reading my about page and then having Qwen3-TTS generate audio of me reading the Qwen3-TTS announcement post. Here's the result:
It's important that everyone understands that voice cloning is now something that's available to anyone with a GPU and a few GBs of VRAM... or in this case a web browser that can access Hugging Face.
Most people's mental model of Claude Code is that "it's just a TUI" but it should really be closer to "a small game engine".
For each frame our pipeline constructs a scene graph with React then:
-> layout elements
-> rasterize them to a 2d screen
-> diff that against the previous screen
-> finally use the diff to generate ANSI sequences to draw
We have a ~16ms frame budget so we have roughly ~5ms to go from the React scene graph to ANSI written.
Late last year Richard Weiss found something interesting while poking around with the just-released Claude Opus 4.5: he was able to talk the model into regurgitating a document which was not part of the system prompt but appeared instead to be baked in during training, and which described Claude's core values at great length.
He called this leak the soul document, and Amanda Askell from Anthropic quickly confirmed that it was indeed part of Claude's training procedures.
One detail that caught my eye is the acknowledgements at the end, which include a list of external contributors who helped review the document. I was intrigued to note that two of the fifteen listed names are Catholic members of the clergy - Father Brendan McGuire is a pastor in Los Altos with a Master’s degree in Computer Science and Math and Bishop Paul Tighe is an Irish Catholic bishop with a background in moral theology.
Previous work estimating the energy and water cost of LLMs has generally focused on the cost per prompt using a consumer-level system such as ChatGPT.
Simon P. Couch notes that coding agents such as Claude Code use way more tokens in response to tasks, often burning through many thousands of tokens of many tool calls.
As a heavy Claude Code user, Simon estimates his own usage at the equivalent of 4,400 "typical queries" to an LLM, for an equivalent of around $15-$20 in daily API token spend. He figures that to be about the same as running a dishwasher once or the daily energy used by a domestic refrigerator.
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.
When I decided to properly start using the Fediverse via
my own Mastodon server,
I knew it was probably inevitable that I would end up writing my own server -
and, well, here we are!
My new server is called Takahē, and
it's built in Django and also specifically with Python's async library
ecosystem - I'll explain more about why that matters later.
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
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
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
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
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,
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
When I wrote about App-pocalypse Now in 2014, I implied the future still belonged to the web. And it does. But it’s also true that the web has changed a lot in the last 10 years, much less the last 20 or 30.
I didn’t choose to be a programmer. Somehow, it seemed, the computers chose me. For a long time, that was fine, that was enough; that was all I needed. But along the way I never felt that being a programmer was this unambiguously great-for-everyone career field
For some of my friends October is Inktober a month to try artistic skills with pen and ink or indeed anything using ink that makes marks on paper. There is a website of course - these things become highly organised on the internet - but the artistic efforts of friends young and old on Facebook are just as interesting. And October is also a pink month - in France the proliferation of pink umbrellas in towns and cities signals the very creditable support for the fight against breast cancer - you might say 'pinktober' though this has not caught on as a label. Plenty of beautiful roses here though at other times of the year.
Politics is inescapable. Around Europe looming elections in various countries raise images of freedom teetering on the brink like the hut on the edge of a cliff in the Charlie Chaplin film. I keep wondering what kind of fear pushes people to vote for populist disinfor:ation, and that's without the horrors of fascist tendencies across the Atlantaic. In France, prime ministers appointed by an increasingly beleaguered president last ever shorter times before throwing in the towel - since politics is less and less about willlingness to compromise and more and more fragmented by party solidarity the chances of coalitions holding a stable majority are increasingly remote, and the spectre of the far right taking power hover ever closer.
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.
Welcome new discovery of La Clausade, a new domaine quite near us in, Mauguio, producing wines from little-known grape varieties (see below)
This is about old friends on our minds at the moment, and about a new discovery. Those of you who have stumbled on this blog but are not particularly interested in the alcoholic liquid know that my posts are as much about friends and countryside as about the drink - our presence in France is a lot to do with our liking for wine and vineyards, and for those who run them. And good winemakers are not just farmers or growers, not just chemists or alchemists, and not just hardworking astute business people - making wine combines all three, in all weathers. And they are human beings who grow old so have to hand on their businesses, and they have families some of whom willingly take over from their parents but some who simply follow other paths in their lives, so that wonderful vineyards change hands, change function.
All weathers has been on our minds this summer as temperatures soar and drought begins to affect even the deep-rooted vines. When we came here it was a given that vineyards could act as firebreaks, but recent summers have been so dry that vines burn too. And yields of grapes have reduced for lack of water - here in the south it is no longer sure that vines can go with out extra irrigation.
One of our favourite local vineyards, Château Grès Saint Paul, is still in business. Its owner, Jean-Philippe Servière, is the 7th generation of his family producing wines there, he has told us he wants to retire but there is no obvious successor, and and it is not clear what the future holds, but over nearly 20 years here we have often had a warm welcome there and enjoyed many of his wines. They are still on the shelves in our local grengrocer's
Château Aiguilloux in the Corbièeres area west of Narbonne was one of our earliest discoveries and we were pleased to call there again on our way back from a holiday in April. Son Georges and his wife have now taken over from his parents - we first met Georges as a restaurateur in Narbonne on his parents' recommendation, and apparently he and his wife still cater for wine-inspired events at the domaine.
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)
I've written often of the Chemin des Rêves which we've known for nearly 20 years, from a young family starting our in Grabels, Benoit Viot and his wife Servane have flourished as winemakers north of Montpellier, building their own home in a vineyard in the Pic Saint Loup appellation (of which he was recently président) producing also wines with the Grès de Montpellier label. We were delighted to go back this summer with friends Judi and Alex.
The Pic Saint Loup, backdrop to the Chemin des Rêves vineyard
New wines from old grape varieties - we have discovered, via our friendly caviste (another Benoit) at O Pêcheur de Vin a new winermaker just down the road in Mauguio, called La Clausade, which specialises in wines from grapes which are disease resistant - som red, but mainly white and rosé wines from varieties I'd never heard of and which are not in any of our wine grape guides; but which are uniformly deliciious as well as unusual. We have reordered... Muscaris, Soreli, Floreal, Souvignier gris, Artaban, names to conjure with. It seems random to pick wine grapes for their disease resistance, but it works as well as being ecological As always, the people who run it are added bonuses in discovering these places, and ours is becoming an area of hidden pleasures in the wine world.
A lttle further east, across the river Vidourle in the Gard, is an area, the Vaunage we often go to for meetings of our French language group (including French people trying to improve their English as well as helping us with our pronunciation and translation. One town/village we often visit is Calvisson, with a good winemaker theh Domaine Roc de Gachonne, whose red wine Puech du Rouge we quite frequently receive at our language group's shared lunch. It's called multi-tasking!
Not my phhoto, but that of someone patent who waited patientlyfor the storm over the Pic Saint Loup
I began writing a rather downbeat piece about ageing, but then stopped and changed tack. We have many friends of around our age, and some are fortunate like us, with senses more or less whole, lots of good friends near and far, partners we love and care for. I think a lot of my friends, like me, live largely on the experiences we’ve accumulated, and even if life is now restricted by pain or illness there is a wealth of memory and inner enjoyment to enjoy. I know about music and am so thankful to be able to listen, supported by the wonder of recordings. And I am endlessly grateful for the gift of sight, the ever-changing skies and light in the place we live, and the sensory pleasures of food and drink.
This is a birthday month for us, and has been throughout my life - my grandfather, my mother, the lady I married and numerous friends all share this season of mists and mellow fruitfulness (mists not so much in our warmer climes). It ssms also to be a month for visitors - my nephew David has just left, and a dear friend from the US will be with us soon. The summer heat has moderated and the storms have stayed away from Lunel, but seem to have broken all around us, wiith some floods in Montpellier. I'm reminded that when we first came on holidayto the Languedoc, almost 25 years ago, there were bad floods in Nîmes and we had to trek up and down to our holiday flat onn the stairs because a lift shaft was flooded. It keeps suprprising me that Lunel is so dry when there are floods and storms all around.
We enjoy visiting friends and receiving them here for our regular language groups, and in the lovely warm weather just now we can sit outside. Our reading at the moment is from books by Eric-Emmanuel Schmitt. The ones we have read so far are related by boys born into Jewish families - one, Monsieur Ibrahim et les fleurs du Coran is about a lad abandoned by his parents and adopted by a local Muslim grocer - Moïse becomes Mohaùmed - and the one we are currently reading, l'enfant de Noé, is about a boy who is separated from his parents to be hidden from the Nazis in a Catholic boarding school in the early 1940s . The writing is humorous despite the difficult stories. Both are narrated in the voices of the boys. We have a faithful group of 20-30 people who come regularly, and an average of 15 or so in our weekly gatherings.
Of the many upsetting things in the world around us, killing innocent people by powerful weapons in Gaza and Ukraine and the complete disdain shown by many politicians for the lives of those they are supposed to govern are open sores in the daily news.
We think more and more of our dear friends, with whom we must now keep in touch by electronic means if nothing else is possible. With advancin age, calm and wisdom are lurking somewhere, but on the surface are all the ailments and frailties that beset us. It is easy to doubt your mental capacities, (sometimes, we know, with finite symptoms of mental deterioration). And even if you are compos mentis, it is easy to wonder and doubt.
My own difficuulties are mainly in walking (as regular readers will know), but it's important to take care with balance and avoid falling over! Many of our family and friends have a variety of more or less trying difficulties, including the very distressing loss of sight and/or hearing for musicians after a lifetime of active performing at all levels. Things like arthritis can interrupt other kinds of art too. And all the infirmities bring with them increasing isolation as travelling becomes more difficult. Moving house to better adapted premises is a good theory, but the emotional wrench of leaving a good home and neighbourhood is huge. I think few people have really begun to think about the challenges of living a lot longer than our grandparents.
wonderful meal at the Maison Soubeiran last week,,complete with birthday candle from the restaurant
We have just heard the very sad news of our friend Clare McCarty. She and I met through young Quakers when I was working in Friends' House in the early 1970s, and later Mary and I met her husband Norman and stayed with them in their home in Lisburn. Clare became a leading figure in the housing sector in Northern Ireland. At our age the death of friends is not uncommon, but to lose a friend so much younger than me is a shock. She was one of 2 of two women friends with the distinction of receiving an OBE for her work in the crossover sector I also worked in, linking voluntary, community and statutory sectors and I feel proud to have known her.
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
The very hot weather of the past months seems to be waning thank goodness, and we have had a couple of short storms, but in the very dry conditions here the risk of fires continues very high, and it is not just folk rumour that many such devastating fires (such as the one which destroyed an area the size of Paris a week or two ago) turn out ot have been started deliberately. It is really shocking when an already dangerous situation is aggravated by such vandalism. We read that in the UK too there are fires, in Yorkshire for example. Hre in France, water supplies are running low - the Canal du Midi may have to close to navigation because of lack of water. We need more rain - only 30mm in the past two months, most of it in the past couple of days.
Over the summer months our usual conversation groups (mixed French and English people, improving our understanding of one another's languages through reading and discussions together) shrink as people go on holiday, fmaily visits etc. So our group recently has sometimes been reduced to single figures, but those who are free still like to meet and reward our morning's work with a shared meal.
skies clearing after a noisy storm last week - most of the rain fell to the north of Lunel
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.
Another year of the Tour de France has ended with a week of the women's race across the middle of France, emphatically won by Pauline Ferrand-Prévot. But one of the highlights was the emergence of Maëva Squiban who won two of the penultimate stages in the mountains. She will be one to watch. Sadly our ability to see the Spanish grand tour, the Vuelta, willl be very limited. We really must sort out access to tv channels.
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.
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.
This blog should have mentioned food more often than it has. As much as wine, we enjoy our food and relish the local produce, particularly fresh fruit and veg, together with herbs and spices.
The salt pans at Aigues Mortes - pink colour due to algae in the water
But salt is both local and important. Interestingly the articles about French salt on the internet are almost all about the Guérande and other places in the north and west of France. But here it is the salt production of the Camargue, and in particular of the salines of Aigues Mortes, which is most prominent. The names Aigues Vives and Aigues Mortes are both local place names - 'alive' and 'dead' water, fresh and salt water in other words. And Aigues Mortes is a local centre for the production of salt. The fleur de sel which we use at the table is the relatively small quantity of flaky salt which is left on the surface when the water eveporates. Of course, salt is essentially sodium chloride, but the fleur is a little diffferent because the evaporation leaves higher quantitites of minerals like magnesium - it is prized by chefs and a lot more expensive than the table salt we use in cooking and so on.
Now into August, and we are looking forward to visitors in a few weeks' time when I guess the heatwaves may have subsided. Lorry fires on the motorway are a regular part of the news.
To all our friends and relations, enjoy the rest of the summer.
The Tour continued after the first rest day, and some minor surprises like Pgačar falling off without much prompting in a fairly flat part of the race near Toulouse, some rather caustic comments about other competitors waiting for him (no skin off their noses I think although some off his legs) and several riders sharing the glory, including a nice Irishman Ben Healy who stayed in the yellow jersey for 2 days. I'm sorry when being sporting becomes a dirty concept, like today's politics really.
At the end of Thursday's first Pyrenees stage normal service had, in a sense, been resumed - Pogačar back in yellow after a typical and jaw-dropping ride up the final steep climb. OK, he may be using unfair magic, but if so Vingegaard and those behind have somehow missed out on the trick. Actually I am (we are) excited and awed by the compact power he shows, As I write the next rest day is approaching, and they are heading for Carcassonne. The race passes through Revel, an area we know well because our friend Barry, of whom I've written before, lives near there. Next week to the east and other places we know well from our earlier twinning excursions.
There is a lot of yellow around during the Tour - my wine mag got into the act
The local paper meanshile is fairly typical of local French opinion, bemoaning lack of French winners of late - "Les Bleus plutôt pâles" - French sports teams commonly known as les bleus and pale blue being, well, pale.
When the Tour reaches Paris, this year instead of just circling the Champs Elysées the race will add in two climbs towards Montmartre and the Sacré Coeur. Wout Van Aert (who seems to be the official complainer in the peleton - he has just also objected to retaining sprinters who are too slow up hills) thinks it is dangerous. So are a lot of things that happen in bike racing. Anyway, sports rules are by definition arbitrary.
Memories of many no longer with us - our parents and my brother Tom, Ruth and Heinz Liebrecht, Malcolm Thomas. Good people to remember and there are those of you who are still alive, happily.
Others who were at the wedding are sadly no longer with us - Ted Milligan, Polly & Arlo Tatum, and others. We miss them all but are so glad of the memories they leave. More photos in a future blog.
Meanwhile, back in the tedious world of admin, we have to keep proving we are still alive and entitled to pensions. There are at least three different systems demanded by different pension providers, all of them complicated by the fact that English people do not recognise French, nor the French English. It can all be got round, but it always seems an anxious moment for us.
The hot dry weather and mistral (strong northerly wind - sometimes it it is north-westerly, coming over the Black mountains and called the tramontane) all combine to make the countryside like tinder, and this week we have had fires to the west of us north of Narbonne, along the A9 motorway, and to the east in the hills above Marseille. The immediate causes are often unclear, but can arise from human idiocy. One person was reported to have been towing a lighted barbecue on a trailer! With the Fête National coming up, fireworks are planned everywhere despite the risks. Climate change denial?
Our enjoyment of the Tour is undiminnished - Pogačar back in the lead and some fiarly flat stages this weekend. The local paper had a good article on what some people call mechanical doping, and I have summarised this iin English in case it interests anyone. "Looking for motors. In a former life Nick Raudenski hunted terrorists. Today he hunts motors in the bicycles of the Tour de France. The American is now in charge of the fight against technological fraud at the UCI (Union Cycliste Internationale). "When I arrived the first thing I tried to do was to put myself in the mind of a cheat. How could I use a motor without being caught by the inspection patrols? I worked in antiterrorism. An idiot tried to blow up an aeroplane with a bomb in his shoe and now everyone has to take off their shoes at the airport. The same thing in cycling"
Although technological fraud is often cited, only one case (in 2016) has been proved in the world of professional cycling, the 19-year-old Belgian Femke van den Driesse used a hidden motor in the world cyclo-cross trials. Since then millions of checks have been carried out without finding anything. "Why has nothing been found? This really bugs me. My job is get to the bottom of it." In the 2024 Tour 192 bikes were x-rayed, always including those of the stage winner each day and the yellow jersey holder, 17% more than in 2023. "This year there will be even more" says the UCI, which is also running a programme of financial and other incentives to encourage those who provide useful intelligence.
In June in Combloux at the Criterium du Dauphiné, Raudenski demonstrated the checks he carries out at the finish line where he intercepts riders, and on to the tent just behind the podium where bikes are taken apart and examined - "at the beginning of each stage the commissaires check bikes with the help of magnetic scanners. They can alert us by phone if they notice anything suspicious. Nick and his team have portable x-ray machines round their necks, checking machines from top to bottom. "These meters are so good they can see the serial numbers of cables, eveything going on inside a bicycle. ...we know exactly what we' re looking for."
Raudenski and his team keep up with the latest technology, comparing it with what happens in other sports like Formula 1, for example smaller and smaller batteries like those used to power drones - there has been enormous progress in these technologies in recent years. Nick is very confident in the effectiveness of the tests and checks despite the doubt cast on the UCI's capacity from time to time. "I really want people to believe, when they see an amazing climb or an explosive attack that they are seeing something genunie, not saying 'oh, they're using a motor'. As for the suspicion that the UCI covers things up so as not to damage the image of the sport, he is categorical "that's out of the question. whatever may have happened in the past, that is not my style. If we find something, we'll make sure it is heard loud and clear."
The race is not just about winners, but those who make exceptional efforts. Yesterday there were unusually two sharing the combativity prize: "The race jury came to a rare and exceptional decision. On stage eight of the Tour de France, there would be not one, but two winners of the combativity award: TotalEnergies pair Mattéo Vercher and Mathieu Burgaudeau. The French duo broke away from the peloton with 80km to go into Laval. It was a day billed for the sprinters, and while everyone else resigned themselves to that fact, Vercher and Burgaudeau dared to believe a different result was possible. Team-mates in unison, their white jerseys transparent with sweat, they took off away from the bunch, and ploughed in tandem through the countryside of western France for an hour and a half.
The effort, in the end, was fruitless; both were swallowed by the peloton, and Lidl-Trek’s Jonathan Milan won the bunch sprint. It was, however, a historic occasion – only the fourth time in the Tour's history that the combativity award was shared.
The canicule (heatwave) continues although the early mornings and late evenings are pleasantly less hot. We have moved our sleeping quarters downstairs. Interestingly our hugely improved roof insulation has meant that the nights upstairs are much warmer because the heat from the roof slowly seeps out then.
This month will be taken up for us watching the cycling. Cyclists of course have to plough on through the hottest weather, and it has been settled over a lot of France these past few days.
These 2 are well in evidence even at this early stage of the race
The first edition of the Tour de France was in 1903. Since then much has happened - our local paper has published a nice leaflet to mark the links between the race and our region, involved in a third of all the stages this year. Names and events to conjour with - Laurent Jalabert, a successful competitor now a constant presence in the tv commentary team, competitors like the Colombian Nairo Quintana, key places like the rose city of Toulouse which is the jumping-off point for the Pyrenees and our local city of Montpellier which will host a rest day this year,
Cheating is back in the newspapers, though without much hard news I can see, just the suspicions that often go with a gloomy feeling in France that French riders are not doing too well. Apart from the hard cases like Armstrong it all comes down to the gut feeling that being that good is improbable. Apart from using illegal substances and 'doping' machines (essentially hidden motors), the permitted changes in machinery and nutrition are enough to make huge changes in performances, and watching the ssecond stage today got me thinking, not just about changes in equipment and nutrition but about the huge infrastructure of support people, cars following every team with spare bikes and young blokes rushing to replace faulty bikes. At any given point it must have been difficult to decide shat sas legal, and who had an unfair advantage.
Bikes have changed from steel and aluminium to carbon fibre, with disc brakes, electronic gear changes and many more derailleur gears, controls all electronic and sometimes using bluetooth, tyres filled with self-sealing liquid and no inner tube. Over the years there have been frequent rumours about mechanical doping, with little hard evidence of cheating, but the mechanical advantages of new equipment have made a huge difference to the lightness and potential speed of the bikes. Nutrition has also changed, both the science and the materials - careful calculation of energy needs, fluids and gels easily carried and absorbed, calculated not just for the trrain but adapted to the needs of individual riders, with timing of a what to eat and when.
Away from cycling, Language is changing and not, for me, for the better. The words batter (in cricket - formerly a cooking ingredient for pancakes and yorkshire pudding) and train station (which we always used to call a railway station) are now accepted terms. Not sure why batsman was no longer acceptable for a male cricketer, although the female of the species did and doesneed a separate term. But things move on, and I do accept that since long before Shakespeare the English language was and is living.
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:
A topical word: I tried autocratic, the iPad threw up autocorrect. Very symbolic!
a mistype - is a canincule a hot dog? (canicule with only one n is the French for heatwave)
our son and daughter-in-law have been in Brittany but are unlikely to have encountered such onion-sellers.
I've just read bad news about champagne production: "The conditions endured by grape pickers in the Champagne region of France have been put under the spotlight by a human-trafficking trial that began in Reims last week. Svetlana Goumina, the Kyrgyz owner of a recruitment agency, is accused of luring 57 West African migrants, most reportedly undocumented, to the region from Paris, on the promise of well-paid work." The latest in a catalogue of mistreatement of seasonal agricultural workers; as often, I refer back to fictional parallels such as the excellent book A Short History of Tractors in Ukrainian, by Marina Lewycka (strawberry pickers are the victims in this case).
A joke which I hope does not offend anyone: "A Texas farmer went on vacation to Australia. He met up with an Australian farmer who proudly showed off his wheat field. "That's nothing" said the Texan. "Back home, we have wheat fields that are twice as large as this." Next the Australian pointed out his cattle. "They're nothing," said the Texan. "Back home, we have longhorns that are twice as big as your cows." Just then, half a dozen kangaroos bounded across the road. "What are those?" asked the Texan. The Australian replied, "Don't you have grasshoppers in Texas?"
Our newly surfaced road - not sadly our own cul-de sac de la Bréchette, which is long-neglected
...and finally the annual delight of our artichoke coming into flower
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 Criterium du Dauphiné which we've just watched on French tv is soon to be rechristened the Tour Auvergne-Rhône-Alpes which, a friend points out, does not trip off the tongue but does more accurately describe the routes from central France south-east towards and up into the high Alps. It is, in any case, a major event in the run-up to the Tour de France now only a fortnight or so away and, like the Tour, reliably shown on French tv. There are three or four good reasons to watch these daily broadcasts - it helps to improve our French by listening to the high-speed rattling of commentators; it gives the best view of the main Tour contenders; and the views and scenery are magnificent. As with other French tv, the use of aerial photography is something that you can't get at ground level, just as the following of a whole race using other vehicles gives a completely different perspective than you could get standing by the roadside. But shoals of folllwing cars bring their own hazards on narrow roads.
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.
Anyway, now we look forward to the Tour soon. It is coming by Montpellier but not, I think, very near us unlike the two years soon after we arrived when it passed by the end of our road. They will be going up Montmartre on the last day in Paris, a thing some riders think is risky but will certainly add variety to the sprint round the circuit of the Champs Elysées
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
The first days have gone more or less as expected - Pogačar, Vingegaard and assorted Dutch and Belgian riders up the leader board, the right mix of French riders near the top to keep the local interest up, though never quite strong enough to get right up there. Over the first three days the lead changed, but we'll see by the end of the week when the mountains take their toll. Meanwhile the scenery is a joy to watch as always in televised cycle races. It is a shame the riders do not see it, especially (they say) because racing has speeded up so there is no time to admire views. The normal speed on the flat is faster than a town speed limit for motors.
Thhis past week has seen the start of resurfacing work on the D24 road past our little cul-de-sac. Slow work made even more sluggish by the bank hoidays that litter the month of May. But for all the anxiety it provokes for me, the reality is that scarcely anything seems to be happening. Pictures of the preparations and improvided parking follow.
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!
The wonderful flowers of the ornamental grenadier (pomegranate) whose hedge blooms year on year
Old news for most of you, when we moved to France we were citizens of the EU Now, thanks to what most people now see was a political mis-step, the UK is well and truly Brexited The rather mealy-mouthed stance taken by the so-called Labour government led by Keir Starmer is to try and creep back in without too many people noticing. Politics in like that, compromising in plain sight, watering down principles on the way. So capping and removing welfare benefits is dressed up as financial prudence and the poorest people struggle more while better-off people like us are cushioned at every turn.
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.
This year we have been more than usually anxious about money, because we rely on our Brtish bank accounts for everyday purchases, and every now and then there is a glitch when someone elsewhere in the world decides to steal money from us. Luckily our banks are on the lookout for this and twice (once on a French account, another on a UK one) we have had to cancel cards and wait for new ones to come. Last time the swindlers actually got their hands on a lot of money, but the French bank refunded it quickly. This week we received a letter asking us to phone the bank, and then had to go through the meticulous checks to get through to a real person. This one was in India or similar, and of course you always have to remain calm despite the feeling of advancing panic. But all's well that ends well. We keep reminding ourselves that the people who work in the call centres have tough jobs, are not to blame for the processes they have to operate and have little room for discretion.
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!
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.
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.
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).
All 3 tortoises are thriving after hibernation for the 2 older ones - the little one still lives indoors!
Not everyone knows exactlyu where we live in France, so here is a recap. Next year we'll have been in Lunel for 20 years. We have few regrets other than distance from family. We are midway between 2 historic cities, Montpellier and Nîmes, on a rail link which can tansfer us rapidly onto the TGV line to Paris, and with 2 local airports less than 30 minutes away though we rarely fly now. We are close to the A9 autoroute (the busiest motorway in France apparently) which takes you quickly t o Spain, Toulouse and Bordeaux as well as to the A7 north-south route up the Rhône valley. Lunel is less than 10 km from the Med,, and not much further from those hills to the north, the inland Cevennes; but we often escape the heavier rain inland - the risk here is often too little rain rather than too much.
Another crop of lemons on the way
I started this post at the end of April in bright sunshine after a quick overnight shower - nevertheless I was able to mow the lawn first thing in the morning, and (starting early) I have also been for my annual round of blood tests. Like a lot of French healthcare these are precautionary - an underactive thyroid is the only known concern, but there are 15 tests on the prescription. We find the blood testing service very efficient, and for those like me who wake early the lab opens at 6.30! And by the end of the afternoon the results were with me by email - all well except the marginally high uric acid which I know is the result of liking alcoholic drinks, and causes twinges of gout. The price of being a wine enthusiast!
tortoises sunning themselves this spring
Some lovely white flowers from the garden this Mayday, and of course the white flower sold everywhere in France today is the lily of the valley. It has been a flower symbolising good luck in France since Charles IX in the 16th century, and has been officially recognised for the Fête du Travail since 1936. It is pretty but deadly poisonous, and we have none in our garden. The production of the flowers is a multi-million euro market apparently centrered around Bordeaux.
The yellow iris is called baroque prelude, one of Mary's favourites
for patreon i wrote about getting stranded in tomorrowland as an 8th grader, michael sorkin’s classic essay “see you in disneyland” and the legacy of 1990s disneyfied architecture and urbanism today
Hello everyone, sorry to go so long without posting something. I caught covid in August and it’s taken me months to start feeling relatively back to normal. I am still struggling with fatigue and some neurological problems, so thank you for your patience!
It is rare that the McMansion ever approaches the mythical, though it is, of coursed, steeped in its own mythology – of bootstrapism, castle doctrine and, importantly, a total commitment to individualism. No one bereft of a sense of personal mythos would build some of the houses I’ve posted about on this site throughout the years.
However, rarely do those houses sincerely believe their own myths, express them so utterly. Often, there’s a bit of cheek involved in all those Corinthian columns, even among the knockoff Rolex set. Whenever one does swallow the (blue) kool aid, well, it’s very important to me. And so, from the forgotten underwater past of the greater Houston suburbs, I bring you: Chud Atlantis
(it is always more fun to quote the front bit of that Shelley poem, because the second bit has been misappropriated by Reddit.)
Atlantic in size (8 bedrooms, 9 baths, 10,000+ square feet), and in price ($2.8 million), Chud Atlantis is proof that, for better or for worse, we used to build things in this country. (Just kidding, this house was built, astonishingly enough, in 2023.) Its existence is baffling to me not only because it is anachronistic (it belongs in the Bad 70s) but because it is Texan. This house is, in the fullest sense of the word, a transplant. Orlando is that way.
(Shall we enter, then, the eye-watery depths?)
It’s important that you understand that the most significant thing about this house is that it is blue. In an age of gray supremacy, it is nice to know that tacky can still come in more unconventional shades. No one prior to this has ever looked at a piece of dyed marble and thought: I need to make this my entire personality. Not even in the 80s!
Like many McMansion owners, these do not know how to decorate. One can only presume that the furniture involved is so heavy that staging also wasn’t an option. This makes the house a historical document because from this point onward such rooms will henceforth be yassified with AI.
this kitchen begs for a concept food. it begs for ‘gold leaf hamburger.’
I’m not entirely convinced that the Rococo period was ugly, but its imitators commit crimes unerringly and without fail. Furniture like this sits in a room like a big glob of meat. Instead of saying 'i’m rich’ what it actually communicates is: 'i’m heavy.’
I don’t know how you can make so much money and yet have everything you do look like the bootleg Chanel rugs they sell outside of the subway. Like, can’t you buy the real thing, dawg?
This may also be the first house whose broad aesthetic is executed by way of direct to consumer printing. The FedExification of art. Or something like that. After all, the internet loves a neologism more than it loves its elaboration.
“What should we put here to fill out this room” all-time bad answer.
Anyway, without further ado, the back:
The suburban mind yearns for the miniature golf course. The suburban mind yearns for water while it all dries up.
Not into recurring payments? Try the tip jar! McMansion Hell stocks, much like mortgage-backed securities only ever go up! For non-architecture stuff I also have a substack where I write about things like the ring cycle and going to the eye doctor.
Sometimes a house is so ugly, disgust boomerangs back into a form of respect.
This is a rare phenomenon, one which should be treated seriously. I’ve been looking at ugly houses professionally for almost a decade now and I can say with confidence that there are only a handful of true goose eggs that meet the mark. This house – this remarkable, revolting house – located, of all places, in Randolph County, North Carolina, is perhaps the finest goose egg a rogue and most certainly confused contractor could possibly lay.
Yeehaw, man. For the curious, the house is on the market for over 500 grand despite being badly sited and measly 2600 square feet. Most of that is devoted to the lawyer foyer which is not the choice I would personally make, but hey, to each their own.
Most of the houses on McMansion Hell these days are submissions from members of the McMansion Hell Patreon, either in our discord server or on our livestreams. This one, however was a total fluke. I came across it by accident because my brother is looking to move to the area in order to be closer to my folks. (I doubt he’d be interested in something this, uh, unique.)
Now, in all these years, I’ve never devoted an entire post to the exterior of a house. As they say, there’s a first time for everything. There is so much going on with this house, all of it in direct opposition to the concept of taste, it requires a deeper investigation than the initial exterior image usually allows. (Also the entire interior is, as one might expect, entirely dark gray, complete with that awful washed out laminate flooring.)
(here is a sneak peek inside. the rest is not really important nor interesting.)
Anyway, without further ado, let’s hit it from the top.
First off, no, I don’t know what is inside this house’s giant, hammerhead-esque forehead. It’s not supported by anything so my assumption is, well, nothing. They put this in there for the sheer aesthetic love of the game.
The vinyl siding and black trim will continue until morale improves. Also, I zoomed out here to include the forehead (fivehead?) just because the scale is INSANE – that’s like a 50-50 wall-to-fivehead ratio. Honestly, even though things in the world are pretty dire, I wouldn’t trust that cantilever with my life.
The window layout on this thing makes me wonder if the people who put it together have eyes that can see and a brain that connects to them. Now, I’m not going to invoke the Greek orders or anything, but I am going to say that every single architectural rule is being brazenly broken here. Total impunity. The window and door don’t line up at the top, which is the bare minimum of common decency. Then there’s that little guy pulling a Leeroy Jenkins up in the corner. You go dude.
The trim on these masses is starting to look AI generated but it’s probably just the HDR every realtor uses. The FaceTune of the field. Anyway, I think it’s a bad idea to put what looks like builder grade wood flooring on the outside of a house. It’s giving mold. It’s giving sunbleaching. It’s giving Etsy.
As we can see, another familiar McMansion Hell enemy has also made an appearance: the prairie mullion window. There is no reason to use this window unless it involves building a fake bungalow, but the worst possible place to use it is in this particular situation. It’s the only window with white mullions, it looks weird with the siding, and it’s not exactly “”“modern”“” or whatever this house is supposed to be.
(Often I wonder if some people believe that modernism is just “doing some stuff with squares” and the more squares there are the more modernist it is. Probably not true, but then again, I’m not the one pulling massive profit on houses that look like doo doo so jokes on me.)
Zooming out again because context still matters even in the most nonsensical situations. The funny thing about this house is that the only normal part of it is the front door and even then… what?? Also, look at that siding-less patch of brick on the right. As though to say: haha! Finally, I love how the stairs lead down into a bunch of rocks. Serves you right!
Thanks to advanced screenshotting technology, we can see that there are also prairie mullions on these other windows, it’s just that they’re a more reasonable black. Don’t worry though, the windows are still offensive. They’re two windows stuck together in order to give the impression of a single continuous one. (Remember the inside shot?) Nice try, bucko. Second, why don’t the two windows meet where that little band of siding is? Well, we all know the answer to this question. (We don’t, in fact, know the answer to this question.)
This is my favorite part of the house. It’s almost good, to me, which is why I saved it for last. I have no idea what the hell that glossy composition book siding is but I love it. I’ve never seen it before. I also like how they’re doing a weird entablature-quoin combo thing with it, but only on the right side of the house. There’s some great five-cornice action going on but, thanks to the precedents set by truly mid postmodernism, it works.
Unfortunately there are some downsides here. What’s the deal with that tiny, skinny stone? brick? veneer? Second, why is the siding just hanging off the edge like that? That whole little section where the three (four?) cladding meet is precipitous. The cheapo off-white developer special garage door with the little trad elements is a nice gesture, one that tells you life has no meaning. Why bother?
Anyway, after all that, if we put it all together again, we get this:
I know I am just a blog about ugly houses but I want to say something important here: the ruling class in this country does not want you to have affordable housing. They don’t want you to have clean, reliable public transportation. They don’t want you to have access to groceries you can afford. If something bad happens to you, they don’t care if you live or die. If you lose your home, they will hole up in their penthouses, McMansions, and mommy-bought apartments and tell you it’s your fault – but it’s not. It is theirs. Everything from budget cuts to rent hikes, is their fault, their way of ensuring that the city becomes a place made up solely of people like themselves.
Zohran Mamdani is the only high profile candidate I’ve seen in my narrow, millennial lifetime running for any position – least of all the mayor of the biggest city in the country – on a platform of decommodification in terms of access to food, housing and transportation. City-run grocery stores would ensure that food stays affordable because there is no profit motive. While some are critical of his policy of fare-free transportation (as opposed to spending the same amount of money improving services), given the amount of policing involved in watching the fareboxes, it’s something I’m coming more and more around to.
In demanding a rent freeze, Zohran is one of the only politicians able to articulate a direct plan for keeping people in their homes at a time when rent is skyrocketing with no end in sight. Zohran is one of a limited few in this miserable, cowardly country who are willing to speak out for the rights of Palestinians being murdered en masse by Israel. A vote for Zohran is a vote for the idea that better things are possible and, if you ask me, I think we live in such dire times that we’ve begun to forget this fundamental truth: things do not have to be like this. We do not have to live under the jackboot of privatization and exploitation forever. That choice, however, is up to us.
I am forever skeptical of the power of the ballot box to enact lasting change, especially in recent years. In fact, I am the most skeptical of electoralism I have ever been. However, why is it that the right can use what little sovereignty and enfranchisement is available to us to enact sweeping, if devastating changes, and yet, when the opportunity presents itself to the left, all we hear is that such things are no better than pissing in the wind? The answer to this question, of course, is that the ruling class is perfectly content with a party that hinders rather than ushers in change. Zohran may be using the sclerotic party system we’ve been doomed to inhabit, but despite these limitations his candidacy has surged immensely in the last few months, and the momentum of the people is on his side. This may be one of the last chances wherein one can attempt a truly progressive campaign like this.
Now that things are heating up, the ruling class, the backers of Andrew Cuomo, an abuser of women and a man responsible for the untold deaths of the elderly because he valued profits over their lives so early on in the pandemic, will stop at nothing to make sure that Zohran Mamdani does not win, that things stay the same. That the rent goes up, that the grocery prices continue to explode, that New York City becomes the playground of the rich and famous at the expense of everyone else. The party will try to intervene in undemocratic ways just like they did with Bernie Sanders in the 2020 primary. There will be untold lies and accusations, the press will abandon what few journalistic obligations they still abide by, and it will get ugly. There are even rumors that Cuomo will run as an independent even if he loses the primary, which, to be honest, isn’t a bad tactic – he’s just the worst guy to be using it.
I realize this post may be annoying to some (hell, I myself live in Chicago), and I’m sure there’s some rightful criticism for my not having used my blog like this before. (However, for those of you who don’t know, I usually write about all manner of politics in my column at The Nation!) That being said, if you follow me and you live in New York City, rank Zohran #1 and Brad Lander #2. DO NOT RANK SUBURBANITE BIKE LANE-PARKER ANDREW CUOMO.
Anyway, that’s all. I’ll be back with a new McMansion Hell this Friday, so stay tuned.
FYI, this post is a little more NSFW than usual with the language.
Usually I think McMansions are kind of funny. Sometimes, I even like them. If I didn’t like them at least a little bit, I don’t think I’d be running this blog for a solid eight years and counting. Some McMansions are so strange and so fascinating in their architectural languages (it’s never just one language) that they test the boundaries of what residential architecture can do on an individual and often ad hoc level. Others so cogently and often whimsically express various cultural fascinations and deeply entrenched American ideas of what prosperity looks like (read: neuroticisms), that, as a sociological text they remain unrivaled.
But some (many!) McMansions are, to put it bluntly, evil. And it is these McMansions that reveal the ugly truth beneath the ugly architecture: that the McMansion is a manifestation of power and wealth meant to communicate that power and wealth to others as explicitly as possible, and that it does so in a country besieged by brutal and inescapable income inequality. In our present political moment characterized by extreme and deliberate cruelty, fear, and baleful destruction of all that is pro-social in nature (and nature itself), I figured it was my duty to show my readers a house that embodies these sentiments, one we can all use to assuage some of our perceived powerlessness by way of mocking the shit out of it.
There are a lot of fake White Houses in the US. Most of them can be found in or around the area of McLean, Virginia, the ground zero of DC blob sickos whose job it is to mete out the ratio of lethality and economy for weapons manufacturers. This one, however, is in Indiana, outside of Evansville. It was built at the apex of theme park mindset in architecture (1997) and is on the market for $4.9 million dollars. However, don’t be fooled by this opening exterior shot. It takes literal drone footage to show how unhinged this house actually is. In reality, the White House facade is akin to the light dangling from an anglerfish, luring the unsuspecting victim in…
Completely NORMAL amount of money at play here!
There are some images historians (if there are any left) will look back upon and say, such a phenomenon truly would not be possible without an abundance of cheap oil and derivative products. Fortunately, in the immanent post-neoliberal chobani yogurt solarpunk utopia, this house will be converted into a half ruin garden (though this will take some time with all the plastic) half public spa complex. A better world is possible, but only if we imagine it.
Pro tip: there’s a way of saying “wow it’s so big” that can land as the most devastating insult in the rhetorical lexicon.
I’ll be real, the armchair thing is a new one for me, too.
(Rise and grindset voice): Inside you are two lions. Both of them are hungry for prosperity and success. Let’s get this bread, king.
Not to do gender here, but compared to the rest of the house, this is a “my wife got her way” room if there ever was one.
Fixer Upper was basically 9/11 for “architectural foam trappings” and “color.” Look what they took from you…
Honestly, what a great juxtaposition. This is what that book The Machine in the Garden was all about. (No it’s not.)
Half of this post tbh:
Well, that’s it for this extremely upbeat and positive McMansion Hell post in this extremely positive and upbeat time we are living in. Join us soon for the concluding part 2 of the Neuschwanstein Castle series, especially if you like beautiful, psychosexually crippled swan boys (real and fictional) and kitsch theory.
Neuschwanstein Concept Drawing by the stage designer (!!) Christian Jank (1869).
There exist in architecture clear precedents to the McMansion that have nothing to do with suburban real estate. This is because “McMansionry” (let’s say) has many transferable properties. Among them can be included: 1) a diabolical amount of wealth that must be communicated architecturally in the most frivolous way possible, 2) a penchant for historical LARPing primarily informed by media (e.g. the American “Tuscan kitchen”) and 3) the execution of historical styles using contemporary building materials resulting in an aesthetic affect that can be described as uncanny or cheap-looking. By these metrics, we can absolutely call Neuschwanstein Castle, built by the architect Eduard Riedel for King Ludwig II of Bavaria, a McMansion.
Constructed from 1869 through 1886 – the year of Ludwig’s alleged suicide after having been ousted and declared insane – the castle cost the coffers of the Bavarian state and Ludwig himself no fewer than 6.2 million German gold marks. (That’s an estimated 47 million euros today.) The castle’s story is rife with well-known scandal. I’m sure any passing Swan Enthusiast is already familiar with Ludwig’s financial capriciousness, his called-off marriage and repressed homosexuality, his parasocial obsession with Richard Wagner, his complete and total inability to run his country, and his alleged “madness,” as they used to call it. All of these combine to make Neuschwanstein inescapable from the man who commissioned it – and the artist who inspired it. Say what you like about Ludwig and his building projects, but he is definitely remembered because of them, which is what most monarchs want. Be careful what you wish for.
Neuschwanstein gatehouse.
How should one describe Neuschwanstein architecturally? You’d need an additional blog. Its interiors alone (the subject of the next essay) range from Neo-Baroque to Neo-Byzantine to Neo-Gothic. There are many terms that can loosely define the palace’s overall style: eclecticism, medieval revivalism, historicism, chateauesque, sclerotic monarchycore, etc. However, the the most specific would be what was called “castle Romanticism” (Burgenromantik). The Germans are nothing if not literal. Whatever word you want to use, Neuschwanstein is such a Sistine Chapel of pure sentimentality and sugary kitsch that theme park architecture – most famously, Disney’s Cinderella’s castle itself – owes many of its medieval iterations to the palace’s towering silhouette.
There is some truth to the term Burgenromantik. Neuschwanstein’s exterior is a completely fabricated 19th century storybook fantasy of the Middle Ages whose precedents lie more truthfully in art for the stage. As a castle without fortification and a palace with no space for governance, Neuschwanstein’s own program is indecisive about what it should be, which makes it a pretty good reflection of Ludwig II himself. To me, however, it is the last gasp of a monarchy whose power will be totally extinguished by that same industrial modernity responsible for the materials and techniques of Neuschwanstein’s own, ironic construction.
In order to understand Neuschwanstein, however, we must go into two subjects that are equally a great time for me: 19th century medievalism - the subject of this essay - and the opera Lohengrin by Richard Wagner, the subject of the next. (1)
Part I: Medievalisms Progressive and Reactionary
The Middle Ages were inescapable in 19th century Europe. Design, music, visual art, theater, literature, and yes, architecture were all besotted with the stuff of knights and castles, old sagas, and courtly literature. From arch-conservative nationalism to pro-labor socialism, medievalism’s popularity spanned the entire political spectrum. This is because it owes its existence to a number of developments that affected the whole of society.
In Ludwig’s time, the world was changing in profound, almost inconceivable ways. The first and second industrial revolutions with their socioeconomic upheavals and new technologies of transport, manufacturing, and mass communication, all completely unmade and remade how people lived and worked. This was as true of the average person as it was of the princes and nobles who were beginning to be undermined by something called “the petit bourgeoisie.”
Sustenance farming dwindled and wage labor eclipsed all other forms of working. Millions of people no longer able to make a living on piecemeal and agricultural work flocked to the cities and into the great Molochs of factories, mills, stockyards, and mines. Families and other kinship bonds were eroded or severed by the acceleration of capitalist production, large wars, and new means of transportation, especially the railroad. People became not only alienated from each other and from their labor in the classical Marxist sense but also from the results of that labor, too. No longer were chairs made by craftsmen or clothes by the single tailor – unless you could afford the bespoke. Everything from shirtwaists to wrought iron lamps was increasingly mass produced - under wretched conditions, too. Things – including buildings – that were once built to last a lifetime became cheap, disposable, and subject to the whimsy of fashion, sold via this new thing called “the catalog.”
William Morris’ painting Le Belle Iseult (1868).
Unsurprisingly, this new way of living and working caused not a little discontent. This was the climate in which Karl Marx wrote Capital and Charles Dickens wrote A Christmas Carol. More specific to our interests, however, is a different dissenter and one of the most interesting practitioners of medievalism, the English polymath William Morris.
A lover of Arthurian legend and an admirer of the architect and design reformer John Ruskin, Morris was first trained in the office of architect G. E. Street, himself a die-hard Gothic Revivalist. From the very beginning, the Middle Ages can be found everywhere in Morris’ work, from the rough-hewn qualities of the furniture he helped design to the floral elements and compositions of the art nouveau textiles and graphics he’s most famous for – which, it should be said, are reminiscent of 15th century English tapestries. In addition to his design endeavors, Morris was also a gifted writer and poet. His was a profound love for medieval literature, especially Norse sagas from Iceland. Some of these he even translated including the Volsunga Saga – also a preoccupation of Wagner’s. Few among us earn the title of polymath, but Morris’ claim to it is undeniable. Aside from music, there really wasn’t any area of creative life he didn’t touch.
However, Morris’ predilection for the medieval was not just a personal and aesthetic fascination. It was also an expression of his political rejection of the capitalist mode of production. As one of the founders of the English Arts & Crafts Movement, Morris called for a rejection of piecemeal machine labor, a return to handicraft, and overall to things made well and made with dignity. While this was and remains a largely middle class argument, one that usually leads down the road of ethical consumption, Morris was right that capitalism’s failing of design and architecture did not just lie with the depreciated quality of goods, but the depreciated quality of life. His was the utopian call to respect both the object and the laborer who produced it. To quote from his 1888 essay called “The Revival of Architecture,” Morris dreamed of a society that “will produce to live and not live to produce, as we do.” Indeed, in our current era of AI Slop, there remains much to like about the Factory Slop-era call to take back time from the foreman’s clock and once more make labor an act of enjoyable and unalienated creativity. Only now it’s about things like writing an essay.
I bother to describe Morris at length here for a number of reasons. The first is to reiterate that medievalism’s popularity was largely a response to socioeconomic changes. Additionally, since traditionalism - in Ludwig’s time and in ours - still gets weaponized by right-wing losers, it’s worth pointing out that not all practitioners of medievalism were politically reactionary in nature. However – and I will return to this later – medievalism, reactionary or not, remains inescapably nostalgic. Morris is no exception. While a total rejection of mass produced goods may seem quixotic to us now, when Morris was working, the era before mass industrialization remained at the fringes of living memory. Hence the nostalgia is perhaps to be expected. Unfortunately for him and for us, the only way out of capitalism is through it.
To return again to the big picture: whether one liked it or not, the old feudal world was done. Only its necrotic leftovers, namely a hereditary nobility whose power would run out of road in WWI, remained. For Ludwig purposes, it was a fraught political time in Bavaria as well. Bavaria, weird duck that it was, remained relatively autonomous within the new German Reich. Despite the title of king, Ludwig, much to his chagrin - hence the pathetic Middle Ages fantasizing - did not rule absolutely. His was a constitutional monarchy, and an embattled one at that. During the building of Neuschwanstein, the king found himself wedged between the Franco-Prussian War and the political coup masterminded by Otto von Bismarck that would put Europe on the fast track to a global conflict many saw as the atavistic culmination of all that already violent modernity. No wonder he wanted to hide with his Schwans up in the hills of Schwangau.
The very notion of a unified German Reich (or an independent Kingdom of Bavaria) was itself indicative of another development. Regardless if one was liberal or conservative, a king, an artist or a shoe peddler, the 19th century was plagued by the rise of modern nationalism. Bolstered by new ideas in “medical” “science,” this was also a racialized nationalism. A lot of emotional, political, and artistic investment was put into the idea that there existed a fundamentally German volk, a German soil, a German soul. This, however, was a universalizing statement in need of a citation, with lots of political power on the line. Hence, in order to add historical credence to these new conceptions of one’s heritage, people turned to the old sources.
Within the hallowed halls of Europe’s universities, newly minted historians and philologists scoured medieval texts for traces of a people united by a common geography and ethnicity as well as the foundations for a historically continuous state. We now know that this is a problematic and incorrect way of looking at the medieval world, a world that was so very different from our own. A great deal of subsequent medieval scholarship still devotes itself to correcting for these errors. But back then, such scholarly ethics were not to be found and people did what they liked with the sources. A lot of assumptions were made in order to make whatever point one wanted, often about one’s superiority over another. Hell, anyone who’s been on Trad Guy Deus Vult Twitter knows that a lot of assumptions are still made, and for the same purposes.(2)
Meanwhile, outside of the academy, mass print media meant more people were exposed to medieval content than ever before. Translations of chivalric romances such as Wolfgang von Eschenbach’s Parzival and sagas like the Poetic Edda inspired a century’s worth of artists to incorporate these characters and themes into their work. This work was often but of course not always nationalistic in character. Such adaptations for political purposes could get very granular in nature. We all like to point to the greats like William Morris or Richard Wagner (who was really a master of a larger syncretism.) But there were many lesser attempts made by weaker artists that today have an unfortunate bootlicking je nais se quoi to them.
I love a minor tangent related to my interests, so here’s one: a good example of this nationalist granularity comes from Franz Grillparzer’s 1823 pro-Hapsburg play König Ottokars Glück und Ende, which took for its source a deep cut 14th century manuscript called the Styrian Rhyming Chronicle, written by Ottokar Aus Der Gaul. The play concerns the political intrigue around King Ottokar II of Bohemia and his subsequent 1278 defeat at the hands of Grillparzer’s very swagged out Rudolf of Habsburg. Present are some truly fascinating but extremely obscure characters from 13th Holy Roman Empire lore including a long-time personal obsession of mine, the Styrian ministerial and three-time traitor of the Great Interregnum, Frederick V of Pettau. But I’m getting off-topic here. Let’s get back to the castle.
The Throne Room at Neuschwanstein
For architecture, perhaps the most important development in spreading medievalism was this new institution called the “big public museum.” Through a professionalizing field of archaeology and the sickness that was colonialist expansion, bits and bobs of buildings were stolen from places like North Africa, Egypt, the Middle East, and Byzantium, all of which had an enormous impact on latter 19th century architecture. (They were also picked up by early 20th century American architects from H. H. Richardson to Louis Sullivan.) These orientalized fragments were further disseminated through new books, monographs, and later photography.
Meanwhile, developments in fabrication (standardized building materials), construction (namely iron, then steel) and mass production sped things up and reduced costs considerably. Soon, castles and churches in the image of those that once took decades if not a century to build were erected on countless hillsides or in little town squares across the continent. These changes in the material production of architecture are key for understanding “why Neuschwanstein castle looks so weird.”
Part of what gives medieval architecture its character is the sheer embodiment of labor embedded in all those heavy stones, stones that were chiseled, hauled, and set by hand. The Gothic cathedral was a precarious endeavor whose appearance of lightness was not earned easily, which is why, when writing about their sublimity, Edmund Burke invoked not only the play of light and shadow, but the sheer slowness and human toil involved.
This is, of course, not true of our present estate. Neuschwanstein not only eschews the role of a castle as a “fortress to be used in war” (an inherently stereotomic program) but was erected using contemporary materials and techniques that are simply not imbued with the same age or gravitas. Built via a typical brick construction but clad in more impressive sandstone, it’s all far too clean. Neuschwanstein’s proportions seem not only chaotic - towers and windows are strewn about seemingly on a whim - they are also totally irreconcilable with the castle’s alleged typology, in part because we know what a genuine medieval castle looks like.
Ludwig’s palace was a technological marvel of the industrial revolution. Not only did Neuschwanstein have indoor plumbing and central heat, it also used the largest glass windows then in manufacture. It’s not even an Iron Age building. The throne room, seen earlier in this post, required the use of structural steel. None of this is to say that 19th century construction labor was easy. It wasn’t and many people still died, including 30 at Neuschwanstein. It was, however, simply different in character than medieval labor. For all the waxing poetic about handiwork, I’m sure medieval stonemasons would have loved the use of a steam crane.
It’s true that architectural eclecticism (the use of many styles at once) has a knack for undermining the presumed authenticity or fidelity of each style employed. But this somewhat misunderstands the crime. The thing about Neuschwanstein is that its goal was not to be historically authentic at all. Its target realm was that of fantasy. Not only that, a fantasy informed primarily by a contemporary media source. In this, it could be said to be more architecturally successful.
The fantasy of medievalism is very different than the truth of the Middle Ages. As I hinted at before, more than anything else, medievalism was an inherently nostalgic movement, and not only because it was a bedrock of so much children’s literature. People loved it because it promised a bygone past that never existed. The visual and written languages of feudalism, despite it being a terrible socioeconomic system, came into vogue in part because it wasn’t capitalism. We must remember that the 19th century saw industrial capitalism at its newest and rawest. Unregulated, it destroyed every natural resource in sight and subjected people, including children, to horrific labor conditions. It still does, and will probably get worse, but the difference is, we’re somewhat used to it by now. The shock’s worn off.
All that upheaval I talked about earlier made people long for a simplicity they felt was missing. This took many different forms. The rapid advances of secular society and the incursion of science into belief made many crave a greater religiosity. At a time when the effects of wage labor on the family had made womanhood a contested territory, many appeals were made to a divine and innocent feminine a la Lady Guinevere. Urbanization made many wish for a quieter world with less hustle and bustle and better air. These sentiments are not without their reasons. Technological and socioeconomic changes still make us feel alienated and destabilized, hence why there are so many medieval revivals even in our own time. (Chappell Roan of Arc anyone?) Hell, our own rich people aren’t so different from Ludwig either. Mark Zuckerburg owns a Hawaiian island and basically controls the fates of the people who live there lord-in-the-castle-style.
Given all this, it’s not surprising that of the products of the Middle Ages, perhaps chivalric romance was and remains the most popular. While never a real depiction of medieval life (no, all those knights were not dying on the behalf of pretty ladies), such stories of good men and women and their grand adventures still capture the imaginations of children and adults alike. (You will find no greater fan of Parzival than yours truly.) It’s also no wonder the nature of the romance, with its paternalistic patriarchy, its Christianity, its sentimentality around courtly love, and most of all its depiction of the ruling class as noble and benevolent – appealed to someone like Ludwig, both as a quirked-up individual and a member of his class.
It follows, then, that any artist capable of synthesizing all these elements, fears, and desires into an aesthetically transcendent package would’ve had a great effect on such a man. One did, of course. His name was Richard Wagner.
In our next essay, we will witness one of the most astonishing cases of kitsch imitating art. But before there could be Neuschwanstein Castle, there had to be this pretty little opera called Lohengrin.
(2) My favorite insane nationalist claim comes from the 1960s, when the Slovene-American historian Joseph Felicijan claimed that the US’s democracy was based off the 13th century ritual of enthronement practiced by the Dukes of Carinthia because Thomas Jefferson owned a copy of Jean Bodin’s Les six livres de la Republique (1576) in which the rite was mentioned. For more information, see Peter Štih’s book The Middle Ages Between the Alps and the Northern Adriatic (p. 56 for the curious.)
It’s always funny to me when new wealth tries to imitate old wealth, but in a very specific way: by trying to reproduce old ways of building that are no longer viable via mass produced building materials and contractors who are better than average but still not quite in the legion of the bespoke. It’s rarely the case that houses are fully “custom” these days – the amalgamation of all the different parts in a new formation is the “customization” at work. As we can see in this example, this is a truth that is often covered up by excessive decorating.
This 5 bedroom, 6.5 bathroom house, built in 1997 (shocker) will run you an extremely reasonable $3.5 million big ones, but I say extremely reasonable because it wants to be a $10 million house but doesn’t quite get there - after all, it’s made with drywall. The architectural style is not really anything in particular – though the front entrance would like to recall the Tudors. Really it is trying to emulate an existing pastiche style, namely the eclecticism of the 19th century. It also doesn’t do this well.
No stately manor is complete without dueling staircases. Also, I don’t know how to explain it, but every room in this house longs to be a bathroom. Or a powder room. A really big one. It’s probably the floor, and the wallpaper. This is just the appetizer for the main attraction:
Jules Verne larping is so rare in McMansion Hell that you have to commend them for trying. I’m kind of obsessed.
This room is so important to me. It’s like if an Olin Mills (dating myself here) set was an entire room. A sense of watching someone in one’s own house, performing “dinner.” Also I would slay as the swan knight, I have to say, so I get it.
What happened to baskets hanging from the ceiling and powder blue walls and porcelain lined up on the picture rail?
I have seen columns terminating into soffits that would make Scamozzi cry.
In Big America bathing and lavishing is a spectator sport.
Ok, again, the palette of this house is basically The Polar Express mixed with a very bizarre hotel lobby.
The chimney hole is sending me because that does appear to be a working chimney. Like, can you see the smoke come out? Who knows!
Anyway, happy Thanksgiving to everyone, and I’m especially thankful to the folks who sponsor me on Patreon! If you want to see more scenes from this house, that’s the place to do it!
Quick PSA: someone on Facebook is apparently impersonating me using an account called “McMansion Hell 2.0” – If you see it, please report! Thanks!
Howdy folks! I hope if you were born between 1995 and 2001 you’re ready for some indelible pre-recession vibes because I think this entire house, including the photos have not been touched since that time.
This Wake County, NC house, built in 2007, currently boasts a price tag of 1.7 million smackaroos. Its buxom 4 bedrooms and 4.5 baths brings the total size to a completely reasonable and not at all housing-bubble-spurred 5,000 square feet.
I know everyone (at least on TikTok) thinks 2007 and goes immediately to the Tuscan theming trend that was super popular at the time (along with lots of other pseudo-euro looks, e.g. “french country” “tudor” etc). In reality, a lot of decor wasn’t particularly themed at all but more “transitional” which is to say, neither contemporary nor super traditional. This can be pulled off (in fact, it’s where the old-school Joanna Gaines excelled) but it’s usually, well, bland. Overwhelmingly neutral. Still, these interiors stir up fond memories of the last few months before mommy was on the phone with the bank crying.
I think I’ve seen these red/navy/beige rugs in literally every mid-2000s time capsule house. I want to know where they came from first and how they came to be everywhere. My mom got one from Kirkland’s Home back in the day. I guess the 2010s equivalent would be those fake distressed overdyed rugs.
I hate the kitchen bench trend. Literally the most uncomfortable seating imaginable for the house’s most sociable room. You are not at a 19th century soda fountain!!! You are a salesforce employee in Ohio!!!
You could take every window treatment in this house and create a sampler. A field guide to dust traps.
Before I demanded privacy, my parents had a completely beige spare bedroom. Truly random stuff on the walls. An oversized Monet poster they should have kept tbh. Also putting the rug on the beige carpet here is diabolical.
FYI the term “Global Village Coffeehouse” originates with the design historian Evan Collins whose work with the Consumer Aesthetics Research Institute!!!!
This photo smells like a Yankee Candle.
Ok, now onto the last usable photo in the set:
No but WHY is the house a different COLOR??????? WHAT?????
Alright, I hope you enjoyed this special trip down memory lane! Happy (American) Labor Day Weekend! (Don’t forget that labor is entitled to all it creates!)
Howdy folks! Today’s McMansion is very special because a) we’re returning to Maryland after a long time and b) because the street this McMansion is on is the same as my name. (It was not named after me.) Hence, it is my personal McMansion, which I guess is somewhat like when people used to by the name rights to stars even though it was pretty much a scam. (Shout out btw to my patron Andros who submitted this house to be roasted live on the McMansion Hell Patreon Livestream)
As far as namesake McMansions go, this one is pretty good in the sense that it is high up there on the ol’ McMansion scale. Built in 2011, this psuedo-Georgian bad boy boasts 6 bedrooms and 9.5 baths, all totaling around 12,000 square feet. It’ll run you 2.5 million which, safe to say, is exponentially larger than its namesake’s net worth.
Now, 2011 was an anonymous year for home design, lingering in the dead period between the 2008 black hole and 2013 when the market started to actually, finally, steadily recover. As a result a lot of houses from this time basically look like 2000s McMansions but slightly less outrageous in order to quell recession-era shame.
I’m going to be so serious here and say that the crown molding in this room is a crime against architecture, a crime against what humankind is able to accomplish with mass produced millwork, and also a general affront to common sense. I hate it so much that the more I look at it the more angry I become and that’s really not healthy for me so, moving on.
Actually, aside from the fake 2010s distressed polyester rug the rest of this room is literally, basically Windows 98 themed.
I feel like the era of massive, hefty sets of coordinated furniture are over. However, we’re the one’s actually missing out by not wanting this stuff because we will never see furniture made with real wood instead of various shades of MDF or particleboard ever again.
This is a top 10 on the scale of “least logical kitchen I’ve ever seen.” It’s as though the designers engineered this kitchen so that whoever’s cooking has to take the most steps humanly possible.
Do you ever see a window configuration so obviously made up by window companies in the 1980s that you almost have to hand it to them? You’re literally letting all that warmth from the fire just disappear. But whatever I guess it’s fine since we basically just LARP fire now.
Feminism win because women’s spaces are prioritized in a shared area or feminism loss because this is basically the bathroom vanity version of women be shopping? (It’s the latter.)
I couldn’t get to all of this house because there were literally over a hundred photos in the listing but there are so many spaces in here that are basically just half-empty voids, and if not that then actually, literally unfinished. It’s giving recession. Anyway, now for the best part:
Not only is this the NBA Backrooms but it’s also just a nonsensical basketball court. Tile floors? No lines? Just free balling in the void?
Oh, well I bet the rear exterior is totally normal.
Not to be all sincere about it but much like yours truly who has waited until the literal last second to post this McMansion, this house really is the epitome of hubris all around. Except the house’s hubris is specific to this moment in time, a time when gas was like $2/gallon. It’s climate hubris. It’s a testimony to just how much energy the top 1% of income earners make compared to the rest of us. I have a single window unit. This house has four air conditioning condensers. That’s before we get to the monoculture, pesticide-dependent lawn or the three car garage or the asphalt driveway or the roof that’ll cost almost as much as the house to replace. We really did think it would all be endless. Oops.
Often I find myself nostalgic for things that haven’t disappeared yet. This feeling is enhanced by the strange conviction that once I stop looking at these things, I will never see them again, that I am living in the last moment of looking. This is sense is strongest for me in the interiors of buildings perhaps because, like items of clothing, they are of a fashionable nature, in other words, more impermanent than they probably should be.
As I get older, to stumble on something truly dated, once a drag, is now a gift. After over a decade of real estate aggregation and the havoc it’s wreaked on how we as a society perceive and decorate houses, if you’re going to Zillow to search for the dated (which used to be like shooting fish in a barrel), you’ll be searching aimlessly, for hours, to increasingly no avail, even with all the filters engaged. (The only way to get around this is locational knowledge of datedness gleaned from the real world.) If you try to find images of the dated elsewhere on the internet, you will find that the search is not intuitive. In this day and age, you cannot simply Google “80s hotel room” anymore, what with the disintegration of the search engine ecosystem and the AI generated nonsense and the algorithmic preference for something popular (the same specific images collected over and over again on social media), recent, and usually a derivative of the original search query (in this case, finding material along the lines of r/nostalgia or the Backrooms.)
To find what one is looking for online, one must game the search engine with filters that only show content predating 2021, or, even better, use existing resources (or those previously discovered) both online and in print. In the physical world of interiors, to find what one is looking for one must also now lurk around obscure places, and often outside the realm of the domestic which is so beholden to and cursed by the churn of fashion and the logic of speculation. Our open world is rapidly closing, while, paradoxically, remaining ostensibly open. It’s true, I can open Zillow. I can still search. In the curated, aggregated realm, it is becoming harder and harder to find, and ultimately, to look.
But what if, despite all these changes, datedness was never really searchable? This is a strange symmetry, one could say an obscurity, between interiors and online. It is perhaps unintentional, and it lurks in the places where searching doesn’t work, one because no one is searching there, or two, because an aesthetic, for all our cataloguing, curation, aggregation, hoarding, is not inherently indexable and even if it was, there are vasts swaths of the internet and the world that are not categorized via certain - or any - parameters. The internet curator’s job is to find them and aggregate them, but it becomes harder and harder to do. They can only be stumbled upon or known in an outside, offline, historical or situational way. If to index, to aggregate, is, or at least was for the last 30 years, to profit (whether monetarily or in likes), then to be dated, in many respects, is the aesthetic manifestation of barely breaking even. Of not starting, preserving, or reinventing but just doing a job.
We see this online as well. While the old-web Geocities look and later Blingee MySpace-era swag have become aestheticized and fetishized, a kind of naive art for a naive time, a great many old websites have not received the same treatment. These are no less naive but they are harder to repackage or commodify because they are simple and boring. They are not “core” enough.
As with interiors, web datedness can be found in part or as a whole. For example, sites like Imgur or Reddit are not in and of themselves dated but they are full of remnants, of 15-year old posts and their “you, sir, have won the internet” vernacular that certainly are. Other websites are dated because they were made a long time ago by and for a clientele that doesn’t have a need or the skill to update (we see this often with Web 2.0 e-commerce sites that figured out how to do a basic mobile page and reckoned it was enough). The next language of datedness, like the all-white landlord-special interior, is the default, clean Squarespace restaurant page, a landing space that’s the digital equivalent of a flyer, rarely gleaned unless someone needs a menu, has a food allergy or if information about the place is not available immediately from Google Maps. I say this only to maintain that there is a continuity in practices between the on- and off-line world beyond what we would immediately assume, and that we cannot blame everything on algorithms.
But now you may ask, what is, exactly, datedness? Having spent two days in a distinctly dated hotel room, I’ve decided to sit in utter boredom with the numinous past and try and pin it down.
II.
I am in an obscure place. I am in Saint-Georges, Quebec, Canada, on assignment. I am staying at a specific motel, the Voyageur. By my estimation the hotel was originally built in the late seventies and I’d be shocked if it was older than 1989. The hotel exterior was remodeled sometime in the 2000s with EIFS cladding and beige paint. Above is a picture of my room, which, forgive me, is in the process of being inhabited. American (and to a lesser extent Canadian) hotel rooms are some of the most churned through, renovated spaces in the world, and it’s pretty rare, unless you’re staying in either very small towns or are forced by economic necessity to stay at real holes in the wall, to find ones from this era. The last real hitter for me was a 90s Day’s Inn in the meme-famous Breezewood, PA during the pandemic.
At first my reaction to seeing the room was cautionary. It was the last room in town, and certainly compared to other options, probably not the world’s first choice. However, after staying in real, genuine European shitholes covering professional cycling I’ve become a class-A connoisseur of bad rooms. This one was definitively three stars. A mutter of “okay time to do a quick look through.” But upon further inspection (post-bedbug paranoia) I came to the realization that maybe the always-new brainrot I’d been so critical of had seeped a teeny bit into my own subconscious and here I was snubbing my nose at a blessing in disguise. The room is not a bad room, nor is it unclean. It’s just old. It’s dated. We are sentimental about interiors like this now because they are disappearing, but they are for my parents what 2005 beige-core is for me and what 2010s greige will become for the generation after. When I’m writing about datedness, I’m writing in general using a previous era’s examples because datedness, by its very nature, is a transitional status. Its end state is the mixed emotion of seeing things for what they are yet still appreciating them, expressed here.
Datedness is the period between vintage and contemporary. It is the sentiment between quotidian and subpar. It is uncurated and preserved only by way of inertia, not initiative. It gives us a specific feeling we don’t necessarily like, one that is deliberately evoked in the media subcultures surrounding so-called “liminal” spaces: the fuguelike feeling of being spatially trapped in a time while our real time is passing. Datedness in the real world is not a curated experience, it is only what was. It is different from nostalgia because it is not deliberately remembered, yearned for or attached to sweetness. Instead, it is somehow annoying. It is like stumbling into the world of adults as a child, but now you’re the adult and the child in you is disappointed. (The real child-you forgot a dull hotel room the moment something more interesting came along.) An image of my father puts his car keys on the table, looks around and says, “It’ll do.” We have an intolerance for datedness because it is the realization of what sufficed. Sufficiency in many ways implies lack.
However, for all its datedness, many, if not all, of the things in this room will never be seen again if the room is renovated. They will become unpurchaseable and extinct. Things like the bizarrely-patterned linoleum tile in the shower, the hose connecting to the specific faucet of the once-luxurious (or at least middling) jacuzzi tub whose jets haven’t been exercised since the fall of the Berlin Wall. The wide berth of the tank on the toilet. There is nothing, really, worth saving about these things. Even the most sentimental among us wouldn’t dare argue that the items and finishes in this room are particularly important from a design or historical standpoint. Not everything old has a patina. They’re too cheaply made to salvage. Plastic tile. Bowed plywood. The image-artifacts of these rooms, gussied up for Booking dot com, will also, inevitably disappear, relegated to the dustheap of web caches and comments that say “it was ok kinda expensive but close to twon (sic).” You wouldn’t be able to find them anyway unless you were looking for a room.
One does, of course, recognize a little bit of design in what’s here. Signifiers of an era. The wood-veneer of the late 70s giving way to the pastel overtones of the 80s. Perhaps even a slow 90s. The all-in-one vanity floating above the floor, a modernist basement bathroom hallmark. White walls as a sign of cleanliness. Gestures, in the curved lines of the nightstands, towards postmodernity. Metallic lamp bases with wide-brimmed shades, a whisper of glamor. A kind of scalloped aura to the club chairs. The color teal mediated through hundreds if not thousands of shoes. Yellowing plastic, including the strips of “molding” that visually tie floor to wall. These are remnants (or are they intuitions?) of so many movements and micromovements, none of them definite enough to point to the influence of a single designer, hell, even of a single decade, just strands of past-ness accumulated into one thread, which is cheapness. Continuity exists in the materials only because everything was purchased as a set from a wholesale catalog.
In some way a hotel is supposed to be placeless. Anonymous. Everything tries to be that way now, even houses. Perhaps because we don’t like the way we spy on ourselves and lease our images out to the world so we crave the specificity of hotel anonymity, of someplace we move through on our way to bigger, better or at least different things. The hotel was designed to be frictionless but because it is in a little town, it sees little use and because it sees little use, there are elements that can last far longer than they were intended and which inadvertently cause friction. (The janky door unlocks with a key. The shower hose keeps coming out of the faucet. It’s deeply annoying.)
Lack of wear and lack of funds only keep them that way. Not even the paper goods of the eighties have been exhausted yet. Datedness is not a choice but an inevitability. Because it is not a choice, it is not advertised except in a utilitarian sense. It is kept subtle on the hotel websites, out of shame. Because it does not subscribe to an advertiser’s economy of the now, of the curated type rather than the “here is my service” type, it disappears into the folds of the earth and cannot be searched for in the way “design” can. It can only be discovered by accident.
When I look at all of these objects and things, I do so knowing I will never see them again, at least not all here together like this, as a cohesive whole assembled for a specific purpose. I don’t think I’ll ever have reason to come back to this town or this place, which has given me an unexpected experience of being peevish in my father’s time. Whenever I end up in a place like this, where all is as it was, I get the sense that it will take a very long time for others to experience this sensation again with the things my generation has made. The machinations of fashion work rapaciously to make sure that nothing is ever old, not people, not rooms, not items, not furniture, not fabrics, not even design, that old matron who loves to wax poetic about futurity and timelessness. The plastic-veneered particleboard used here is now the bedrock of countless landfills. Eventually it will become the chemical-laced soil upon which we build our condos. It is possible that we are standing now at the very last frontier of our prior datedness. The next one has not yet elided. It’s a special place. Spend a night. Take pictures.