Weekly Update 307

By Troy Hunt

Presently sponsored by: Kolide believes that maintaining endpoint security shouldn’t mean compromising employee privacy. Check out our manifesto: Honest Security.

A very early weekly update this time after an especially hectic week. The process with the couple of data breaches in particular was a real time sap and it shouldn't be this hard. Seriously, the amount of effort that goes into trying to get organisations to own their

Asking Scientists Questions

'Does the substance feel weird to the touch?' is equally likely to get the answers 'Don't be ridiculous, you would never put your hand near a sample. We have safety protocols.' and 'Yeah, and it tastes AWFUL.'

New Keycloak maintainer: Václav Muzikář

By Bruno Oliveira

We are pleased to welcome Václav Muzikář as an official maintainer of Keycloak.

Vašek has consistently collaborated to the success of Keycloak since 2015 when he joined Red Hat. He is known for his various contributions to our test suite, the Quickstarts, integration tests for the Node.js Adapter, improvements in the new Account Console, security auditing of our REST Account API, enhancement to our pipelines and also the maintenance and development of Keycloak Operator. Now he is coordinating the efforts on Cloud-Native development which includes the new Quarkus distribution and the new Operator.

He has shown his commitment to the Keycloak community collaborating on design discussions, participating in GitHub discussions, reviewing pull-requests, answering questions on the Keycloak mailing lists, contributing to new features, bug fixes and triaging GitHub issues.

The Keycloak team is very excited to welcome Vašek as our new maintainer and long-time contributor.

Sending Spammers to Password Purgatory with Microsoft Power Automate and Cloudflare Workers KV

By Troy Hunt

Presently sponsored by: Kolide believes that maintaining endpoint security shouldn’t mean compromising employee privacy. Check out our manifesto: Honest Security.

How best to punish spammers? I give this topic a lot of thought because I spend a lot of time sifting through the endless rubbish they send me. And that's when it dawned on me: the punishment should fit the crime - robbing me of my time -

Partner Handset Auto-Provisioning

By Simwood

Today we are announcing the arrival of our new handset Auto-provisioning feature for our Simwood Partner Platform. Auto-provisioning uses the power of cloud-based technologies to help VoIP businesses automatically provision their VoIP devices. When bringing on new customers you’ll be able to allow them permission to connect devices to our platform without getting involved unless […]


Ants have reverse chemtrails--regular citizens spraying chemicals everywhere they go to control the government.


"My parents were both omnitaurs, which is how I got interested in recombination," said the normal human.

Weekly Update 306

By Troy Hunt

Presently sponsored by: Kolide believes that maintaining endpoint security shouldn’t mean compromising employee privacy. Check out our manifesto: Honest Security.

I didn't intend for a bunch of this week's vid to be COVID related, but between the breach of an anti-vaxxer website and the (unrelated) social comments directed at our state premier following some pretty simple advice, well, it just kinda turned out that way. But

BOFH: Selling the boss on a crypto startup

By Simon Travaglia

A little hint from a Helldesk friend is all you need

Episode 14  BOFH logo telephone with devil's horns"So what's causing it?" the Boss asks, looking down at his screen.…

Psst … Want to buy a used IBM Selectric? No questions asked

By Richard Speed

We would have got away with it too, if hadn't been for your perfectly reasonable user request

On Call  Do you know where that computer came from? Or that chair? Or that desk? Today's On Call concerns another brush with the long arm of the law that all started with a simple call for help.…

Proxy Variable

Our work has produced great answers. Now someone just needs to figure out which questions they go with.

Keycloak 19.0.1 released

To download the release go to Keycloak downloads.

Migration from 18.0

Before you upgrade remember to backup your database. If you are not on the previous release refer to the documentation for a complete list of migration changes.

All resolved issues



Before you upgrade remember to backup your database and check the upgrade guide for anything that may have changed.

UEFI rootkits and UEFI secure boot

Kaspersky describes a UEFI-implant used to attack Windows systems. Based on it appearing to require patching of the system firmware image, they hypothesise that it's propagated by manually dumping the contents of the system flash, modifying it, and then reflashing it back to the board. This probably requires physical access to the board, so it's not especially terrifying - if you're in a situation where someone's sufficiently enthusiastic about targeting you that they're reflashing your computer by hand, it's likely that you're going to have a bad time regardless.

But let's think about why this is in the firmware at all. Sophos previously discussed an implant that's sufficiently similar in some technical details that Kaspersky suggest they may be related to some degree. One notable difference is that the MyKings implant described by Sophos installs itself into the boot block of legacy MBR partitioned disks. This code will only be executed on old-style BIOS systems (or UEFI systems booting in BIOS compatibility mode), and they have no support for code signatures, so there's no need to be especially clever. Run malicious code in the boot block, patch the next stage loader, follow that chain all the way up to the kernel. Simple.

One notable distinction here is that the MBR boot block approach won't be persistent - if you reinstall the OS, the MBR will be rewritten[1] and the infection is gone. UEFI doesn't really change much here - if you reinstall Windows a new copy of the bootloader will be written out and the UEFI boot variables (that tell the firmware which bootloader to execute) will be updated to point at that. The implant may still be on disk somewhere, but it won't be run.

But there's a way to avoid this. UEFI supports loading firmware-level drivers from disk. If, rather than providing a backdoored bootloader, the implant takes the form of a UEFI driver, the attacker can set a different set of variables that tell the firmware to load that driver at boot time, before running the bootloader. OS reinstalls won't modify these variables, which means the implant will survive and can reinfect the new OS install. The only way to get rid of the implant is to either reformat the drive entirely (which most OS installers won't do by default) or replace the drive before installation.

This is much easier than patching the system firmware, and achieves similar outcomes - the number of infected users who are going to wipe their drives to reinstall is fairly low, and the kernel could be patched to hide the presence of the implant on the filesystem[2]. It's possible that the goal was to make identification as hard as possible, but there's a simpler argument here - if the firmware has UEFI Secure Boot enabled, the firmware will refuse to load such a driver, and the implant won't work. You could certainly just patch the firmware to disable secure boot and lie about it, but if you're at the point of patching the firmware anyway you may as well just do the extra work of installing your implant there.

I think there's a reasonable argument that the existence of firmware-level rootkits suggests that UEFI Secure Boot is doing its job and is pushing attackers into lower levels of the stack in order to obtain the same outcomes. Technologies like Intel's Boot Guard may (in their current form) tend to block user choice, but in theory should be effective in blocking attacks of this form and making things even harder for attackers. It should already be impossible to perform attacks like the one Kaspersky describes on more modern hardware (the system should identify that the firmware has been tampered with and fail to boot), which pushes things even further - attackers will have to take advantage of vulnerabilities in the specific firmware they're targeting. This obviously means there's an incentive to find more firmware vulnerabilities, which means the ability to apply security updates for system firmware as easily as security updates for OS components is vital (hint hint if your system firmware updates aren't available via LVFS you're probably doing it wrong).

We've known that UEFI rootkits have existed for a while (Hacking Team had one in 2015), but it's interesting to see a fairly widespread one out in the wild. Protecting against this kind of attack involves securing the entire boot chain, including the firmware itself. The industry has clearly been making progress in this respect, and it'll be interesting to see whether such attacks become more common (because Secure Boot works but firmware security is bad) or not.

[1] As we all remember from Windows installs overwriting Linux bootloaders
[2] Although this does run the risk of an infected user booting another OS instead, and being able to see the implant

comment count unavailable comments

Research on misdialled numbers

By [email protected] (RevK)

I am considering if there is research on this, and even if I should do such research.

This is slightly relevant to things like W3W. I don't think they did any research of mis spoken, mis remembered, mis heard, and mis typed, random words, to be fair. Words work well in context and are shit when random from a huge dictionary (especially when beyond most people's vocabulary and available in multiple languages). Heck, even in "context" the classic game of "Chinese whispers" shows how shit this is.

But conveying numbers is a totally separate issue - a much smaller space to play with, except people "group" numbers internally. The whole concept of phone numbers in UK works well with area code (a familiar number sequence) and then number. People cope well with local numbers. They cope well with numbers in neighbouring area codes.

It has been long known that people can "transpose" digits, and this is why some check digit systems (like used on credit card numbers) specifically target digit transposition.

But people can also group sequences of digits in various ways. The ways they are presented with spaces matter. They create patterns. People are good with patterns.

I am well aware of two distinct misdials, and they are quite different.

One is seeing 0XXXX 400 000 and dialling 0XXXX 400 400. This happens a *lot*. We changed to not even publish 0XXXX 400 000 so as to avoid this.

One is seeing 0XXX 0 112 112 and dialling 0XXX 112 112 0.

This latter one is weird, in my view. I don't grasp why it happens, but it happens around 4 or 5 times a month. People misdial Screwfix's number and get me!

This is really not something I expected, which is why I wonder if numbers being mis handled is a topic for research.

We know W3W is crap, but can research make normal grid references and phone numbers better, if we understand how people get them wrong?

Wholesale rate update (2022-08-01) – with NO dirty surcharges

By Simwood

We will be updating our Managed A-Z Termination rates and codes on August 1st 2022. As usual, these changes are colour coded in our full rate files available through the portal as below. Unlike other operators, we are not passing on UK origin surcharges, relying instead on our advanced technology to protect you and us […]

Hacker's Delight


Using Landlock to Sandbox GNU Make


The Thousand Brains Theory of Intelligence


Show HN: Figure is a daily logic puzzle game


Top Scientist Admits Webb Telescope Star Photo Was Chorizo


Building Stronger, Happier Engineering Teams with Team Topologies


Syncthing Anywhere with Tailscale


Tutors / tips to change your English accent


Homebrew Bluetooth Headphones


Bits – Build Credit (YC S20) Is Hiring


A Soviet test pilot ejected two seconds before the crash of his MiG-29 (2019)


Ivy – An interpreter for an APL-like language


How to stop being “terminally online”


Our Roadmap for Nix


Intel expands Oregon Fab building; 18A Node now 2024


Israel-Gaza: Talks under way to broker ceasefire in Gaza

Egypt tries to broker a truce between Israel and Palestinian militants, as Gazans mourn their dead.

Gordon Brown demands emergency budget before 'financial timebomb'

Former Labour PM says an emergency budget is needed now because of the cost of living crisis.

Commonwealth Games: England lose netball bronze to New Zealand

Defending Commonwealth netball champions England will leave Birmingham without a medal after losing bronze to New Zealand.

Liz Truss not ruling out emergency payments, says Penny Mordaunt

Penny Mordaunt says Liz Truss's comments on how to help with the cost of living crisis had been overinterpreted.

Free school meals: Councils in England cut back on holiday food-voucher help

Vouchers are being cut in value or scrapped altogether across England, BBC News research reveals.

Girl dies after going missing at Windsor water park

Members of the public helped search a lake before the girl was found by emergency services.

Owami Davies: Fifth arrest over missing student nurse

A man is being held on suspicion of kidnap following the disappearance of Owami Davies.

Horniman Museum to return 72 artefacts to Nigeria

The chair of the Horniman Museum said it was "moral" to return items taken by "force" years ago.

Energy bills: Charities warn people against not paying

If you're struggling to afford your gas and electricity bills, you do have options.

Archie Battersbee: No parent must go through this again - family

The 12-year-old's family say they were "stripped of all our rights" in a legal battle with doctors.

Commonwealth Games: New Zealand beat England to earn T20 cricket bronze

Veteran England fast bowler Katherine Brunt says she felt she had let the country down after losing their bronze medal match to New Zealand.

Ukraine war: Four more grain ships leave Ukraine as hopes grow for export stability

Four vessels leave Ukrainian ports via a safe maritime corridor set up under a deal with Russia.

Commonwealth Games: England men sweep to 4x100m relay title defence

Defending champions England roar to 4x100m men's relay gold as Ojie Edoburun anchors home a slick display.

Commonwealth Games 2022: Muzala Samukonga wins 400m gold as Matt Hudson-Smith takes silver

Watch Zambia teenager Muzala Samukonga produce an incredible surge in the final 100m to beat England's Matt Hudson Smith to 400m gold with a personal best time of 44.66 seconds.

Sanya: Covid lockdown strands tourists on 'China's Hawaii'

Over 80,000 tourists in the resort known as "China's Hawaii" face new restrictions and cancelled flights.

[Half Time Thread] Manchester United 0 - 2 Brighton & Hove Albion

By /u/nearly_headless_nic

Both Goals Pascal Gross

submitted by /u/nearly_headless_nic to r/reddevils
[link] [comments]

Match Thread: Manchester United vs Brighton & Hove Albion | English Premier League

By /u/MatchThreadder

FT: Manchester United 1-2 Brighton & Hove Albion

Manchester United scorers: Alexis Mac Allister (68' OG)

Brighton & Hove Albion scorers: Pascal Groß (30', 39')

Venue: Old Trafford

Auto-refreshing reddit comments link


Manchester United

David de Gea, Lisandro Martínez, Harry Maguire, Luke Shaw (Tyrell Malacia), Diogo Dalot, Fred (Cristiano Ronaldo), Bruno Fernandes (Alejandro Garnacho), Scott McTominay (Donny van de Beek), Christian Eriksen, Marcus Rashford, Jadon Sancho (Anthony Elanga).

Subs: Raphaël Varane, James Garner, Aaron Wan-Bissaka, Tom Heaton.


Brighton & Hove Albion

Robert Sánchez, Lewis Dunk, Adam Webster, Joël Veltman, Moises Caicedo, Alexis Mac Allister, Leandro Trossard (Tariq Lamptey), Pascal Groß, Danny Welbeck, Adam Lallana (Enock Mwepu), Solly March (Levi Colwill).

Subs: Jason Steele, Jeremy Sarmiento, Deniz Undav, Neal Maupay, Jan Paul van Hecke, Kaoru Mitoma.


25' Scott McTominay (Manchester United) is shown the yellow card for a bad foul.

30' Goal! Manchester United 0, Brighton and Hove Albion 1. Pascal Groß (Brighton and Hove Albion) right footed shot from the right side of the six yard box to the bottom right corner. Assisted by Danny Welbeck.

39' Goal! Manchester United 0, Brighton and Hove Albion 2. Pascal Groß (Brighton and Hove Albion) left footed shot from very close range to the high centre of the goal.

45'+2' Lisandro Martínez (Manchester United) is shown the yellow card for a bad foul.

53' Leandro Trossard (Brighton and Hove Albion) is shown the yellow card.

53' Harry Maguire (Manchester United) is shown the yellow card.

53' Substitution, Manchester United. Cristiano Ronaldo replaces Fred.

68' Own Goal by Alexis Mac Allister, Brighton and Hove Albion. Manchester United 1, Brighton and Hove Albion 2.Goal confirmed following VAR Review.

74' Luke Shaw (Manchester United) is shown the yellow card for a bad foul.

75' Substitution, Brighton and Hove Albion. Tariq Lamptey replaces Leandro Trossard.

76' Substitution, Brighton and Hove Albion. Enock Mwepu replaces Adam Lallana.

78' Substitution, Manchester United. Donny van de Beek replaces Scott McTominay.

90' Substitution, Manchester United. Anthony Elanga replaces Jadon Sancho.

90' Substitution, Manchester United. Alejandro Garnacho replaces Bruno Fernandes.

90' Substitution, Manchester United. Tyrell Malacia replaces Luke Shaw.

90'+1' Substitution, Brighton and Hove Albion. Levi Colwill replaces Solly March.

Don't see a thread for a match you're watching? Click here to learn how to request a match thread from this bot.

submitted by /u/MatchThreadder to r/reddevils
[link] [comments]

MUFC XI vs Brighton: De Gea, Dalot, Maguire, Martinez, Shaw, Fred, McTominay, Eriksen, Fernandes, Sancho, Rashford.

By /u/sultansaeed

MUFC XI vs Brighton: De Gea, Dalot, Maguire, Martinez, Shaw, Fred, McTominay, Eriksen, Fernandes, Sancho, Rashford. submitted by /u/sultansaeed to r/reddevils
[link] [comments]

Alex Jones is shocked that after 10 years of dragging the parents of the Sandy Hook victims through the mud that 12 hours after a radio appearance the world didn’t forgive and forget.

By /u/cvcjebus

Alex Jones is shocked that after 10 years of dragging the parents of the Sandy Hook victims through the mud that 12 hours after a radio appearance the world didn’t forgive and forget. submitted by /u/cvcjebus to r/LeopardsAteMyFace
[link] [comments]

Looks like Millie saw the article 😭

By /u/Beautiful-Cap6168

Looks like Millie saw the article 😭 submitted by /u/Beautiful-Cap6168 to r/LoveIslandTV
[link] [comments]

Everyday without fail some arsehole walks by and tips over the fresh water bowl we put out for dogs on our street

By /u/Shiznips

Everyday without fail some arsehole walks by and tips over the fresh water bowl we put out for dogs on our street submitted by /u/Shiznips to r/mildlyinfuriating
[link] [comments]

Neighbours want access to our garden to build their extension

By /u/Mendozasd

We live in a semi-detached property and our neighbours in the adjoining house are planning to build a one storey extension on the back of their property. We knew of their plans and had no objection, however yesterday one of the the neighbours knocked on “just to let us know” that the scaffolding for the extension may need to be put up in our garden (our side of the fence and likely partially blocking our back door) and that also the foundations may need to be dug under our decking.

I’m assuming that legally they can’t force us to allow this, but if we agreed with them that it was okay, could there be any legal repercussions e.g. future right of access to our land, issues with damage to our property/land?

submitted by /u/Mendozasd to r/LegalAdviceUK
[link] [comments]

Match Thread: Hibernian vs Heart of Midlothian | Scottish Premiership

By /u/SFMatchThreadder

FT: Hibernian 1-1 Heart of Midlothian

Hibernian scorers: Martin Boyle (90'+5')

Heart of Midlothian scorers: Lawrence Shankland (22')

Venue: Easter Road Stadium

Watch live on Sky Sports Main Event or Sky Sports Football or Sky Sports Ultra HDR

Auto-refreshing reddit comments link



David Marshall, Ryan Porteous, Rocky Bushiri, Marijan Cabraja, Christopher Cadden, Josh Campbell Martin Boyle, Joe Newell, Nohan Kenneh Jake Doyle-Hayes, Élie Youan, Ewan Henderson, Elias Hoff Melkersen Christian Doidge.

Subs: Darren McGregor, Lewis Miller, Maciej Kevin Dabrowski, Paul Hanlon, Momodou Bojang, Oscar Macintyre.


Heart of Midlothian

Craig Gordon, Kye Rowles, Craig Halkett, Alex Cochrane, Michael Smith Toby Sibbick, Liam Boyce Andy Halliday, Jorge Grant Cameron Devlin, Peter Haring, Lawrence Shankland, Alan Forrest Nathaniel Atkinson, Barrie McKay.

Subs: Lewis Neilson, Gary Mackay-Steven, Euan Henderson, Josh Ginnelly, Ross Stewart.


Hibernian Heart of Midlothian
Possession 56% 44%
Shots 11 12
Shots on Target 3 6
Corners 7 9
Fouls 18 13


22' Goal! Hibernian 0, Heart of Midlothian 1. Lawrence Shankland (Heart of Midlothian) right footed shot from the centre of the box to the centre of the goal. Assisted by Barrie McKay.

35' Ryan Porteous (Hibernian) is shown the yellow card for a bad foul.

54' Substitution, Hibernian. Christian Doidge replaces Elias Hoff Melkersen.

62' Substitution, Hibernian. Martin Boyle replaces Josh Campbell because of an injury.

63' Substitution, Heart of Midlothian. Toby Sibbick replaces Michael Smith.

63' Substitution, Heart of Midlothian. Nathaniel Atkinson replaces Alan Forrest.

64' Marijan Cabraja (Hibernian) is shown the yellow card for a bad foul.

77' Substitution, Heart of Midlothian. Cameron Devlin replaces Jorge Grant.

80' Substitution, Hibernian. Jake Doyle-Hayes replaces Nohan Kenneh.

85' Peter Haring (Heart of Midlothian) is shown the yellow card for a bad foul.

89' Substitution, Heart of Midlothian. Andrew Halliday replaces Liam Boyce.

90'+1' Ewan Henderson (Hibernian) is shown the yellow card for a bad foul.

90'+5' Goal! Hibernian 1, Heart of Midlothian 1. Martin Boyle (Hibernian) right footed shot from the centre of the box to the bottom right corner. Assisted by Thody Élie Youan.


Comment !goal to create a link to a goal in the Match Events section of this thread. For example "!goal 6 <link>" or "!goal 3-3 <link>". Any comment not downvoted will be picked up.

Don't see a thread for a match you're watching? Click here to learn how to request a match thread from this bot.

submitted by /u/SFMatchThreadder to r/ScottishFootball
[link] [comments]

She’s not wrong 🥲

By /u/Individual-Honey-337

She’s not wrong 🥲 submitted by /u/Individual-Honey-337 to r/LoveIslandTV
[link] [comments]

Total number of people crossing English Channel in small boats passes 18,000

By /u/iamnotinterested2

Total number of people crossing English Channel in small boats passes 18,000 submitted by /u/iamnotinterested2 to r/unitedkingdom
[link] [comments]

Why are hosepipe bans such a source of angst?

By /u/specto24

I grew up in Australia and moved to the U nearly a decade ago to get away from the heat. Back in Oz it would be nearly unthinkable to leave the hose running to water the garden, let alone in the middle of a drought. But over here it seems as if pouring drinking water on the ground is a fundamental human right. Why are people getting so angry about it being temporarily banned?

Yes, I’ve seen the stats about the leaking mains etc. and the for-profit water companies, and waste should be fixed, but it’s not going to happen this year and, given people don’t seem phased when there’s water in the reservoirs, the anger seems disproportionate.

submitted by /u/specto24 to r/AskUK
[link] [comments]

This is Lina Medina, she was the youngest woman to give birth at 5 years old in May 1939. She had a condition known as precocious puberty” this is when sexual development happens at an early age.

By /u/bendubberley_

This is Lina Medina, she was the youngest woman to give birth at 5 years old in May 1939. She had a condition known as precocious puberty” this is when sexual development happens at an early age. submitted by /u/bendubberley_ to r/ThatsInsane
[link] [comments]


By /u/kaworuscott

THIS. IS. ESPORTS. (EVO 2022) submitted by /u/kaworuscott to r/gaming
[link] [comments]

How do I shop in lush without being ambushed?

By /u/Bumblemorex

I (25M) love lush body wash and decided I was going to try the shampoo as well, so I went into lush to look at what there is and immediately had one of the employees asking me what I was there for, then proceeded to tell me about her favourite shampoo. This would be fine if she then left me alone to look at the other options but she stood there asking me what I think and if I want it packing up so I just said yes to get out of the awkward situation.

I went in again yesterday and decided just to rush to what I wanted so I can grab it and pay before they get a chance to tell me about their new face scrub. It did not work… I now have a new face scub.

submitted by /u/Bumblemorex to r/CasualUK
[link] [comments]

Tesco with the best sub I’ve seen yet. “Here, pal, I’ll save you some effort.”

By /u/AlexKidd316

Tesco with the best sub I’ve seen yet. “Here, pal, I’ll save you some effort.” submitted by /u/AlexKidd316 to r/CasualUK
[link] [comments]

Microsoft® Open Source Software (OSS) Secure Supply Chain (SSC) Framework Simplified Requirements

Microsoft® Open Source Software (OSS) Secure Supply Chain (SSC) Framework Simplified Requirements

This is really good: don't get distracted by the acronyms, skip past the intro and head straight to the framework practices section, which talks about things like keeping copies of the packages you depend on, running scanners, tracking package updates and most importantly keeping an inventory of the open source packages you work so you can quickly respond to things like log4j.

I feel like I say this a lot these days, but if you had told teenage-me that Microsoft would be publishing genuinely useful non-FUD guides to open source supply chain security by 2022 I don't think I would have believed you.

Quoting Ken Williams

Your documentation is complete when someone can use your module without ever having to look at its code. This is very important. This makes it possible for you to separate your module's documented interface from its internal implementation (guts). This is good because it means that you are free to change the module's internals as long as the interface remains the same.

Remember: the documentation, not the code, defines what a module does.

Ken Williams

Introducing sqlite-html: query, parse, and generate HTML in SQLite

Introducing sqlite-html: query, parse, and generate HTML in SQLite

Another brilliant SQLite extension module from Alex Garcia, this time written in Go. sqlite-html adds a whole family of functions to SQLite for parsing and constructing HTML strings, built on the Go goquery and cascadia libraries. Once again, Alex uses an Observable notebook to describe the new features, with embedded interactive examples that are backed by a Datasette instance running in Fly.

Via My TIL on Trying out SQLite extensions on macOS

How I Used DALL·E 2 to Generate The Logo for OctoSQL

How I Used DALL·E 2 to Generate The Logo for OctoSQL

Jacob Martin gives a blow-by-blow account of his attempts at creating a logo for his OctoSQL project using DALL-E, spending $30 of credits and making extensive use of both the "variations" feature and the tool that lets you request modifications to existing images by painting over parts you want to regenerate. Really interesting to read as an example of a "real world" DALL-E project.

Via Hacker News



Ben Welsh built a small Python library that guesses if a URL points to an article on a news website, or if it's more likely to be a category page or /about page or similar. I really like this as an example of what you can do with a tiny machine learning model: the model is bundled as a ~3MB pickle file as part of the package, and the repository includes the Jupyter notebook that was used to train it.

Via @palewire

Cleaning data with sqlite-utils and Datasette

Cleaning data with sqlite-utils and Datasette

I wrote a new tutorial for the Datasette website, showing how to use sqlite-utils to import a CSV file, clean up the resulting schema, fix date formats and extract some of the columns into a separate table. It's accompanied by a ten minute video originally recorded for the HYTRADBOI conference.

Via @simonw

Free software activities in July 2022

Here is my monthly update covering what I have been doing in the free software world during July 2022 (previous month):

Reproducible Builds

The motivation behind the Reproducible Builds effort is to ensure no flaws have been introduced during this compilation process by promising identical results are always generated from a given source, thus allowing multiple third-parties to come to a consensus on whether a build was compromised.

This month, I:


Elsewhere in our tooling, I made the following changes to diffoscope, including preparing and uploading versions 218, 219 and 220 to Debian:




Debian LTS

This month I have worked 12 hours on the Extended LTS project. The regular LTS was inactive during July, as stretch moved to extended (ELTS) support, but Debian buster remains under standard Debian security support through August.

You can find out more about the LTS project through the following video:



Google Calendar can subscribe to ICS calendar feeds... but polls for updates less than once every 24 hours (as far as I can tell) greatly limiting their usefulness. Derek Antrican wrote a script using Google App Script which fixes this by polling calendar URLs more often and writing them to your calendar via the write API.

Via Kevin Marks



John Wiseman's "Daily maps of GPS interference" - a beautiful interactive globe (powered by Mapbox GL) which you can use to see points of heaviest GPS interference over a 24 hour period, using data collected from commercial airline radios by ADS-B Exchange. "From what I can tell the most common reason for aircraft GPS systems to have degraded accuracy is jamming by military systems. At least, the vast majority of aircraft that I see with bad GPS accuracy are flying near conflict zones where GPS jamming is known to occur."

Via @lemonodor

Introducing sqlite-lines - a SQLite extension for reading files line-by-line

Introducing sqlite-lines - a SQLite extension for reading files line-by-line

Alex Garcia wrote a brilliant C module for SQLIte which adds functions (and a table-valued function) for efficiently reading newline-delimited text into SQLite. When combined with SQLite's built-in JSON features this means you can read a huge newline-delimited JSON file into SQLite in a streaming fashion so it doesn't exhaust memory for a large file. Alex also compiled the extension to WebAssembly, and his post here is an Observable notebook post that lets you exercise the code directly.

Via @agarcia_me

Weeknotes: Joining the board of the Python Software Foundation

A few weeks ago I was elected to the board of directors for the Python Software Foundation.

I put myself up for election partly because I've found myself saying "I wish the PSF would help with ..." a few times over the years, and realized that joining the board could be a more useful way to actively participate, rather than shouting from the sidelines.

I was quite surprised to win. I wrote up a short manifesto - you can see that here - but the voting system lets voters select as many candidates as they like, so it's possible I got in more on broad name recognition among the voters than based on what I wrote. I don't think there's a way to tell one way or the other.

I had my first board meeting on Wednesday, where I formally joined the board and got to vote on my first resolutions. This is my first time as a board member for a non-profit and I have learned a bunch already, with a lot more to go!

Board terms last three years. I expect it will take me at least a few months to get fully up to speed on how everything works.

As a board member, my primary responsibilities are to show up to the meetings, vote on resolutions, act as an ambassador for the PSF to the Python community and beyond and help both set the direction for the PSF and ensure that the PSF meets its goals and holds true to its values.

I'm embarassed to admit that I wrote my election manifesto without a deep understanding of how the PSF operates and how much is possible for it to get done. Here's the section I wrote about my goals should I be elected:

I believe there are problems facing the Python community that require dedicated resources beyond volunteer labour. I'd like the PSF to invest funding in the following areas in particular:

  • Improve Python onboarding. In coaching new developers I've found that the initial steps to getting started with a Python development environment can be a difficult hurdle to cross. I'd like to help direct PSF resources to tackling this problem, with a goal of making the experience of starting to learn Python as smooth as possible, no matter what platform the learner is using.
  • Make Python a great platform for distributing software. In building my own application, Datasette, in Python I've seen how difficult it can be to package up a Python application so that it can be installed by end-users, who aren't ready to install Python and learn pip in order to try out a new piece of software. I've researched solutions for this for my own software using Homebrew, Docker, an Electron app and WASM/Pyodide. I'd like the PSF to invest in initiatives and documentation to make this as easy as possible, so that one of the reasons to build with Python is that distributing an application to end-users is already a solved problem.

I still think these are good ideas, and I hope to make progress on them during my term as a director - but I'm not going to start arguing for new initiatives until I've learned the ropes and fully understood the PSF's abilities, current challenges and existing goals.

In figuring out how the board works, one of the most useful pages I stumbled across was this list of resolutions voted on by the board, dating back to 2001. There are over 1,600 of them! Browsing through them gave me a much better idea of the kind of things the board has the authority to do.

Scraping data into Datasette Lite

Because everything looks like a nail when you have a good hammer, I explored the board resolutions by loading them into Datasette. I tried a new trick this time: I scraped data from that page into a CSV file, then loaded up that CSV file in Datasette Lite via a GitHub Gist.

My scraper isn't perfect - it misses about 150 resolutions because they don't exactly fit the format it expects, but it was good enough for a proof of concept. I wrote that in a Jupyter Notebook which you can see here.

Here's the CSV in a Gist. The great thing about Gists is that GitHub serve those files with the access-control-allow-origin: * HTTP header, which means you can load them cross-domain.

Here's what you get if you paste the URL to that CSV into Datasette Lite (using this new feature I added last month):

A screenshot of the psf-resolutions table in Datasette, showing 1,654 rows

And here's a SQL query that shows the sum total dollar amount from every resolution that mentions "Nigeria":

with filtered as (
  select * from
    "dollars" is not null
    and "text" like '%' || :search || '%'
  'Total: $' || printf('%,d', sum(dollars)) as text,
  null as date
from filtered
union all
  text, date
from filtered;

A screenshot of the results of that query, returning 132 rows the top of which says Total: $163,849

I'm using a new-to-me trick here: I use a CTE to filter down to just the rows I am interested in, then I create a first row that sums the dollar amounts as the text column and leaves the date column null, then unions that against the rows from the query.

Important note: These numbers aren't actually particularly useful. Just because the PSF board voted on a resolution does not mean that the money made it to the grantee - there are apparently situations where the approved grant may not be properly claimed and transferred. Also, my scraper logic isn't perfect. Plus the PSF spends a whole lot of money in ways that don't show up in these resolutions.

So this is a fun hack, and a neat way to start getting a general idea of how the PSF works, but any numbers it produces should not be taken as the absolute truth.

As a general pattern though, I really like this workflow of generating CSV files, saving them to a Gist and then opening them directly in Datasette Lite. It provides a way to use Datasette to share and explore data without needing to involve any server-side systems (other than GitHub Gists) at all!

Big-endian bugs in sqlite-fts4

sqlite-fts4 is a small Python library I wrote that adds SQLite functions for calculating relevance scoring for full-text search using the FTS4 module that comes bundled with SQLite. I described that project in detail in Exploring search relevance algorithms with SQLite.

It's a dependency of sqlite-utils so it has a pretty big install base, despite being relatively obscure.

This week I had a fascinating bug report from Sarah Julia Kriesch: Test test_underlying_decode_matchinfo fails on PPC64 and s390x on openSUSE.

The s390x is an IBM mainframe architecture and it uses a big-endian byte order, unlike all of the machines I use which are little-endian.

This is the first time I've encountered a big-endian v.s. little-endian bug in my entire career! I was excited to dig in.

Here's the relevant code:

 def decode_matchinfo(buf): 
     # buf is a bytestring of unsigned integers, each 4 bytes long 
     return struct.unpack("I" * (len(buf) // 4), buf) 

SQLite FTS4 provides a matchinfo binary string which you need to decode in order to calculate the relevance score. This code uses the struct standard library module to unpack that binary string into a list of integers.

My initial attempt at fixing this turned out to be entirely incorrect.

I didn't have a big-endian machine available for testing, and I assumed that the problem was caused by Python interpreting the bytes as the current architecture's byte order. So I applied this fix:

    return struct.unpack(">" + ("I" * (len(buf) // 4)), buf)

The > prefix there ensures that struct will always interpret the bytes as little-endian. I wrote up a TIL and shipped 1.0.2 with the fix.

Sarah promptly got back to me and reported some new failing tests.

It turns out my fix was entirely incorrect - in fact, I'd broken something that previously was working just fine.

The clue is in the SQLite documentation for matchinfo (which I really should have checked):

The matchinfo function returns a blob value. If it is used within a query that does not use the full-text index (a "query by rowid" or "linear scan"), then the blob is zero bytes in size. Otherwise, the blob consists of zero or more 32-bit unsigned integers in machine byte-order (emphasis mine).

Looking more closely at the original bug report, the test that failed was this one:

            (1, 2, 2, 2),
def test_underlying_decode_matchinfo(buf, expected):
    assert expected == decode_matchinfo(buf)

That test hard-codes a little-endian binary string and checks the output of my decode_matchinfo function. This is obviously going to fail on a big-endian system.

So my original behaviour was actually correct: I was parsing the string using the byte order of the architecture, and SQLite was providing the string in the byte order of the architecture. The only bug was in my test.

I reverted my previous fix and fixed the test instead:

            if sys.byteorder == "little"
            else b"\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02",
            (1, 2, 2, 2),
def test_underlying_decode_matchinfo(buf, expected):
    assert expected == decode_matchinfo(buf)

sys.byteorder reports the byte order of the host system, so this test now passes on both little-endian and big-endian systems.

There was one remaining challenge: how to test this? I wasn't going to make the same mistake of shipping a fix that hadn't actually been exercised on the target architecture a second time.

After quite a bit of research (mainly throwing the terms docker and s390x into the GitHub code search engine and seeing what I could find) I figured out a fix. It turns out you can use Docker and QEMU to run an emulated s390x system - both on a Mac loptop and in GitHub Actions.

Short version:

docker run --rm --privileged multiarch/qemu-user-static:register --reset
docker run -it multiarch/ubuntu-core:s390x-focal /bin/bash

For the longer version, check my TIL: Emulating a big-endian s390x with QEMU.

Releases this week

TIL this week

Packaging Python Projects with pyproject.toml

Packaging Python Projects with pyproject.toml

I decided to finally figure out how packaging with pyproject.toml works - all of my existing projects use setup.py. The official tutorial from the Python Packaging Authority (PyPA) had everything I needed.

Fastest way to turn HTML into text in Python

Fastest way to turn HTML into text in Python

A light benchmark of the new-to-me selectolax Python library shows it performing extremely well for tasks such as extracting just the text from an HTML string, after first manipulating the DOM. selectolax is a Python binding over the Modest and Lexbor HTML parsing engines, which are written in no-outside-dependency C.

Via Found selectolax in readthedocs/embed/v3/views.py

SQLite Internals: Pages & B-trees

SQLite Internals: Pages & B-trees

Ben Johnson provides a delightfully clear introduction to SQLite internals, describing the binary format used to store rows on disk and how SQLite uses 4KB pages for both row storage and for the b-trees used to look up records.

Via @benbjohnson

Cosmopolitan: Compiling Python

Cosmopolitan: Compiling Python

Cosmopolitan is Justine Tunney's "build-once run-anywhere C library" - part of the αcτµαlly pδrταblε εxεcµταblε effort, which produces wildly clever binary executable files that work on multiple different platforms, and is the secret sauce behind redbean. I hadn't realized this was happening but there's an active project to get Python to work as this format, producing a new way of running Python applications as standalone executables, only these ones have the potential to run unmodified on Windows, Linux and macOS.

Van Electrics

How do you bring power to a van without making anything melt or electrocuting yourself? Carefully, of course.

Sliding Camper Bed

It's time to build a bed - a sliding bed, to be precise. But why did I make it slide, and why build it out of aluminium?

Camper Van Insulation

The battle against heat and entropy is neverending, but it's time to at least try and stem the tide with some insulation.

Van Roof, Fans, and Solar Panels

It's time to cut holes in the van's roof, to install the solar panels, a fan, and the LTE antenna!

Camper Van Flooring

What's in a floor? Well, it turns out, it's some combination of insulation, subfloor and finish layer. Let's look at the options, and how to install, all three.

Planning A Van

The first step in building a camper van is, well, choosing the van. But how are they different, and which should you pick?

Mini Hovercraft

I challenged myself to build a mini hovercraft in only a few days as part of a new video series!

Aviation Weather Map

Sure, you could look outside for the current weather, but isn't it a lot more fun to build a live-updating map instead?

E-Paper Weather Display

What happens when you combine two-colour e-paper with bad Python? Weather! Well, weather displays.

The RFID Checklist

What do you do when you want to massively over-engineer a solution to forgetting your phone charger?

Error'd: Movement Activated

By Lyle Seaman

England and the United States, according to the old witticism, are two countries separated by a common language. The first sample deposited in our inbox by Philip B. this week probably demonstrates the aphorism. "I'm all in favor of high-tech solutions but what happens if I only want (ahem) a Number One?" he asked. I read, and read again, and couldn't find the slightest thing funny about it. Then I realized that it must be a Brit thing.

We call it a Bowel MOVEMENT in North American English


An anonymous reader shared this with us, asking "Shouldn't it be a 4xx error code?" Poe's law makes me reluctant to explain that not all software is a web site, for fear there's an anonymous tongue planted deep within a giant cheek.



Contrarian Amy K. querulously questioned "To Google, does False mean true?"



Brave Bartek Horn confirmed "Testing is important. I'm not sure if they are brilliant or hypocrites." Both is always possible.



Finally, another anonymous poster from the land of the frei thinks this discount might be too gut to be wirklich. "That doesn't seem right," they understated.



[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

CodeSOD: Image Uploading

By Remy Porter

The startup life is difficult, at the best of times. It's extra hard when the startup's entire bundle of C-level executives are seniors in college. For the company Aniket Bhattacharyea worked for, they had a product, they had a plan, and they had funding from a Venture Capitalist. More than funding, the VC had their own irons in the fire, and they'd toss subcontracting work to Aniket's startup. It kept the lights on, but it also ate up their capacity to progress the startup's product.

One day, the VC had a new product to launch: a children's clothing store. The minimum viable product, in this case, was just a Magento demo with a Vue Storefront front-end. Strict tutorial-mode stuff, which the VC planned to present to stakeholders as an example of what their product could be.

Everything was going fine until five minutes before the demo. The VC discovered a show-stopping problem: "The storefront is showing obscene images!"

The "obscene" pictures were just photographs of female models, typical for a clothing storefront. But since this was a children's store, the VC was in a panic. "I can't demo this to other investors!"

Setting aside the problems of why the VC hadn't noticed this more than five minutes before, Aniket was given his mission: take a pile of replacement images and upload them to the server.

Well, with the configuration the server had, there was no way to upload images through the UI. Aniket could SSH in, but that presented a new problem: he didn't have write access to the directory where the files lived.

While Aniket tried to make a plan of how to fix this, his phone blew up with texts from both the VC and from the CEO of Aniket's startup. "What's the status?" "What's the ETA?" "You need to go faster."

Aniket couldn't overwrite the images, but he did have access to some commands via sudo, specifically managing Nginx. And that gave Aniket an idea.

All the images served by the storefront lived under the url /images. Aniket wrote an Nginx rule to redirect /images to port 8000, dropped the new images in a directory that he did have write access to, and then ran python -m http.server 8000 to launch a webserver hosting the files in that directory on port 8000.

The VC got to start their demo on time. Aniket closed his laptop and texted his CEO. "I've done the job, but my laptop is now broken. I'm going to take it in for repair." Aniket then went out for a much needed walk and took the rest of the afternoon off.

[Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!

CodeSOD: Junior Reordering

By Remy Porter

"When inventory drops below the re-order level, we automatically order more," was how the product owner described the requirement to the junior developer. The junior toddled off to work, made their changes. They were not, however, given sufficient supervision, any additional guidance, or any code-reviews.

Dan found this in production:

let item = backend.fetchItem(itemId); if (item.quantityOnHand <= item.reorderLevel) { //automatic re-order item.quantityOnHand++; } else { item.quantityOnHand--; } backend.updateItem(item);

As you might imagine, "ordering refills" is slightly more complicated than "just alter the inventory quantity". This code didn't work. It should never have gotten released. And it's definitely not the junior developer's fault.

[Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!

The Contract Access Upgrade

By Remy Porter

Microsoft Access represents an "attractive nuisance". It's a powerful database and application development platform designed to enable end users to manage their own data. Empowering users is, in principle, good. But the negative side effect is that you get people who aren't application developers developing applications, which inevitably become business critical.

A small company developed an Access Database thirty years ago. It grew, it mutated, it got ported from each Access version to the next. Its tendrils extended outwards, taking over more and more of the business's processes. The ability to maintain and modify the database decayed, updates and bugfixes got slower to make, the whole system got slower. But it limped along roughly at the speed the business required… and then Larry, the user who developed, retired.

And that's where Henrietta comes in. She was hired on contract to take this ancient, crufty, Access database and reimplement it in C#, with a WPF front end (because "web application" sounded too scary a shift), with a SQL Server backend. The project was already in-flight, under the sober guidance of internal developers who had analyzed the Access database in detail.

There was already a source control server set up- an SVN server. Henrietta found that odd, but odder still was the change history: 100,000 commits from fewer than 20 developers, in only six years. Now, that's not ridiculous- but it's a steady cadence of two commits per developer per day, including weekends and holidays.

There was, fortunately, a lot of documentation. None of it was about the code, but instead about the organization. Who works for who, when a given management position was created, how long someone had been in that position. Nothing about the software internals. Definitely nothing about the custom UI framework someone had bolted on top of WPF.

When Henrietta noticed she couldn't find documentation about coding standards, or code review processes, she went to one of the other developers and asked: "What's our coding standard? And how do we handle code reviews?"

"Our whats? I don't know what those are."

Well, Henrietta finished up her first ticket, had her commit, and then did what all the other developers did: committed it right into the trunk of the repository.

Now, that was her first commit, and it was a training commit: she just needed to add some validation to the UI to make sure it didn't allow empty form fields. With that under her belt, her boss assigned her a new, more complex task. It needed her to make changes in the database, add new workflows to the application, a few screens, and so on.

"So," she asked, "is there a spec for this somewhere?"

"Oh," her boss said, "we don't write specs before we develop. Develop the feature and then write specs to describe its behavior."

Well, Henrietta didn't like to work that way, so she started by drawing mockups in a diagramming tool. This, as it turned out, was completely new to the organization. No one had ever done a screen mock up before. The handful of diagrams that did exist all were drawn with the same tool: Microsoft Paint.

Once Henrietta had decided what her feature was going to look like, she made a feature branch to start her work- and discovered that the way the application was architected, you couldn't conveniently develop in a local branch. In fact, you couldn't even get it to easily point at a development database. Everything had to go through trunk and get pushed to a dev server for testing- one dev server which all the developers had to share.

When Henrietta's code didn't work, she found out why: there was a "convenience library" developed by her boss that contained critical functionality for the application. If you didn't call certain methods in that library, the application wouldn't work. These methods were undocumented, and also, no one knew where the code lived. They only used the binary, compiled version of the library.

Once Henrietta had reshaped her code around the arcane bondage that the library demanded of her, she had reached the point where she didn't understand her own code anymore. Before she can get into the work of testing the code, a new issue rises to the top of the priority list and she's told to stop what she's doing and tackle that.

This was meant to integrate into a 3rd party SOAP-based web service. It transports sensitive data… over HTTP. There's no encryption at all. The WSDL file contains overlapping definitions of two different versions of the API, and the contradictions mean it's possible and easy to send malformed requests with unpredictable behavior. And when it does catch an error, it simply responds with "Error".

At this point, months had passed. So it was time for the organization to change their tooling. Everyone was commanded to update to the newest version of .NET Core, a new version of the IDE, and now a new code review tool. Crucible was rolled out with no instructions or guidance, and developers were expected to just start using it.

This delayed Henrietta's work on the 3rd party interface, so she went back to the complex feature with database changes. She discovered there are no foreign keys. Also, because there weren't any foreign keys, the data can't have foreign keys added, because the columns that should enforce referential integrity don't match up correctly.

Meanwhile, the Project Owner, frustrated by the slow development progress, started writing code themselves. They used the wrong set of project files, pushed it directly to a customer, and caused multiple crashes and downtime for that customer.

Back to the database, Henrietta discovered that there's really no abstraction around it, implementation details of the database have to be reimplemented into the UI. She built a UI control that encapsulated at least some of that functionality, and added it to the global UI library. Her boss noticed that change, and told her, "no, that's specific to your module, put it in a local library." Her boss's boss noticed that change, and said, "that UI control is very useful, put it in the global library."

Neither boss could agree on the correct location for it, so as a compromise, they created a new "global" library for "accessory controls".

Frustrated by all of this, Henrietta decided that she should try and get a local development environment set up. She ended up spending a few days on this, only to discover that certain stored procedures call out to other databases via hard-coded connection strings, and if she tried to run a local copy she'd simply start mangling data in other, production databases. Her boss noticed her spending time on this, and complained that she was wasting her time.

When Henrietta finally finished her big feature, she deployed it to the test environment. It blew up, but for reasons she could easily understand, and it only took a few days to fix it. The customer tested the feature, and it wasn't what they thought it was going to be. Once they understood the requirements, which weren't their original requirements, they were happy with the feature, but wished they'd gotten the feature they asked for. With this sign off, the Henrietta pushed the change to production, manually (because why would you automate deployments?). The customer's application immediately crashed because their database was incompatible with the current version of the code. There was, of course, no rollback procedure, so Henrietta was expected to spend a weekend combing through the customer's database to figure out which field contained a value that crashed the application.

After that, frustrated, Henrietta went to her boss. "Why are we doing things this way? We're spinning our wheels and making no progress because we have no process, no organization, and everything we do is fragile and we're not doing anything to fix the fundamental problems."

"That's the way we do it," her boss said. "Stop asking questions about everything, don't question anything, we're not going to change that. Just do your work or find a new job."

Henrietta took that advice to heart, and found a new job. All in all, she spent 8 months fighting her way upstream against a river of crap. It wasn't worth it.

[Advertisement] Otter - Provision your servers automatically without ever needing to log-in to a command prompt. Get started today!

CodeSOD: A Sniff

By Remy Porter

In November of 2020, the last IE release happened, and on June 15th of this year, the desktop app officially lost support on Windows 10. But IE never truly dies.

Eleanor inherited a web application for a news service. And, you won't be shocked that it's still doing user-agent sniffing to identify the browser. That's just plain bad, but by the standards of user-agent sniffing, it's not terrible code.

function isIE() { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false; }

If it contains msie, split on that and assume the bit which follows is only the version number. Return the version number, or return false if it's not Internet Explorer.

Now, this method contains an annoying abuse of JavaScript that's common: sometimes this method returns a number, sometimes it returns false. Because of that, it needs to be called like this:

if (isIE() && isIE() <= 10) { alert("The browser you are using is too old and not supported anymore. Please get a newer one."); }

At first glance, you might think, couldn't I just do isIE() <= 10? Why use the initial && at all? And it's because of JavaScript's type coercion: false <= 10 is true.

Now, in fairness, false being roughly equivalent to zero is not an uncommon feature in languages, but the result here is just an annoying call that has to do the same string mangling twice because nobody thought through what the purpose of the function actually was. Then again, the whole function shouldn't be there, because it's 2022 and there's simply no excuse for this user-agent sniffing game.

[Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.

Error'd: Poetry in Motion

By Lyle Seaman

So much cringe here today. Obviously, the first submission below just reeks of professional sycophantry on so many levels. I can't decide which is more offensive, the barefoot butcher or the grotesque attempt to humanize a vogon. To take the edge off, I'll start you out with a very old shaggy dog punchline. The actual setup for this groaner is pretty horrible, though someone on the internet has dutifully compiled the definitive collection of all known variants. Sparing you that misery, I'll cut straight to the chase: Rudolf the Red knows rain, dear. Now you can decide which gag is more worthy: that, or this.

My English vocabulary cannot convey the complexity of my feelings about Beatrix W. who shared a monstrosity, reporting innocently "I was just looking for a book about AppleScript by a Japanese author." Is there a Japanese word for "thank you for this gift but never do it again?"



Or maybe there's a German word for it. What say you, Friend Foo? This week Foo A. has a fun one for us. "Halt entfällt means stop omitted, so they're suggesting I should change to a train that doesn't even stop there!" Clearly, they're expecting you to jump nimbly aboard as it rolls through. I hope it at least slows down.



Newlyread Rudi sent in a screenshot titled &lt;insert subject/title here&gt; saying "I guess the game is to figure out what the location is? (The reason I used HTML entities in the title is because in a previous attempt to submit this WTF I used the actual characters, but resulted in a 500 error, so now I'm checking if that might have been the reason why. Which I guess would be a meta-WTF. :) )" So it might, and it wouldn't be our first. As the other joke goes, "what happens if you try it again?"



Easy-listening Dan snapped a shot of his infotainment system, remarking "I think it's a Reverse HTML Injection. At first, I thought they'd fix it quickly, but it's been like this for weeks." I've seen submissions like this before, but I'm not sure if I've run one.



With the last word for this week, Micha Thomas has us going and coming. "Coming from the same company that gave us the infamous Click 'Start' to shutdown Windows, this is what my Outlook greeted me with this morning"



[Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.

CodeSOD: Classical Solutions

By Remy Porter

CSS classes give us the ability to reuse styles in a meaningful way, by defining, well, classes of styling. A common anti-pattern is to misuse classes and define things like "redTextUnderlined" as a CSS class. Best practice is that a CSS class should define the role, not the appearance. So that class might be better named "validationError", for example. A class will frequently bundle together a bunch of stylesheet properties into a single, meaningful name. That's the ideal approach, anyway.

Now, Olivia's predecessor had an… interesting philosophy of how to use CSS classes.

.sup, .headerLinkMain, .headerLinkName, .headerLinkAdmin, .systemMsgMain, .studentsLegendText, .studentPagingSelected, .studentPagingLink, .studentErrorLegend, .studentsBatchEditShellHeader, .warningError, .warningErrorTitle, .staffLegendText, .staffEditLabelRequire, .staffEditLabel, .staffEditLink, .completeNote, .staffNumberLinks, .staffNotOK, .staffViewPrevNextLink, .staffViewPrevNext, .staffViewPrevNextError, .staffViewPrevNextErrorLink, .staffNoteShowRecords, .staffListFont01, .courseListFont, .staffTotalText, .warningErrorStaff, .warningErrorStaffTitle, .warningLoginStaff, .warningLoginLabel, .textAdminSection, .textAdminSectionError, .textAdminSection102, .studentEditLabelRequire, .studentEditLabel, .studentDOB, .studentEditLabelError, .studentEditLabelRequireError, .textDemographicPopup, .titleStudentDemogs, .textStudentDemogs, .textSection, .textSectionBold, .classesText, .classesList, .classUsrMultiple, .classNote01, .classNote02, .subTitleAdminSection, .warningErrorClass, .warningErrorClassTitle {font-size: 11px;} .priFriHeaderText, .headerMain, .headerLinkMain, .headerLinkName, .headerAdmin, .headerLinkAdmin, .studentsBatchEditShellHeader, .headerLinkSu, .tabLink, .titleTableRed, .titleTableBlue, .textBlueBold, .textRedBold, .error, .schoolLinkBold, .blueLight, .tableTitleGreen, .textGreenBold, .titleGreenBig, .headerSu, .loginBlue, .helpApps .moreLinkRed, .goLinkRed, .moreLinkBlue, .goLinkBlue, .faqLink, .listBlueBold, .titleSettings, .enrollmentStatusBoxHeaderText, .studentsBatchEditSelectsText, .studentsSelectsLabel, .studentPagingSelected, .studentListLabel, .studentListLabelLink, .studentListBold, .studentErrorLegend, .studentErrorLabel, .studentListError, .warningErrorTitle, .staffNoteSave, .staffLegendText, .staffEditLabelRequire, .noteUnsavedStaffRecord, .staffSearchLabel, .staffNumberLinks, .staffViewPrevNextLink, .staffViewPrevNext, .staffViewLabelSort, .staffViewLabel, .courseViewLabel, .staffViewPrevNextErrorLink, .staffViewPrevNextError, .staffEditLinkBold, .backLink, .warningErrorStaffTitle, .warningLoginStaff, .subTitleAdminSection, .studentEditLabelRequire, .studentEditLabelRequireError, .titleDemographicPopup, .titleStudentDemogs, .subTitleDownload, .textDownload03, .labelDownload, .subTitleSections, .textSectionBold, .classesViewEditLink, .classesLable, .classAddLabel, .tdBold, .backLinkUser, .classAdmLabel, .subTitleClasses, .warningErrorClassTitle, .dibelsTransitionMessage {font-weight: bold;} .titleSections, .staffLegendText, .staffNoteCancel, .staffNotOK, .staffTotalText, .staffSearchLabel, .textAdminSection, .textAdminSection102, .studentEditLabelRequire, .studentEditLabel, .studentDOB, .textDownload02, .subTitleSections, .textSection, .textSectionBold, .subTitleSectionsClasses, .classAddLabel {color: #4B4B47;}

Now, you have a "good" mix of functional class names (.textStudentDemogs) and plenty that clearly involve actual styling (.loginBlue). But of course, that's not the WTF, the WTF is this developer's approach to organizing stylesheet rules: each style property is its own rule. Yes, they constantly repeated this pattern, all through the CSS file. It's "convenient", if you want to know all the classes of elements that explicitly have an 11 point font, but it's basically useless for anything else.

I find myself staring at it, trying to understand the logic that drove this design pattern. Did they write a script to generate this? Did they just do all their styling this way? How? Why? I feel like an archaeologist who just found an inscrutable relic and is stuck saying, "it must have served some ritual purpose". It's not an answer, it's just a shrug. I can't understand this, and frankly, I don't know that I want to.

[Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.

CodeSOD: Repetition is an Echo

By Remy Porter

Annie works in a bioinformatics department. There's a lot of internally developed code, and the quality is… special. But it's also got features that are on their critical path of doing their jobs.

One example is that, based on one input form, the next input form needs to display a drop down. The drop down elements don't change, but the individual item that's selected does. So, if the rank HTTP POST variable is set, we want to make sure the matching entry is selected.

if(isset($_POST['rank'])){ if($_POST['rank']=='superkingdom'){ echo "<option selected='selected'>superkingdom</option>"; echo "<option>phylum</option>"; echo "<option>class</option>"; echo "<option>order</option>"; echo "<option>family</option>"; echo "<option>genus</option>"; echo "<option>species</option>"; }elseif($_POST['rank']=='phylum'){ echo "<option>superkingdom</option>"; echo "<option selected='selected'>phylum</option>"; echo "<option>class</option>"; echo "<option>order</option>"; echo "<option>family</option>"; echo "<option>genus</option>"; echo "<option>species</option>"; } elseif($_POST['rank']=='class'){ echo "<option>superkingdom</option>"; echo "<option>phylum</option>"; echo "<option selected='selected'>class</option>"; echo "<option>order</option>"; echo "<option>family</option>"; echo "<option>genus</option>"; echo "<option>species</option>"; } elseif($_POST['rank']=='order'){ echo "<option>superkingdom</option>"; echo "<option>phylum</option>"; echo "<option>class</option>"; echo "<option selected='selected'>order</option>"; echo "<option>family</option>"; echo "<option>genus</option>"; echo "<option>species</option>"; } elseif($_POST['rank']=='family'){ echo "<option>superkingdom</option>"; echo "<option>phylum</option>"; echo "<option>class</option>"; echo "<option>order</option>"; echo "<option selected='selected'>family</option>"; echo "<option>genus</option>"; echo "<option>species</option>"; } elseif($_POST['rank']=='genus'){ echo "<option>superkingdom</option>"; echo "<option>phylum</option>"; echo "<option>class</option>"; echo "<option>order</option>"; echo "<option>family</option>"; echo "<option selected='selected'>genus</option>"; echo "<option>species</option>"; } elseif($_POST['rank']=='species'){ echo "<option>superkingdom</option>"; echo "<option>phylum</option>"; echo "<option>class</option>"; echo "<option>order</option>"; echo "<option>family</option>"; echo "<option>genus</option>"; echo "<option selected='selected'>species</option>"; } }

Talk about duplicated code. And, of course, there's no else clause.

And, of course, there's a bonus SQL injection attack that Annie found:

$sql = "SELECT locus,accession,length,date,definition,organisim,host". " FROM `gb` WHERE organisim LIKE '%".$_POST['orgname']."%'";
[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

CodeSOD: The Device Search

By Remy Porter

I started writing a paragraph about why this code Gilda found was bad, and then I had to delete it all, because I wasn't putting the entire block in context. At a glance, this looks almost fine, but I thought I spotted a WTF. But only when I thought about the fact that this C code runs inside of a loop that I realized the real problem.

rsts = get_device_by_id ( movq_p->nxt_device_id, &devc ); if ( ( rsts == CC_VL_SUCCESS ) && ( strcmp ( devc.device_type, SPECIFIC_DEVICE ) == 0 ) ) { specific_device_flag = CC_VL_TRUE; } /* * Process device... */ if ( specific_device_flag ) { ... }

So, inside of a loop, this iterates across a series of devices, represented by their nxt_device_id. They load that into a device struct, devc, and do some validation on the type of device in question. If the type of device is SPECIFIC_DEVICE, then we set a flag to represent that. Later in the code, we have special processing if it's that SPECIFIC_DEVICE.

The problem here is that this code runs inside a loop and specific_device_flag is never set to false. So as we iterate across the devices, if one of them is a SPECIFIC_DEVICE, every future device will also be treated as if it's a SPECIFIC_DEVICE.

Gilda writes: "Apparently this has been in the baseline code since before the project it is in was branched off so I don't know if anything was deleted between setting the specific_device_flag and testing for it."

The beauty of this bug is that depending on the order of the device enumeration, or the number of connected devices, it might never be seen. In fact, that's been mostly the case for Gilda's company. There have been a number of tickets resolved by "try unplugging all the devices and plugging them back in to different ports" or just "reboot the system". No one knew why.

My kingdom for an else clause. Or just a boolean assignment expression. Or, if you really want to use CC_VL_TRUE and not just "non-zero is true", a ternary might actually be more readable.

I've read C programming styleguides that require every if to have an else, and if the else is empty, a comment justifying its emptiness. I usually think that's overkill, but this code sample is a strong argument in favor of such a guideline.

[Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.

CodeSOD: Tying Two Strings

By Remy Porter

Lets say you have a simple problem. You have a string variable, and you'd like to store that string in another variable. You have a vague understanding of string immutability and something about the way references work in C#, but you don't really understand any of that. So, what do you do?

Well, if you're Tina's co-worker, you do this:

expiresIn = $"{accessToken.ExpiresIn}"

Now, the "advantage" of this is that it creates a new string object. So expiresIn holds a reference to a different piece of memory than accessToken.ExpiresIn. Is that valuable? Not in this case. expiresIn is a local variable that goes out of scope well before accessToken does.

The worst part? This co-worker tends to do this by default when assigning strings to variables, even inside of loops, which means there are a lot of unnecessary string copies going on, and thus a lot of extra garbage collection. And in the end, for no real benefit.

[Advertisement] Otter - Provision your servers automatically without ever needing to log-in to a command prompt. Get started today!

Error'd: Untimely Ripp'd

By Lyle Seaman

This week we bring you a whole set of submissions that prove, once again, that web programmers just can't keep track of time. But first, a sop with a regular. Is a flying NaN safer than a Camel? I wouldn't recommend making either a habit.

Friend Argle B.is right, submissions to Error'd from actual desktop applications are rare. He explanes "I routinely expect this from websites. I did NOT expect to find it in MSFS. It came up when I deleted all the digits." Good for you, Mr. B. I can't type a lick without digits.



This week, johng shared us a headscratcher. He explains it thus: "Well, we all knew that the timeloop was coming but apparently the timeloop already occurred in 2020 (huh, pandemic you say?), so Meetup.com is ahead of us here and lists the devices where you've logged in and enabled push notifications, ordered by timeloop stamp." I can't figure out how they did this.



A bad movie fan, wisely anonymous, suspects his taste in cinema may degrade in his dotage. "I wonder how much $19.99 will be worth in 977 years when I finally see the movie. At least there's a bonus."



Nostalgia for his youth lead Michael to first seek, then shun a classic film. "Do I feel lucky^H^H^H^H^Hold?", he asked rhetorically. Well? Do you, punk?



Finally, antiquarian AJ found a rare copy of a moldy manga at Amazon. "Sadly this old manga is currently not available, but I hear even Napoleon liked it." Who knew?



[Advertisement] Continuously monitor your servers for configuration changes, and report when there's configuration drift. Get started with Otter today!

CodeSOD: Compiling Datasets

By Remy Porter

Managing datasets is always a challenging task. So when Penny's co-worker needed to collect a pile of latitude/longitude positions from one dataset and prepare it for processing in a C++ program, that co-worker turned to the tools she knew best. Python and C++.

Now, you or I might have dumped this data to a CSV file. But this co-worker is more… performance minded than us. So the Python script didn't generate a CSV file. Or a JSON document. Or any standard data file. No, that Python script generated a C++ file.

// scraped using record_data.py const std::vector<GpsPt> route_1 = { { 35.6983464357, -80.4201474895}, { 35.6983464403, -80.4201474842}, // several hundred more lines like this }; const std::vector<GpsPt> route_2 = { { 35.8693464357, -80.1420474895}, { 35.8693464392, -80.1420474821}, // another thousand lines }; // more routes like this

Now, there are clear advantages to compiling in thousands of data-points instead of reading in data from a data file. First, no one can easily change the data points once you've built your code, which means no one can corrupt your data or make the file invalid easily. Second, the runtime performance is going to be significantly better and your compilation will be much slower, encouraging developers to think more carefully about their code before they hit that compile button.

I think this is the future of high performance computing, right here. No more are we going to pay the high costs of parsing data and letting it change without recompilation. Burn that data into your code.

[Advertisement] Otter - Provision your servers automatically without ever needing to log-in to a command prompt. Get started today!

CodeSOD: Double Narcissism

By Remy Porter

In mythology, Narcissus was so enraptured by his own beauty that he turned away all potential lovers until he came across a still pool of water. Upon spying his reflection, he fell in love and remained there for the rest of his life. After his death, a narcissus flower grew in his place- a daffodil or jonquil.

One important element of Narcissus's myth is that while yes, he was incredibly self-absorbed, he was also beautiful. That's less true for this C# code from frequent commenter Sole Purpose Of Visit. There is nothing beautiful about this code.

namespace Initrode.Extensions { public class PhbDouble { protected double m_Value; public PhbDouble(double avalue); public double Value { get; set; } public static PhbDouble Create(double avalue); } }

Now, it's easy to see that this is a useless wrapper class around a double. But what of that Phb on the front? Well this is anonymized, but in the original code, those were the developer's initials. Every class this developer wrote was tagged Phb. Every single one.

Sole Purpose Of Visit adds:

And no, there is/was no such thing as PhbInt or (rather sadly) a PhbBool.

The "signature" does, Sole assures us, "make it nice and easy to delete all his code".

Delete away.

[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

CodeSOD: Paste Parse

By Remy Porter

Sandra (previously) is still working with Bjørn. Bjørn also continues to like keeping things… simple.

"Simple" for Bjørn is "do as much in PHP as possible since I am okay at PHP, including templating out JavaScript. If I have any third party libraries, just copy and paste them into the project and never, ever use a bundler because WebPack is scary."

Which, in Bjørn's defense, WebPack and tools like it are scary, and I hate them all as a class. But that's a separate rant that's wildly off topic, so let's just get back to Bjørn.

Because Bjørn does JavaScript via PHP templates, copy/paste, and general "massage the code until it works", we end up with this nonsense line not only getting deployed, but staying deployed until someone has the time and budget to do a large scale refactoring of all of the code:


The surrounding code has been excluded, as it doesn't matter and offers nothing. This line exists, it doesn't work, and shouldn't be there.

[Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!

The Silent Partner

By Ellis Morning

SOS Italian traffic signs in 2020.05

Lucio worked as a self-employed IT consultant. His clients tended to be small firms with equally small IT departments. When they didn't know where else to turn, they called on Lucio for help.

Over the years, Lucio befriended many of the internal IT employees that he worked with. One of them, Fabio, wisely decided to leave his position at a firm with 30 employees, where everyone's roles changed daily depending on the crisis at hand.

Soon after, Fabio landed an interview with an 80-person outfit. They were looking for someone who could take care of everything from mouse batteries to Excel spreadsheets to website software updates to issues in their homemade invoicing software.

Fabio could handle all of that, except for the software. The last time he'd coded anything was 15 years earlier, and even then he'd decided coding wasn't his forte. The interview was scheduled to take place online; Fabio asked Lucio to be in the room during the interview, hoping for a little secret assistance with any questions that were outside his knowledge.

Lucio didn't feel great about it, but he accepted, only to provide help with programming-related stuff and nothing else. As it turned out, the interviewer simply took Fabio's word at face value and did nothing to confirm his coding skills. Lucio never had to intervene, and Fabio got the job all on his own.

On the first day of the job, Fabio sent Lucio a selfie of himself at his new workplace. They'd already gotten him a uniform adorned with the company logo. His new boss toured him around the company offices, introducing him to his coworkers.

The next day, Fabio contacted Lucio. The company didn't have a helpdesk ticketing system, and Fabio lacked the clout to ask for such a big purchase. Did Lucio know of any free options?

As a personal favor, Lucio ended up installing UVDesk Community Edition on one of his own servers and provided Fabio the admin account. He warned his friend that this setup would only be temporary, and he'd have to arrange for something better later.

The next day after that, Fabio sought help for the homemade invoicing software, which crashed from time to time. Windows Process Manager was showing a steady increase of allocated memory. Lucio explained to Fabio what a memory leak was, and said that they'd have to look for the problem in the application's source code. Fabio replied that he didn't have access to the code yet.

And then, the company website was hacked. Lucio discovered that it was a WordPress site with a handwritten theme. Below is the single.php file responsible for rendering every post:



$lang = pll_current_language();

if ( in_category( array( "calendar", "calendario" ) ) )
echo get_template_part( "templates/case-study" );

elseif ( in_category( array( "case-studies", "casi-studio" ) ) )
echo get_template_part( "templates/case-study" );

elseif ( in_category( array( "news", "notizie" ) ) )
echo get_template_part( "templates/case-study" );

else echo get_template_part( "templates/product" );



Lucio stopped looking at the theme code, because this was already more than enough for him:

  • The $lang variable was never used (thankfully).
  • The person who'd written this didn't seem to know that arrays could contain more than 2 items, or that if statements could have or operators as part of their conditions.
  • One could only hope the company never acquired customers who spoke something other than English or Italian. There was only one template for all languages, and if statements were spread all over the whole theme.

Lucio told Fabio that the company would have to rebuild the website from scratch. When Fabio passed the word on to the theme developer, he was assured that "all vulnerabilities would be fixed." Lucio has his doubts, and expects Fabio to hand in his notice any day now.

[Advertisement] Continuously monitor your servers for configuration changes, and report when there's configuration drift. Get started with Otter today!

Into July

By [email protected] (Jon North)

Last week we were in the Val du Séran, near the little village of Ruffieu in the Valromey area of the Ain département.  It is the home of Stéphane and Chantal Fauth, a huge old farm building which he converted over many years into a music centre and comfortable chambres d'hôte, and we have been there most years since we moved to France in 2006.  Stéphane is a talented musician (he plays violin and viola, double bass and guitar) who as taught music for most of his life, and our primary reason for being there is that Mary as cellist joins a small group of other amateur musicians (the combination varies, but apart from other  strings there are sometimes wind instruments or, as this time, a pianist, or friend Valerie who live ins Paris and whom we met there).  On several occasions the repertoire has included a piece specially arranged by Stéphane for that year's group of instruments plus tenor voice, but now my solo singing days are more or less over I go as dog minder and co-driver, and to enjoy Chantal's beautiful food as well as the wines Stéphane finds from around France and around the world, an enthusiasm he and I share.  But he has a much better palate than I do, and a keen eye for a bargain.

One of the attractions of the Valromey area is the Conté cheese that is made from the milk of cows nearby, including the fields right next to the Val du Séran.  This used to go to a creamery (the French term is fruitière for cheese producers) in the little village of Brénod to the north, but now a local producers' co-op has formed with a brand new fruitière in the foothills of the Grand Colombier, a spectacular mountain or massif above the Rhône valley south of our lodging.  It's only been open a couple of years, but this Valromey factory and shop is beautifully organised and gave me a pleasant morning out buying cheese for the busy musicians which they rehearsed.

I've written about driving in France more than once.  In the new surroundings - familiar but not frequent - of the Ain it takes extra attention, with many narrow roads and sharp bends in the hills.  And then there are motorways, autoroutes which we use often, worth the tolls you have to pay.  We have an electronic pass which bleeps you through and bills you later!  But in summer the autoroutes become very full, and crazy driving makes them even more risky than usual.  We did however prove that driving a bit slower saves a lot of fuel, important in these difficult times.

 Going into and out of the mountains the A42 and A40 from Lyon were fine, but going home, once we reached the A7 going south towards Marseille the queues were endless, and we soon chose the much pleasanter and nearly deserted route nationale, the N86.  Anyone who has driven in France will know of the bis routes marked in yellow, and ours of course was marked Montpellier bis; a green and shady road mostly beside the Rhône, which even had tempting wine diversions (e.g. Crozes Hermitage) which we ignored because we wanted to get home and Mary had a concert that evening! So we and the dogs (always well-behaved and readily welcomed by Stéphane and Chantal) were safely home before 5, and had a quiet weekend sorting our luggage.  Now we are in a calm interlude with a few visitors and trips to come over the summer, and our French conversation groups continue on Tuesday mornings.

Music in the Ain

By [email protected] (Jon North)

 This week I am the bagman to Mary's musician as she joins the group assembled at the Val du Séran - violin, viola, cello (her) and piano (our friend Valerie) under the eagle ear and eye of Stéphane who has just celebrated his 80th birthday.  It is a place we know well (this photo, with much of the same cast, is from 8 years ago) and this year promises to be as enjoyable as ever, though just as hard work for the musicians.  In the past I've sometimes joined them as a singer, but this year my task is simply to look after the dogs and enjoy the company.  And the marvellous food Chantal unfailingly serves.  More photos from there later.

This entry will be strewn with quotations from Alan Bennett - in his memoirs Writing home  - whom I admire.   He hails from the north, and hit a familiar note talking about a local library, which is of course territory I know a bit.  In those days Armley Junior Library at the bottom of Wesley Road in Leeds bound all its volumes in heavy maroon or black, so that The Adventures of Milly Molly Mandy was every bit as forbidding as The Anatomy of Melancholy. Another short extract sketches in his position in the spectrum of playwrights of which he is an eminent example: An article on playwrights in the Daily Mail, listed according to Hard Left, Soft Left, Hard Right, Soft Right and Centre. I am not listed. I should probably come under Soft Centre. He appeals to me!

At the Val du Séran

Despite the real fortune and pleasure we feel in our own lives, I am (like many of you I guess) more and more moved and overwhelmed by the unpleasantness of so much in the world around - this poem to be read in both senses is by Brian Bilston who has published a lot recently, and this is about the plight of refugees which is daily on our minds.  War and the blind cruelty of politicians in so many areas blight the lives of people who are by definition helpless.  


They have no need of our help
So do not tell me
These haggard faces could belong to you or me
Should life have dealt a different hand
We need to see them for who they really are
Chancers and scroungers
Layabouts and loungers
With bombs up their sleeves
Cut-throats and thieves
They are not
Welcome here
We should make them
Go back to where they came from
They cannot
Share our food
Share our homes
Share our countries
Instead let us
Build a wall to keep them out
It is not okay to say
These are people just like us
A place should only belong to those who are born there
Do not be so stupid to think that
The world can be looked at another way

(now read from bottom to top)

We have been so excited by the doings of the England cricket team, and knowing New Zealand are no longer the tinpot team they used to be only heightens the enjoyment of such stunning victories.  I'm (as a Yorkshireman by the strict definition, though playing cricket for Yorkshire would be like the other side of the moon for me) all the same I have a pride in their doing well and some additional pleasure that racism seems to be being pushed back in that county club.  But now Wimbledon is on us, and we'll certainly watch some alongside the Tour de France once we get back from the Val du Séran.  Here is Bennett on a bad lad from another era of tennis:  McEnroe behaves badly at Wimbledon and in one particularly ludicrous moment shouts at a linesman, ‘You’re a disgrace to the human race.’ Some group captain on the high chair then docks him a point and an argument ensues as to whether McEnroe was, as he insists, talking to himself and, if he was, whether it was in order to talk to oneself on court (or even breathe).  Of course, now that Wimbledon is all about money, behaving badly is exactly what is required, certainly of McEnroe, and all the claptrap about decency and fair play is just the English at their usual game of trying to have it both ways. Wimbledon is now a spectacle, just as a wrestling match, say, is a spectacle, and a spectacle needs a Hero and a Villain. It’s a contest between Right and Wrong, not because McEnroe is particularly badly behaved but because the Wimbledon authorities have sold out to television and this kind of drama is just what viewers enjoy. So McEnroe doesn’t really have a choice, only a role.  Many of McEnroe’s critics point out how Connors has ‘reformed’: how three or four years ago he was the rogue, disputing calls, not attending the line-up, and how much better behaved he is now. This misses the point. Connors has to be better behaved, not because his character has changed or his tennis manners have improved but because he has no part in the spectacle. Or if he had (if he had beaten Borg in the semi-final for instance) he would have had to be cast in the Hero’s role.  I like Alan Bennett because he comes at things from different angles.

From our hotel in Beaujolais on the way to the Ain

Although Bennett is a fairly authentic adoptive Londoner and his orbit - Camden Town and the lower reaches of Hampstead - are familiar places for us, and apart from his Yorkshire roots which also define him, he has become a seasoned traveller to America and Europe Here is a bit about a visit to France, which also touches on other places we know quite well: Six days in France, much of it in drenching rain, driving round Provence. Most towns and villages now meticulously restored – Lacoste, Les Baux, Aries, Uzés, the cobbles relaid, the stone cleaned and patched, everywhere scrubbed and made ready – for what? Well, for art mainly. For little shops selling cheap jewellery or baskets, for galleries with Provençal pottery and fabrics, bowls and beads and ‘throws’. Better, having done the clean-up, to put a machine-shop in one of these caves, a butcher’s where a butcher’s was, a dry-cleaner’s even. But no, it’s always art, dolls, kitchenware, tea-towels. And people throng (myself included), Les Baux like Blackpool. Arles is better because a working place still, and with a good museum of monumental masonry – early Christian altarpieces, Roman gravestones – and beneath it a labyrinth of arcaded passages that ran under the old Roman forum. The Musée Arlaten, on the other hand, is rather creepy, the walls crowded with primitive paintings of grim females – Arlésiennes presumably – and roomfuls of nineteenth-century folkish artefacts, collected under the aegis of the trilby-hatted poet Frédéric Mistral, whose heavily moustached image is everywhere. Many of the rooms contain costumed dummies which are only fractionally less lively than the identically costumed attendants, some of them startlingly like Anthony Perkins’s mother in Psycho.  Then to an antique fair in the middle of some zone industrielle, every stall stocked with the appurtenances of French bourgeois life: great bullying wardrobes, huge ponderous mirrors and cabinets of flowery china. For the first time in my life I find myself longing for a breath of stripped pine.

Alan Bennett quite often refers to music, if only because he encounters it as a screenwriter, and his anecdotes are often fun. For instance : Maurice Miles, whom I as a boy in Leeds used to see conducting the Yorkshire Symphony Orchestra. Miles was a balletic conductor who very much fancied himself on the rostrum, fond of shooting his cuffs and fetching the brass in with a flourish. Denys was chatting with him one night after a concert when Miles broke off to have a word with the leading horn-player, a dour Yorkshireman.  ‘What went wrong tonight, George? Something, I wasn’t quite sure.’  ‘Well, let’s put it like this, Mr Miles, it’s very hard to come in on the fourth rattle of the cufflinks.’

And to finish with a pen picture of the north country [In Yorkshire for a family funeral]  Wake at 5.30 a.m. and hear a cock crow. A cock, unaware that it has turned into a cliché, unselfconsciously goes on maintaining a rustic tradition, fulfilling its role in the environment. The corn mill is restored, the drystone-waller demonstrates his craft, the thatchers bind their reeds and the cocks crow. Country craft.  The hearse and the attendant cars are grey and low-slung, so that it looks more like the funeral of a Mafia boss than of an ex-tram-driver. As we come out of the chapel cousin Geoff, who always takes the piss, shouts at my Uncle Jim, the last surviving brother, and who’s deaf, ‘Head of the clan now, Uncle’. ‘Aye,’ Uncle Jim shouts back. ‘There’s nobbut me now.’

I take the train back. Through county after county the fields are alight. It’s like taking a train through the Thirty Years War.

June around the corner

By [email protected] (Jon North)

A stray alium outside our 
living room window, and a
redstart on the sculpture

Our French friends are often keen to remind us that la République française is a secular state, but underneath there are often contradictions.  I started to  write this on Ascension day which is a public holiday here (I once famously muddled it with Pentecôte, coming up soon too) and while I with my Quaker upbringing may not have been attuned to such things, I am often reminded how deep-rooted Catholic culture is embedded in French daily life, not just the major festivals but the saints' days that are printed in most calendars here.  

One anecdote we come back to quite often is the story of the new library in Lunel, opened with a fanfare nearby some years ago.  It trumpeted that it would be open on the first Sunday of each month so we duly turned up on the first Sunday of April that year - to find it firmly shut.  But of course, they explained afterwards, it was Easter Sunday.  Easter is not even a public holiday in France, and schools are often open over the Easter period!

The late spring sunshine and colours in the garden are a relief for us as for everyone I guess in these grim times, when the awful reality of war further east only distracts from the unpleasant dishonesty taken now as normal by a lot of British politicians.  I continue to read a lot of history, and am constantly reminded of the vivid images in Timothy Snyder's Bloodlands which tells the terrible story of Ukraine, Poland and their neighbours in the tug-of-war between Stalin and Hitler.  Putin is truly Stalin's heir in callous brutality.  Poppies seem appropriate on their splendid annual appearance in fields here, symbolic also of wars through the ages.

In times like these, I'm so glad to have a variety of things to read.  My work with the Anglophone Library in Montpellier is providing me with a long reading list, but just now I am harking back to things I've already enjoyed and love to reread - just now Writing Home, the diary/memoirs of Alan Bennett, whose wry observations and light touch never obscure a clear humanitarian eye.

Here are a few snippets from the book:  [In Yorkshire for a family funeral] Wake at 5.30 a.m. and hear a cock crow. A cock, unaware that it has turned into a cliché, unselfconsciously goes on maintaining a rustic tradition, fulfilling its role in the environment. The corn mill is restored, the drystone-waller demonstrates his craft, the thatchers bind their reeds and the cocks crow. Country craft.

The hearse and the attendant cars are grey and low-slung, so that it looks more like the funeral of a Mafia boss than of an ex-tram-driver. As we come out of the chapel cousin Geoff, who always takes the piss, shouts at my Uncle Jim, the last surviving brother, and who’s deaf, ‘Head of the clan now, Uncle’. ‘Aye,’ Uncle Jim shouts back. ‘There’s nobbut me now.’

I take the train back. Through county after county the fields are alight. It’s like taking a train through the Thirty Years War.

Bennett was (and maybe still is) a regular contributor to the London Review of Books which we both read regularly (I online, Mary on paper).  We are also reading An uncommon reader, his fantasy account of the Queen's discovery of books and reading via a mobile library parked in a Palace yard, in French translations with our conversation group.  It is  superbly funny and full of wry observations of corgis and courtiers.  There is also a sneaking interest in France in the royal family, relevant at this jubilant time.  I'm finishing this post as the Jubilee day approaches.


By [email protected] (Jon North)


The warm weather is here, and the taller irises have been celebrating the promise of summer.  We are struggling out from the remnants of Covid, though our choir is still in abeyance because our friend and conductor Kamala has been unwell, and various meetings are tentatively starting again.  Our Tuesday language groups (and a second Friday French session) have kept going, and with fewer restrictions and the possibility of meeting outside, numbers have been rising into the teens.  May began with a public holiday, the Fête du Travail, which is the only day of the year when supermarkets close (rather like Christmas Day used to be in the UK) which caught us out when we tried to catch up with shopping after a short trip away last week.  And the dry, sunny weather has continued, even when storms were forecast and we heard rumbles of thunder all around yesterday.

The tortoise has emerged from its hibernation, and the dogs are well - happy to be able to accompany us to our hotel near Arles.  We enjoyed visiting the city and also walking in the Camargue nature reserve to the south (dogs allowed on leads).  The Frank Gehry tower and associated pink sculpture were part of our walk round the town, remembering past brief trips over 20 years, but our favourite moments were by the river, which provides a broad backdrop to the ancient buildings.  Our hotel was just right, with a terrace opening onto the garden (where you see the dogs relaxing!), and the food and wine were superb.  We also made a detour in Bellegarde on the way home to rediscover the uncommon wine Clairette de Bellegarde - the clairette grape is more usually associated with the  sweet fizz from Die with which we were long familiar through twinning.

Our surroundings help us to keep a thread of optimism in these terrible times of war in Ukraine and public disgrace in the UK - how did public life become so careless of truth and principle?  We have been relieved that Macron saw off the far right challenge in the French elections, but the future is far from straightforward here.  The Russian assault on its neighbour is all too reminiscent of previous, intentional catastrophes in that region, and the chaotic politics elsewhere would often make one despair if it were not possible to look upward and outward to see the calm and beauty all around.   We just hope for a brighter summer and rejoice in our own good health, thinking of so many we know who suffer.

Nearly summertime

By [email protected] (Jon North)

 As it gets warmer and lighter (clocks forward in a week) the dogs get vocal in the lighter mornings, so we'll be glad of a little relief as the change momentarily fools them!  This blog is far less frequent than it used to be, and until now my excuse was that I have been completing the FOAL (Friends of the Anglophone Library, in Montpellier) catalogue which had had an unfortunate lapse over a couple of years.  Now happily updated, and my librarianly muscles have been flexed to good effect.

Still remembering Michel on this final busy weekend of rugby in the 6 nations, we recall the first France-England match after our move here, when a mutual friend put a Union Jack in his garden and a tricolor in ours.  We shall watch the latest 'crunch' tonight thinking of him.  My photo collage skills were tested then.

Our life here revolves a lot around our now twice-weekly language sessions, the latest on Friday.  We have a Tuesday get-together with shared lunch in various people's houses or (as next week) in the Centre Quaker in Congénies.  This is the only purpose-built meeting house in France, and is home to a very small but committed group of Friends (of which I am no longer a part).  It was important for us in our early years here, and is still a welcome and welcoming venue for our French conversation groups.

It is also symbolic of the ghosts we find increasingly in our French life and landscape - among them for example Brian Painter and Dennis Tomlin, both sadly no alive but whom we think of as we visit or pass the places where we met.  Marcel Bombart was among important influences as the instigator of our conversation group, but others no longer in France but thankfully still alive are David and Wendy, Andy and Irene, Nigel and Elizabeth, Hélène and her dad Pierrot, and on and on.  The importance in the end of all these friends is the memories we hold of them, enriching our lives.

With apologies to supporters of other teams, I can't help sharing my excitement that Liverpool is edging toward the top of the Premiership.  Mary is a bit less fortunate in her choice of Arsenal to support, but I think she'd say it is not the same since Arsène Wenger retired!

Celebrating the long-overdue release of Nazanin Zaghari-Ratcliffe I am also reflecting on other lighter and pleasanter things recently, among them the broadcasts from Crufts, highlights (fronted by the impeccable Clare Balding) of which we watch every year - this year's winner, a beautiful chocolate-coloured flat-coated retriever, pleased me very much.

In the wider world, the horror of war in Ukraine rubs in the mindless cruelty of the current Russian leadership reflecting the bleak Stalinist period of the 30s and 40s, but I do choose to read history like Timothy Snyder's Bloodlands because it is too easy to pull wool over one's own eyes, let alone letting others fake news.  I recently finished Anthony Beevor's The battle for Spain which drew me through several threads of interest - a nearby country we can easily visit, the history of cycling and the Vuelta race we often follow, and so on.  But Stalin and Hitler crop up again, both practising their war techniques (Guernica as famously depicted by Picasso and so on), and the implacable iron fist of Stalinism which was perhaps the final straw in the failure and fragmentation of the anti-Franco forces which enabled the generalissimo to triumph.  All this leaves room for lighter or at least funnier diversions (reading and on tv) including Adam Kay's This is going to hurt.

Meanwhile we have an election in which we cannot vote next month, lots of beautiful sunshine (punctuated last month by nearly 100 mm of rain after over 2 dry months, plants saying thank you) so I leave you with three photos, one of grateful plants and another reflecting the current zeitgeist.

The march of time

By [email protected] (Jon North)

Spring in Lunel is always a time of hope - new growth, bright skies and longer days - but this year it has brought sadness too as our friend and neighbour Michel Cazanave died suddenly last week of heart failure.

Michel was the first person to greet us in the road as we arrived at the end of 2006.  He lent us the stepladder we still have and use, to fix the house lights that were almost completely lacking when we arrived.  This photo was  taken at his surprise 70th birthday party a year or so after, a crowd of friends and ex-pupils gathering in a nearby manade on a warm summer evening.  His enthusiasm for sports, notably cycling and rugby both of which he led and coached over the years, was infectious, and there were many times when he would rush across the road to share views on the latest 6-nations match - he was a patriotic supporter of Les Bleus but generous in acknowledging the talent of 'our' (British) rugby players.

The stepladder was also symptomatic of his practical side - this picture of him directing the concreting of his new driveway a few years ago is typical, and even if others were doing much of the work he was always around to comment, to observe, to ensure things were going as he and Monique wished.  But it was his friendship that always shone through, friendship to neighbours, and the wide circle of people he knew in the life of the town over the years, and particularly friendship for young people.  He was inquisitive and curious in the nicest possible way, and a frequent participant in neighbourhood meals and get-togethers.  His disappearance is all the more shocking because he was so active and present.

It is hard to imagine the life of our little road without him, and our affectionate thoughts are with his family.  He will live on in our hearts and memories.  For people like us, making a new life in a country far from our own family friends like him (I am glad to say there are others still around us who help make our life here better) are all the more important.  And, without being trite, life goes on - that same week our neighbour Robert, himself widowed some years back and one of Michel's oldest friends  - they moved into the new road at the same time as it grew out of the old vineyard -  rushed by to share the news that he has just become a great-grandad; recently we were at the christening party of the little grandchild of another neighbour Christine we've known since we arrived. 

A few more photos to finish.  RIP Michel.

43 and counting

By [email protected] (Jon North)

The text in this post is fairly prosaic, the photos tell the real story of our happy UK trip.  This in Wirksworth where we stayed with Sam & Sas and the children

I started this post over 3 months ago, on our 43rd wedding anniversary.  Mary was busy making the Christmas cake downstairs, and (as often) we were looking forward to some nice wines before and with lunch.  It is also 15 years since we left our home in England and set out for France (finally settling in Lunel by mid-December).  Mary had bought the house some months before, and we're still enjoying the space and quiet of  the little cul-de-sac we moved to, with at least two neighbours who have become friends still around us.

So things have remained, but a lot has changed, not least the awful Brexit which stains our lives.  But we feel comfortable and lucky to be where we are, if sadly we've been too distant from family and friends in the UK partly due to the pandemic.  But we had a great trip to England over Christmas and new year - more on this below.

Around Jeff & Fi's in Staffs

Our musical activities (cello groups and lessons for M, choir for me) are beginning slowly after enforced lay-offs, and I am also increasing my involvement in the Anglophone Library (known as FOAL - 'Friends of...' ) in Montpellier, a smallish collection of books in English with its own pleasant rooms kindly provided by the city.  I am just getting to grips with priorities (according to my rusty librarian training) in reorganising and better cataloguing, working with an enthusiastic committee.  It has beavered away for over 10 years to reach the stage we're at today despite the hiccups which sometimes blight voluntary committees (the departure of a longstanding member has left lots of holes and problems to sort out).  We are just reaching the final stages of revising the catalogue, putting in new book orders and feeling very optimistic as the new year gets going.  I'm really enjoying getting back into library work.

Our trip to the UK was surrounded by health checks and red tape, and in the tight controls before Christmas we only just made it across the Channel before a deadline.  The restrictions applied to both directions, and the return journey turned out to be even more complicated than going over.  Those like us who have a good reason to come into the country when most foreign travellers are prohibited could then only do so by doing several things. First, we had to have a negative lateral flow test within 24 hours before our journey into France. We already had a contact with a pharmacy which does tests near our friends’ house in Surrey, so we booked ahead, then set out for the coast as soon as the results were known.

Christmas in Wirksworth

Second, as well as that test and your passe sanitaire (proof of vaccination, now renamed such by the French govt), in advance the French govt requires two documents - an official form obtained through the official website, and issued by the préfecture of the region you are travelling to (in our case for the Chunnel it was I think Hauts de France) which you complete online and comes back with a QR code you need to keep handy (we did not realise this and went round some bureaucratic houses at the terminal before it was all set straight). Then there is an attestation sur l’honneur saying you have a good reason to come (for us, supported by the cartes de séjour we both have had for a few years now).

In the Wedgwood pottery museum near Stoke

Most of this was scarcely glanced at by the various officials we saw. If we had been able to upload our documents to the Chunnel website beforehand it would have been even easier, but the upload system was not working properly, at least for us. But everyone was very helpful, and we were very lucky to be going through at an extremely quiet time. As for smuggling things, Mary commented we could have taken a boot load of contraband through - they were only interested in firearms (on the way over it had been people-smuggling which most interested the British immigration people).
A beautiful day out at Shugborough, Staffs

By the way, we have long been fans of the Eurotunnel Flexiplus service. It seems expensive, but no more than an overnight in a hotel and in these Covid times, going through a sparsely populated terminal instead of milling with others and getting on the first train that suits you, no matter when you’d booked, seems even more secure, and free, nice food and drink en route is a bonus that fuelled our journey south!  And so a long but smooth drive home, no hotel stops on the way, and we were back to a very quiet January, full of sunshine, with Covid scares that thankfully turned out to be no more - the French infection rate has been sky-high recently.  The dogs were very pleased to see us and seem no worse for the several weeks in our excellent local kennels.

finishing as we began at Jeff & Fi's rural retreat in Staffs

More on family and friends in a future post I think, but after a long delay this is just to wish you a happy new year.  I shall try to resume a more regular blogging habit...


Back to the Bordelais

By Jon North ([email protected])



We'd been planning our late November mini break westwards for several weeks.  So at the end of the month we settled into our comfy hotel in Cadillac, after the first of 3 wine visits we'd planned. This was our first to the Entre Deux Mers area north of Langon.  I'd chosen from the Guide Hachette an old fashioned unpretentious château deep in the countryside near the tiny commune of Mourens, vines all around. Magnificent autumnal colours, staked vines across the rolling hillsides all around, a friendly welcome despite our lack of advance notice from the mum who showed us round and provided the wines for tasting, and her two winemaker sons who popped in and out to help it all along. And what wines! All at under 7€ a bottle, a sumptuous white Entre Deux Mers ‘haut Benauge’ and a very well-made red 2014 Bordeaux Supérieur. 

The following day, Wednesday was one of two contrasting but geographically closely linked visits to winemakers we’d met on previous occasions in the Bordelais. The morning we were in Ste Croix du Mont to meet Geneviève Ricard-Durand, who runs her old family vineyards, Vignobles Ricard,  with her husband. The Château de Vertheuil is one of 3 domaines they run, and though there are whites (dry and sweet), here it is the reds which are of special interest - the merlot-dominated Vertheuil was most appealing but we plan to contrast all 3 domaines in a future tasting. She also has a dark pink clairet we bought to try later : I really like this style of wine in the Bordelais, which we’ve found also from Spain’s Ribera del Duero region (as Clarete).  Although we had no time to visit them this time we had good memories of the incredible oyster shell cliffs in the village.

But in the afternoon it was the liquoreux (botrytised) whites at Clos Jean in nearby Loupiac which were stunningly presented by the proprietor (M Bord I think - the enterprices is certainly Vignobles Bord) a charming man whom we’d previously met in the Maison des Vins in Cadillac. The final tasting he offered us, not on sale, was a fabulous 60-year-old and amber coloured Loupiac which lingered long on the palate after our visit. We headed home with heads full of good memories and a car quite well stacked too!
 Several things struck us - first, the prices which were almost all modest (apart from the older sweet Loupiacs which rightly carry a higher price), far from the inflated ones Bordeaux often evokes.  Then, the lack of pretension and  the warmth of the welcome we had in all three domaines, all of which were family concerns.  And then the beautiful autumn colours all around, which I hope these photos convey.  After two wonderful days the rain set in as we drove back with a care well-stocked with the spoils of our trip.  We and many of the family have sampled these wines over the Christmas week.

Christmas with family

By [email protected] (Jon North)

 It is wet in Derbyshire.  Happily the warmth of our family more than makes up for the rain and gloom.  Our first trip outside France for two years has been a success so far.  In this Covid chaos that is far from certain.  Elvire and Edmond the dogs are well cared for during our absence in the kennels we know and love nearby - the owners are professional breeders of hunting dogs  and know how to treat animals.

This blog is again in the format people are used to, although the content would be the same if I sent it in an email.  This way though the photos can be put alongside the text.  There is a little repetition of the email I sent before Christmas but this is a different slant just as the year finishes,

Before we set out from France there were formal things to go through.  We were well ahead with out 3 vaccine shots, but the forms and timing of following the regulations needed careful attention.  One thing I realised early, since France and England have different requirements, is that you should always follow official advice for the country you are travelling to.  Lots of Anglophone people in our area get dodgy information from their French pharmacist about the rules for travelling to England.  Then, several things cannot be done until 48 hours, sometimes 24 hours, before the moment you get on the train or board the ferry.  But having taken our virus tests, booked the one we needed just after arrival in England, and filled in the tracker form the UK Govt needs, we set out to drive to Calais and the tunnel.

Misty Wirksworth  





The Tunnel terminal was nearly deserted, and the people at the border checks were not really worried about the pile of  Covid and immigration documents we had slaved so hard over.  So after a trouble-free journey and some carol singing in Walton we drove north to a fortnight shared between sons Jeff and Sam and their lovely families.


As we approach the end of 2021, among all the festivities several of our plans this week have been disrupted by Covid, and although we ourselves are still well an unexpectedly closed restaurant kitchen and a cancelled evening with friends in Wirksworth have reminded us (if we needed it) that learning to live with the virus is  still tricky.  After new year, when we'll move back to Jeff's, we have to complete the formalities for our trip home, and although French regulations are different in detail, we need to be sure we have all the checks and paperwork in place. But before all that we shall need to look behind us as we go to the panto  Beauty and the Beast  at the New Vic, Stoke, Fi's place of work.  We are very proud of her as always.

And there are serious things afoot in the wider world. We have mourned the death of some of our own friends in the past year, and I have been moved this week by that of Desmond Tutu, whose life and striving for peace and reconciliation led him to confront injustice again and again.  I've chosen pictures and one of many, many articles I've seen to honour his memory.  A great and unique man. I've also found a tragic story of a refugee family to mark one of the great injustices of our time, the death of people in inadequate boats at sea as they try to reach a safer place - a preventable horror. 

There are so many difficulties around us, and yet we - Mary and I and our lovely family - have mercifully survived to enjoy a great festive time together.  This is to wish you all a peaceful and positive new year 2022 from us all.  No snow here yet - we just hope it keeps away from the roads we shall be driving back on next week.

A quiet October

By [email protected] (Jon North)

After the short stormy interlude, autumn is drifting in with sunshine across the garden, late flowers (these are pomegranate or grenadier) and ripening fruits (these from our always productive kaki or persimmon - the tree is known as a plaqumenier).  Although things are becoming more active in our lives - choir reorganisation and Anglophone library stockchecking on the horizon for me, and lots of cello practice for Mary - it is a tranquil time, so I have mainly photos to share this time on the blog.

Canalside walks are regular pleasures in the sunshine, reflections from the water, and various exotic plants along the streets.

And when activities are over, there are always messages to catch up with, and things to watch and listen to on tv and podcasts.  Elvire and Edmond in attendance!

It never rains but it pours

By [email protected] (Jon North)

Tuesday's very local storm - we were driving towards Calvisson at the time!!

I started this post last Tuesday morning, a couple of hours after one of the most spectacular storms I can remember.   We had set out for our Tuesday conversation group in Congénies, about 20 km away, and it had just started to rain, but thunder and forked lightning were soon overhead.  By the time we'd travelled over halfway the heavens opened even more and we were forced to stop, with rain lashed by high winds and bits of ice banging the car.  After about a quarter of an hour we decided to turn back and barely made it past bad flooding in several dips in the road, including back in the centre of Lunel, but as we arrived home the rain had all but stopped.  The power was off but thankfully just via the house trip switch and now everything is back on and calm reigns.  Others who had hoped to join us for the morning set apologies, luckily having cancelled their plans sooner.

It was the beginning of a few days of wet weather - 95 mm of rain all told - but above all (seeing the reports of hundreds stranded in their cars and washed sideways by the floods very close to our point of turning round) we feel very lucky to have escaped any bad consequences.  Now the sun is shining again.  We are also lucky to live surrounded by large gardens so that water mostly drains away quickly.  This area is notorious for severe floods from the rivers that flow down from the Cevennes, but the rain that falls actually on us causes problems for a few hours then sinks away.  No thanks to drains in the past - generally they have not been a high priority in towns around here because rain is relatively rare - but more recently they have started to install adequate drains.

We were glad to be back safely because Mary had her latest eye operation that afternoon.  After 2 successful cataract ops, this one was to lift her eyelids which had begun to hood her vision a little.  She thought this might count as cosmetic, but he surgeon assured her that is was medical need and so can be covered by the usual health service provisions.  The procedure was successful and, once the bruising fades, will be a real improvement.  Once again we are grateful and impressed at the quality of health care here.

We had just returned from a wonderful birthday trip to Burgundy.  Of course this was partly about wine, and probably will feature in the wine blog in due course.  We stayed a few nights in a really nice hotel in Vougeot, visited Beaune, saw winemakers we know well and had an impromptu drive across a very rural part of the countryside away from the vines after a friend we'd hoped to see was in hospital for a heart emergency (she's thankfully recovered now).  She lives near Châteauneuf, NW of Beaune, pictured here.  Altogether an enjoyable trip. 

La rentrée chez North

By [email protected] (Jon North)

September, and the internet in France is as ever full of ads for school goods - French students are obliged to stock up on a whole list of supplies, and stationery businesses and supermarkets alike want you to believe that theirs are the best pencils, calculators, school bags or whatever at reasonable prices.  For us older folk, it is a time when all sorts of activities restart - in the next three weeks my choir, Mary's chamber music and cello lessons and our SEVE network (which includes our Tuesday language groups) all restart and the Anglophone Library in Montpellier reopens.  And we need to check our diaries more often to avoid missing appointments in a still uncrowded week.

An old library layout now being changed
The latter is now under new management after the kind of enforced committee reshuffle I was familiar with in England - old hands and practices became creaky and cracks showed in organisation.  Inevitably (as a retired librarian among other things) I have been drafted in to help, but it is a pleasure - I have already staffed the library on a few of its twice weekly openings - and there is a big job to do in reviving and broadening the book selection process.  These days I do most of my reading on the Kindle, but I still have an affection for physical books.

This blog has often been about health.  As I write Mary is at the ophthalmologists for a checkup following two apparently successful cataract operations.  When cleared she has promised herself new glasses, though her consultant says the prescription has not changed much.  I meanwhile am on a plateau of manageable pain with my new doctor (a 4th in a year following our surviving Dr Cayla's retirement) trying to persuade me that too much painkiller is poisonous.  I don't really need convincing, and it's quite interesting to find out how little gradual reductions in doses changes things.

Twin dogs Edmond and Elvire have just celebrated their 12th birthdays.  They are in good spirits and health, now that we have sorted out Elvire's bladder problem - I need to take her for a quick pee in the middle of the night, which is really no problem since I wake often anyway and get back to sleep easily enough after the brief foray.  I'm gradually returning to normal after I recovered from my broken arm at the beginning of the year.

We had a nice moment today. I was anxious over the past week because our 🍷 cooling system had broken down and over 200 bottles were (still are) at risk in this hot weather. I could not for the life of me remember who had repaired it last time - it ran faultlessly for over 9 years then, after repair, another 5+. Anyway, Mary phoned Languedoc Depannage, who mended our dishwasher a few months since, and lo, it was them! The very nice lady instantly knew about the last repair and understanding (as people down here do) the dangers of cooling failure for wine stores, is sending one of her nice young men to look this afternoon, estimate tomorrow, repairs on the horizon. Service is not dead!

Something lighthearted to end with. We are off to celebrate our own birthdays in Burgundy for a few days!


New discoveries and old friends

By Jon North ([email protected])

At the Mas de Bellevue above Lunel to the north

I've nearly begun this post several times over the summer.  I do so now in memory of my recently deceased friend Alan Byars, married to Mary's cousin Barbara.  Although he made his money from another liquid, oil, this larger than life Texan shared my interest in wine and encouraged me to revive this blog when we met over good glasses whether in New Mexico or the Rhône valley.  He was an atypical American, (many I know don't even have passports) having lived and worked in Europe as well as in the US, and he and Barbara shared many holidays with us in England and in France as well as America.

Last time I wrote of our winter excursions into Spanish wines, and we have continued to enjoy the fruits of  our discovery of the Barcelona wine merchant Decántalo whose deliveries and service are very good.  Now I want to write a little about more local wines, which of course have been at the heart of our enjoyment of wine since our first excursions to France in the 1990s.   Our most recent discovery has been a wine truck, a motorised market stall that turns up at markets and evening events in Lunel and other local towns.  It's based near the Pic Saint Loup, one of our best-known local appellations, which can be seen (as here from the Mas de Bellevue) on the horizon from many places around here, and it's called Dégustez Sud, run by a nice couple who spend a lot of time picking out good wines from small producers across the area from Spanish border to the Rhône.  The wines are not necessarily cheap, but this is largely because smaller producers have higher overheads than larger-scale winemakers.

So far we have tried two whites, Folio, a grenache gris from Collioure near the Spanish border and a Mas d'Amile terret blanc, neither cheap but both out of the ordinary and enjoyable.  White wines can be more expensive than run-of-the-mill reds despite the generally shorter making time, because the process has to be cleaner and more temperature controlled.

Pleasant evening outings into Lunel to try wines from Dégustez Sud, the second with oysters for Mary!

Terret used to be a grape only used for fortified apéritif wines like Noilly Prat, but recently some delicious dry white wines have been made from this grape, and one from the Domaine de la Fadèze near Mèze has long been one of our favourites.  Interestingly, in a comparative tasting of that and the Amile wine the other day, we both preferred the cleaner, lemony Fadèze to the more recent discovery, and it has the benefit of being less than a third of the price, but that may be partly because we go to the producers for the Fadèze.  They make a range of red, white and rosé single-variety wines, all at very good prices.  

I'm ending with a few of the labels of recently enjoyed wines - 2 from the Rhône valley, a 10-year-old Beaumes de Venise from the left bank of the Rhône, in perfect condition from Durban, one of the first producers we visited there and the other from the right bank, the newere additions to the Rhône area in the Gard, in fact near the Pont du Gard and so named Domaine de l'Aqueduc.   And 2 from the Rive droite of the Garonne, one of the good sweet wines opposite the great Sauternes châteaux, and a very good Entre Deux Mers white from our good friend Jérôme whom we met recently in the Drôme, another proof that good white wines can keep for several years.



Les vacances continuent

By [email protected] (Jon North)


in the Drôme near Crest

Last week we went on holiday.  Since we can only now start planning trips to England, our current breaks are in France, and this trip was to the area we know well on the other side of the Rhône.  In fact it was the twinning link with Die that pulled us towards France from 1992 onwards, and over more than 10 years we visited the area 2 or 3 times a year.  We made friends there, and gradually got to know the neighbouring areas of Provence to the south and then the Languedoc further west, where we eventually decided to live.

Die is mountainous, and we prefer the flatter lands to live in, but we love revisiting our old haunts and discovering new bits - this was our second visit to the Crest area, between Die and Valence.  We found a simple comfortable gîte and drove around to Die, Châtillon-en-Diois and Saint Andéol-en-Quint (also an early holiday place for us, the first place we took Sam to, and where other ex-Wirksworth friends have now settled), and combined some gentle tourism and a bit of wine buying with visits to several good friends.

The countryside south of Crest and towards Saillans is dominated by an extraordinary mountainous area, a kind of long oval with forest in the centre, the forêt de Saou.  The mountains culminate at their eastern end by the Trois Becs, peaks visible from the A7 motorway as you approach from the south.  Jérôme, whom we welcomed to stay with us in Wirksworth in the 1990s and who now lives and works in Germany, invited us to eat with him in the little village of Saou, only 10 minutes from our gîte, which has a slightly alternative air and was humming with post-covid enjoyment the evening we ate their with him and his son Oscar.  It's a centre for walking and climbing, and Jérôme has known the area well since his youth growing up in Châtillon.

We were delighted to be able to visit Jérôme's parents Pierre and Michelle during our holiday.  Pierre was the percepteur (tax official) in Châtillon while Michelle was a teacher - over the years we stayed several times in their flat over the trésorerie and, when they retired, they built a house in the village righ on the little market square, the Champ de Foire.  they had both had covid but luckily were not too seriously ill.

We spent a morning wandering round Crest and had lunch in a pleasant restaurant there.  The tower, a former prison, is a landmark in the area, and we also visited Die itself, and spent some time with Krys, one of our oldest twinning friends.  On our final evening we also visited old Wirksworth friends Clare and Alan who moved to the area permanently after retirement - a very good evening meal in their garden in St Andéol, but the storm that accompanied our drive back to the gîte was not so much fun!  The links forged by twinning have stood the test of time.

the 7 deadly sins carved on a building in Crest - sloth, pride, envy, wrath, avarice, gluttony and lust

The Tour ends and the blog returns

By [email protected] (Jon North)

Photos mostly of skies and garden to accompany this blog post

I'm glad to sit down and write again after some weeks taken up with following a fascinating Tour de France.  The news is full of Covid still of course , but now mingled with every louder cries of freedom, of liberté and of the irrepressible French need to protest, so that although France is much more controlled than the UK Macron, is seen as a dictator denying people their rights.  The latest manifestation of the gilet jaune mentality - I prefer the cycling version.

Our view of 'getting back to normal' is coloured by ever-closer knowledge of the dangers of the pandemic, most recently when Mary met our friends  Daniel & Josette in the street last week.  They were among the first French friends we made through casual meeting at a musical event soon after we arrived, and both have had their share of health problems, but recently Daniel came close to death through Covid, and it is a great blessing that he recovered.

Vaccination was a concern for us in the late spring, but thanks to help from our doctors' practice we both had appointments and double doses fairly promptly and now have all the QR coded documents to confirm it.  We are now also legitimate residents of la belle France.  My permit arrived by post soon after our February interviews at the Préfecture, but we are grateful to another French friend (again since the early days of our arrival here): he works for a mairie, and Mary was convinced that council officers did not have to flounder in the labyrinth of internet contacts and phone queues to be able to phone up and chase her application.  He told us afterwards that it had taken even him several attempts to get through to the right person, but within a week or of his calls Mary had not one but two appointments at the Préfecture in Montpellier, and now has her card.

On the home front I've sold my bike, which gave me over 10 years of enjoyment.  I still enjoy riding in
theory, but feel a little uncertain of my balance since my accident so have decided to get my exercise by walking or daily sessions on the static bike I have.  A pity though that I'll not get to ride the two new cycle routes from Lunel, to Marsillargues and to La Grande Motte - maybe I'll hire a bike sometime and ride them.  That and the cross trainer I also use most days have confirmed their excellent value compared with gym subs, especially since they are on site and I can choose my own music or podcasts.  Podcasts are a never-ending source of interest and variety - I'll do a round-up of our favourites during the summer.

The man who bought my bike is our gardener and handyman, M. Beaumann, introduced to us by friend Dawn who lives the other side of Lunel, who has just built our new shed to replace the ramshackle one I put up soon after we arrived.  He cleared the bottom of the garden and put up a new fence too, and although we wondered if we'd lose privacy, in practice it has been a real improvement to the garden, and an old vine and bamboo in pots have rapidly made the boundary green again.  I enjoy the garden at night as well as during the day because I need to take Elvire out for a pee in the early hours, and on one occasion she took a time to perform.  One of the neighbours must have seen me and called the police in case I and was an intruder - when I got back inside I saw blue flashing lights cruising in front of the house, but they must have had a good look and decided I belonged here - they just drove off and we heard no more.

Our Tuesday language groups are starting again - we are hosting tomorrow - and it's quite strange getting back into a rhythm of meeting and learning, but we really enjoy seeing our friends French, English and American plus some other Europeans!

In a week or so we are looking forward to a holiday in the Drôme, near our old twin area of the Diois - a gîte where dogs are allowed, and our first time away since we visited Nigel & Elizabeth.  Of course we still have no idea when we'll be able to travel to see our family and friends in the UK.  We're just beginning to plan other trips around France, not unconnected with wine!

gatekeep, gaslight, girlboss

Howdy, folks! Today we will be heading down south to the Atlanta suburbs to view what may be the most yassified house in existence.(The quality of the photos is proportional to the quality of the estate, my apologies.) Also, special thanks to my friend Kristjan who contributed to finding the house and also some of the captions (fondue machine all was him.)

Built smack dab in the Pimp My Ride era (2007) it’s got 8 bedrooms and 8.5 bathrooms, totaling a completely reasonable and not at all absurd 17,500 square feet. $7,750,000, it’s up there as one of the more expensive houses on the blog in its six (6!!) years. (Happy Birthday McMansion Hell!)

Without further ado:

Lawyer Foyer

I know what you’re thinking but we keep it PG with the chair jokes here.


Great Depression humor is back, baby. It’s recession time.

Dining Room

If this house got any more into metallic surfaces there’d be lead in the water.

Great Room

Whole house smells like $14 body spray called something like “tempting pink.”


“Braighlynne if you get one drop of apple juice on this rug mommy is going to need a valium.”


Are we finally done with mirrored furniture???? Are we?????? (Also the SIA-line is a Kristjan one.)



(this is a top-10 joke for me. i am patting myself on the back.)

And finally, we exit our tour:

Usually the rear exterior is less unhinged than the front, but not so this time!

Anyway that does it for this edition of McMansion Hell. Hope you enjoyed, and from sunny Ljubljana, see you next time!

If you liked this post, consider subscribing to the Patreon, where you will get access to livestreams, bonus posts, and the best lil discord community on the whole dang internet

Not into recurring payments? Tip me – because inflation is ruining my entire life.

yet again we find ourselves in cook county

Živjo from Slovenija, where there are no McMansions. (I finally know peace.) And yet at the same time I grew homesick enough to make my way back into the Cook County Suburbs, namely Barrington, namely South Barrington, namely McMansion Hell. If only in spirit.

This $3 million, 19,700 square foot house (built in 2001) showed up in a previous post, but only its facade. I promise you it’s worth cracking it open and seeing the insides, like a gooey, ugly egg. This is probably the first post in this blog’s history where there were no bedroom photos in the listing. Perhaps Realtors™ have learned a lesson from the “Welcome to Poundtown” incident. Anyway, here goes.

Remember her? Wish I didn’t.


The light fixture kind of reminds me of some peripheral creature you’d find in The Fifth Element. At least it’s “unique” (in the same way a high school bully with really rich parents is “unique.”)


I don’t know why paint companies have to manufacture every color under the sun. They’re putting their customers in danger of making really dumb decisions. Surely some ethics are warranted.

Great Room

I have never seen a McMansion living room bar that full of liquor. I assumed they were mostly decorative but no, these people drink.

like, they have an entire cooler room just for booze:


If you’re not having some Wuthering Heights moments while doing the dishes, wyd

Master Bathroom

Like I said, there weren’t any bedroom pics, but the bathroom almost makes up for it. Exceptionally weird.

Music Room

“But you don’t even play piano!”


How could they do this to my third favorite color???? What did she do to deserve such ignominy?????

Finally, I leave you with some of the most baffling assemblages of architectural bits and pieces hitherto known to residential architecture:

Yeah, this is like 10 McMansions.

Anyway, I hoped you enjoyed yet another trip to the 9th circle of McMansion Hell, aka South Barrington, stay tuned for our next installment, which will be about that fake Croatian town they made in Texas.

If you liked this post, consider subscribing to the Patreon, where you will get access to livestreams, bonus posts, and the best lil discord community on the whole dang internet

Not into recurring payments? Tip me – because inflation is ruining my entire life.

McMansion Hell: revenge of cook county

Fans of this website will perhaps remember a certain house from the “worst of suburban Illinois” post. I’m here to alert you to the fact that the interior of said house may in fact be the pinnacle of what has been dubbed by my colleague Cocaine Decor as “Cocaine Decor.” This 1990 house has lived rent free in my brain for a while, and now it will live rent free in all of yours. It sits at $1.1 million USD and precisely 10,000 square feet, each of which exists in ignorance of the Light of God.

Remember her? I wish I didn’t. Anyway.

The Lawyer Foyer

I would actually venture that this is the most reasonable and bland room in this house, but it sets the tone for what is to come: baffling art, even more baffling curtains, and the most baffling carpet choices to ever be offered in a catalog. Also from this angle it’s really funny.

The Sitting Room

Ok does anyone else here from the aught’s internet remember vintage Art.com and its kind of weird kitschy art prints? I used to spend hours on that website amassing pictures of lemons and limes because children are weird.

Living Room

I quilt and I KNOW how much fabric costs. Also I really want to do some kind of research project on late 90s-early 2000s “modernism” which is basically like “what if we took modernism and made it really chunky.” If you were working as an industrial designer during that time and can help me figure out what in the world was happening, please hit me up in the Twitter DMs @mcmansionhell.


hmm getting some Eyes Wide Shut vibes from all this… kinda sus…

Main Bedroom

Viral Tweet Voice: Tiger King was 10,000 years ago. Remember sourdough starters??? Hobbies taken up with manic urgency??? Washing groceries??? How young we were. How foolish.


Give me some powder and 15 minutes in here and I’ll come up with McMansion Hell 2 (or lose thousands of dollars on NFTs - it’s a toss up.)


You know those metallic sharpies they sell two-packs of at Target? They took those to a fabric shop and said: here’s our palette, go nuts.


shout out to my mom, I love her.

Okay, that’s about enough of that. Here’s the back of the house complete with a tripartite architectural analysis (it’s very complicated):

I hope you enjoyed this installment of McMansion Hell, stay tuned for more cursed houses from the Mecca of cursed houses, because I, uh, found a lot of them yesterday.

If you liked this post, consider signing up for my Patreon where you can get merch, livestreams, bonus houses, discord server access and more.

Not into subscriptions? Tip me a cup of coffee for my trouble at Ko-Fi.

P.S. go bulls

daydream houses of oman

Howdy, folks! With all the terrible events unfolding in Ukraine right now, I figured everyone would like a little bit of a break from doomscrolling. Not wanting to add anymore negativity to the timelines, I’m going to share something on-topic but decidedly more cheery than the McMansions of rich people who suck.

As some of you may know, I recently visited Oman as a cycling journalist covering the eponymous Tour of Oman. (You can follow all seven days of my travels via my cycling newsletter derailleur beginning here.) While I was there, I came across some of the most fantastic houses I’ve ever seen and had to take photos. Admittedly, I’m not a great photographer. I just bought a camera (a Panasonic Lumix) last year. Still, I tried to do these houses justice with my limited talent, a difficult task considering I was photographing from a moving car chasing bike racers around. These photos were taken during the Tour of Oman stages one and two, which traveled along routes from Al Rastaq to Muscat and from Barka to Suhar, respectively.

Each of these examples mixes Western luxury with Islamic architectural motifs, and they make use of elements like reflective glass and condensation capture tanks in order to mitigate some of the challenges of the desert climate. All are made from painted concrete, as there is little wood to be found in such an arid ecosystem and an abundance of rock and energy to beat it into submission.

These homes are decidedly an Omani phenomenon, their size and ostentatiousness perhaps owing to the country’s newfound wealth via oil exploration. However, while many would be keen to point the finger and shout “McMansion!”, as a good ex-graduate student, I’m wary of applying Western aesthetic standards to Eastern architectural examples. Besides, I have to say, these houses are way more fun than literally anything I’ve ever seen stateside. They’re playful and colorful, openly celebratory and, to be honest, kind of wild. I hope you enjoy them.

pink step-like house with central corridor

Note the explicit symmetry and two-toned reflective glass.

pastel foyer house

I found many examples of a stained glass technique wherein scenes or photographs are silkscreened onto glass and mounted as the most central window on the home. Note also the house’s classical composition as well as the obscured crenelated water collection tank on the roof, another common feature.

green house with arched door

Tripartite entryway consisting of a pediment, an oriel, and an ornate arched door surrounded by decorative script. Kermit the frog green.

house of the nine hoods

Note the Mario Botta-esque striped wall, the fort-like composition, the many cornices, and the fact that each window is screen-printed with a different pattern.

mullion house

Glass need not be a boring feature of the common home! Extremely ornate mullion patterns and fun purple columns.

little sunshine house

Note the subtle three-part mutifoil arch and the use of interior tile as exterior decoration to augment the entryway, something that’s common in these houses, perhaps because there is less worry of wear and tear by water. Another common element to one-story houses is a central roof-access tower for accessing the water tower and HVAC units.

imprint house

If foam is the material language of the Western McMansion, the Omani show-house speaks in concrete. Note the embossing of the cornices, windows, and wall panels to resemble zellij-pattern tilework. The exaggerated cornices are a nice touch of absurdity.

triple dome house

An absolutely chaotic house featuring extensive use of decorative tile, colonnaded windows, and subtle asymmetry. Love whatever’s going on with the garage doors.

oblique house

A house organized at an oblique angle, with complex wings and a heavily obscured front door. Pistachio green with mixed architectural elements.

gold window house

What happens if a house was made entirely of turrets? The answer is, it’s pretty glorious.

Anyway, I hope these houses brightened at least one person’s day and that everyone enjoyed this little reprieve from all that’s terrible.

Stay safe friends.

hello i have written about the metaverse and that cursed walmart video that’s been going around

Suburban Chicago McMansions Follow a Dark Logic Even I Do Not Understand

For reasons architecturally unbeknownst to me, the McMansions of Chicago’s suburbs are actually insane. Perhaps it makes sense that Chicago, America’s mecca of great and distinguished architecture would also give birth to what can be appropriately called the netherworld version of that.

For six years, I have run this blog, and for six years I have been absolutely amazed by the formal leaps and bounds exhibited by the McMansions of Chicago’s suburbs. This area is undisputedly the fertile crescent of unhinged custom homebuilding and while I’ve heard other claims made for the gaudy, compact McMansions of Long Island, the paunchy shingled stylings of Greenwich, Connecticut, the Disney-Mediterranean hodgepodges of Florida, the oil-drenched nub mountains of North Texas, you name it – nothing comes remotely close to that which has been built in the suburbs of Cook, Lake, and DuPage Counties. (In the case of the houses featured in this post, nine of ten are located in Barrington, IL, which just might be the census designated place known as McMansion Hell.)

Usually vernacular architecture has some kind of origin point, a builder or a style or a developer one can point to and say, aha, that’s where that comes from. One could argue that the postmodern classicism of a Robert AM Stern or the tory Colonial Revival selections found in the Toll Brothers catalog provided this service for much of the McMansion canon.

However, the McMansions in the Chicago Suburbs are so wildly customized and unique, it is as though each of the ten listed here were in competition with one another to build the most outrageous collage of wealth signifiers imaginable, to the point where their architecture becomes almost un-house-like. The responsibility for their form, owing to the absence of architects, lies solely with the owners and the custom builders who did their unquestioned bidding, who plucked each turret and mismatched window from the catalog after being told, give me that. These homes are the end logic of the “custom home” of the pre-2008 era where nouveau riche (and sometimes old money) fantasies were dropped on whatever massive virgin lot one could afford to hook up plumbing to.

There are two Barrington subtypes I’ve been able to identify that, while not unique to the area, seem to be the only kinds of formal logic uniting many examples. The first I’ll call the Long House, which is just what it sounds like: a once rational house that’s been stretched to comical length-wise proportions:

Theoretically the above house makes sense to the eye. The turrets divide it into a kind of five part vertical rhythm. But the more you stare, the less sense it makes. Why is there a window between the third and fourth turret but no other? Why are there two whole other wings jutting out from the house in two other directions? Were the house not one color, the eye would get lost immediately, and the scale is such that the realtor had to zoom all the way out with a drone just to capture the whole thing in one frame. Besides, what style even is this imitating? French Country? Great Recession-core? (The same could be asked of all of these houses which, owing to their bloated-ness defy and elude even the most half-assed stylistic or historical cosplay.)

In case you were wondering, the turret exists so as to roof a curved secondary mass. A horrible question to ask ourselves is: when a turret is not used, how does one attach the curved mass to the roof? The answer is whatever is going on in the above example. I’m sorry you all have to see this.

The Long House is perhaps best demonstrated in the above particular model, which appears as though it’s not actually real but rather a mid-range SketchUp render. This house actually reminds me of many examples I’ve seen in Bergen County, New Jersey. The first three masses form a logical tripartite facade. The two that are tacked on after that undermine the rest and render it almost comical. Also they’re slightly different from one another. Of course.

The other of the two subtypes is what I call the Tank House. (One also finds turrets on a tank.) The Tank House is, well, shaped kind of like a tank: hulking, with a central protruding mass around which everything else is oriented, often at a strange oblique angle:

Building a house at an oblique angle is kind of an interesting architectural decision especially on a corner lot, but none of these are corner lots - they are large swaths of what was probably farmland unhindered by size constraints. A carport is rather like the firing arm of our tank house, protruding outward and demonstrating a kind of military might:

Often in the Tank House, additional masses are just kind of piled on to the sides because it’s actually kind of inconvenient to design a really big house on a 45 degree angle:

This results in these houses taking on a kind of kaleidoscope effect where they tesselate, spread and converge as the eye tries to assimilate them into something with symmetry, even though the design consistency falls apart at the edges.

And then there’s whatever this is:

Yeah. Sometimes postmodernism wasn’t all fun colors and ironic greek order references. Unfortunately.

However, the Tank House doesn’t always have to involve an oblique angle. What’s unique - other than the oversized central portico - is actually the piling on of the massing into mismatched wings:

Like I said above, architecture, especially “traditional” architecture longs for symmetry, and these houses simply do not have it. They always manage to screw up, shoving some house over there, some roof to that side, as though they’ve started with a central idea and were unable to commit, rather like this post in which I’m wandering around really, really trying to understand why these houses are so damn bizarre.

In the last two examples, you’ll see a central hall punctuated by grand entrance of some kind. But in both cases the symmetry is broken by adding another mass to the right simply because the garage calls for it. It shows a remarkable lack of architectural faculty and imagination to let a garage derail the entire formal logic of the house. It’s lazy. However, the garage is a status symbol in and of itself – perhaps the disruption, the madness, is the point. (In architecture, as in all things, one must remember not to ascribe to malice that which can be easily explained by incompetence.)

This brings us to the last of our examples, which I consider to be among the greatest McMansions to ever exist:

This house took sprawl as its very inspiration, its DNA, its parti. It exists simply to say how much of it there is. It lays on a barren sea of turf grass, is constructed entirely from fossil-fuel based materials, is illuminated by a spurious sky added in post. Everything about it is the pinnacle of artifice, the absence of substance. Even color eludes it - it has traded color for “tone,” for a monochromatic neutrality that even better conveys just how huge and stupid it is. I hate this house, but I also love it, because it pushes the boundary of the medium like all memorable works of architecture do. That’s the thing – despite six years of running this website, every time I think I’ve seen it all, I come back to Barrington, Illinois and find something even my headiest subprime fever dreams couldn’t possibly cook up.

If you liked this post, consider signing up for my Patreon where you can get merch, livestreams, bonus houses, discord server access and more.

Not into subscriptions? Tip me a cup of coffee for my trouble at Ko-Fi.

The McMansion Hell Yearbook: 1981

Hello everyone! We return to the great state of Illinois (where I live) to bring you this wonderful time capsule from DuPage County (where I don’t live but have ridden my bike.) There is actually much more house to get through than in the usual McMansion Hell post so Iet’s not waste time with informalities.


This incredible 70s hangover is served (with a fine line on a silver tray) at a neat $5 million. It has seven bedrooms for maximum party discretion and 4.5 bathrooms also for maximum party discretion but of a different sort. Shall we?

Lawyer Foyer

Definitely thought that the staircase emptied out into a pool of brown water. (I’m sober, though.)

Auditorium-Sized Living Room

Pretty sure this is the most epic hearth in McMansion Hell history, if not world history. a bit of overkill, imo. Anyway, let’s see what’s behind it.

In the late 1970s, society once inquired, collectively: What if “Dudes Rock” was a bar?


This is the most normal room in the house. (This is a threat.)

Main Bedroom

How can something clearly from the 80s have such powerful 2006 energy?

Main Bathroom

This was likely a reno job but master bathrooms did start being roughly the size of my living/dining room a few years later.


Okay. Okay. We’ve completed our tour of the main, relatively normal McMansion part of this house. We are now entering the Sicko Zone, wherein everything gets progressively a little more, well, sick.

(Note: There are more images from the sicko zone but Tumblr only lets me put 10 images in per post so please head over to the McMansion Hell Patreon to see more.)

The Den

Remember late-era Frank Lloyd Wright? These architects dared to ask: What if he sucked?

the horrible room

yeah sorry i need some air.

Rear Exterior

Well, that was eventful. I hope you all enjoyed our little foray into hell. Stay tuned for more Yearbook! It’s only going to get pinker and tealer from here.

If you like this post, consider supporting me on Patreon for as little as $1 a month!

Not into monthly subscriptions? Try the tip jar!

Hello! I finally wrote about the Farmhouse Style!

Note: this piece includes the phrase “the Yeti cooler of houses.”


The McMansion Hell Yearbook: 1980

(back of a quirky literary novel voice): Sometimes, things are not what they seem. An architecture critic disappears for three months to follow bike racing around Europe, rife with questions of becoming and desire. A real estate agent uploads a listing to an aggregator, knowing that it will be a difficult sell but thinking not much of it, for, like Tolstoy’s unhappy families, all houses are difficult to sell in their own way. A house is built in 1980 in Staten Island and would have thrived as an anonymous bastion of tastelessness had the internet not been invented. But the internet had been invented. All of these things are brought together here, through truly unlikely circumstances.

Let’s not bother with the formalities this time.

None of you will buy this house.

Sitting Room

Does anything here make sense? The periwinkle sofa, the twinkling of bronze glass, a truly transitional material, a mall exiting stagflation and entering the sultry trap of Reaganite libertarianism that would leave it empty twenty-five years later. The sense that one is always changing levels, trapped in a landing of some sort, never quite arrived on stable footing. But that’s just the style, one assumes. One foot in the seventies, with all their strife, one foot in the beginning of what felt like the end of history. One’s ass on the iridescent pleather sofa, waiting for the centuries to change.

Sitting Room II

My suspicion is that there are no pictures of the mirrored mystery foyer because the photographer’s identity would be henceforth revealed, and the point of all real estate photography is for the viewer to imagine themselves as the only person in a given space.

Dining Room

The shinier things are, the richer one is, obviously.


This serious sociological research also happens to coincide with the Giro d'Italia, one hopes.


(crediting @cocainedecor on twitter for their term. but also, where can i get some chevron mirrors, asking for a friend.)

Master Bedroom

just asking questions

Bedroom 2

Ostensibly bad opinion that I will nevertheless defend: the corner bed slaps, let’s bring it back.


(Staten Island accent): Hey, I’m workshoppin’ some metaphors here!

Alright, we’ve entertained this monstrosity enough - time to wrap things up.

Rear Exterior

You know, McMansion Hell has been around for five years now, and has coined many terms - an art, ahoy matey, lawyer foyer, brass n’ glass, pringles can of shame - but I have to say, I hope fireplace nipples also sticks.

Anyway, that’s all for 1980 - join us next month for 1981.

If you like McMansion Hell, support it on Patreon!

short lease in a slick machine: a personal essay about apartments

Hi Everyone, you may have wondered where I’ve been for the last few months. The truth is, I, like most people must at some point in their lives, needed to take a little break and figure some things out, needed to go on some long personal journeys, needed to meet some heroes, needed to just not do this website for a short amount of time, but don’t worry, I’m back now, and I’m bringing the feels on the way in.

Before I present this essay, I would like to offer my deepest thanks to the people who kept supporting me on Patreon during this soul searching. I owe you everything.

I’m moving again. I’ve moved every single year since I’d left my parents’ house at the age of eighteen, with the exception of the apartment I had on the second story of a Queen Anne on S. Mendenhall Street in Greensboro, in which I stayed in for two years. The rest of my dwellings have been painfully temporary, with life inevitably coming around to its annual migratory upheaval. There have been many reasons why, of course, quotidian reasons that always feel devastating at the time – jobs, school, pestilence, crazy roommates, despicable slumlords, partners to be moved closer to, relocating just to get away from where one has been before. I could rank every apartment on a scale of worst to best, from most to least livable, but none of them were permanent.

above: the only apartment I ever lived in for more than a year, a sacred place.

I wanted to write about the apartment I’m moving away from in Chicago even though perhaps it’s not prudent to do so – it’s never prudent to be personal on the internet. Don’t worry, though, I won’t include anything incriminating that could be construed as defamation or whatever. You can just feel angry on my behalf, which is really, truly in the spirit of McMansion Hell. And this is, well, apartment hell. The apartment I’ve lived in this past year quite frankly and very succinctly encompasses everything I kind of hate about architecture, about design, about the ways people in the profession are expected to live their lives for the benefit and the consumption of others.

first impressions

When I first saw the apartment, it was the nicest apartment I’d ever been in, the finest I’d hitherto walked the halls of in my rubber Birkenstocks. It was big and full of light, with lovely maple floors, the kind where, at the right time of day, you could sometimes see the tiger pattern emerge in flecks and ribs like those on the backs of violins. When the landlord, an architect, showed it to us, he had his stuff in there still. A Bertoia chair that was probably real. Very carefully selected items from Design Within Reach alongside enough pieces from other places to make the whole getup seem more authentic. Sparse hangings on the walls, each big and well-framed. Single potted plants. A well-oiled cutting board.

There were European bath and kitchen fixtures and recessed lights that dimmed at the press of a button, which meant we could get rid of all of our floor lamps. In the kitchen, tall, elegant white cabinets above a slab of marble, dubbed, reverently at the time, a living material. Blinds on rollers meant no need for hanging curtains. A soaking tub and a Duravit toilet, you know, the floating kind cultured people had. Europeans. The rent was at the top of our budget but still doable. I signed the lease fast, with unbelievable giddy excitement. Finally, a nice place to live after years and years and years in what could only be deemed as shitholes. Shitholes and the nice midcentury apartment building I lived in in DC, but that was a studio and DC was a place I wanted to get so immensely far from that we ended up in Chicago, the only city in America I ever really wanted to live in.

cracks in the facade, so to speak

As soon as we moved in, an unsettled feeling crept in. I can place it now as the sense that this apartment was too nice for people like us – people with particle board furniture and student loan debt. That it wasn’t really ours, we were just borrowing it before someone worthier came. Subconsciously, we knew this. We never hung anything on the walls save for the Mondaine clock my husband bought at the MoMA Design Store and the Giro d’Italia jersey signed by Tom Dumoulin, which I’d had framed. The walls were a blinding white. Putting tacks in them felt like an unlawful penetration. Our landlord fussed over the stuff we had on the back porch. One time he criticized where my husband had situated the soap on the kitchen counter, the living material which, in reality, is just a fancy term for “stains easily.”

All of a sudden, we were living under a microscope.

We weren’t using the apartment the right way; namely, we didn’t decorate or live like an architecture critic and a mathematician theoretically should. Our apartment wasn’t photogenic. There were too many bikes in the living room. We still had a garbage $300 Wayfair sofa that felt like sitting on cardboard. There was clutter. This beautiful apartment wasn’t meant for our kind of ordinary and this was made known several times in subtle and rather degrading ways, after which our lease was not renewed, to the relief of all parties involved. Even if it meant moving again.

The longer I lived in the apartment, the more I hated it, the more I realized that I had been fooled by nice finishes and proximity to transit into thinking it was a good apartment. As soon as we’d got in there, things started to, well, not work. European fixtures aren’t well-liked by American plumbers. The dimmable lights would sputter and spit little blinking LEDs for reasons totally unknown and we’d have to pull a tab to reset them. Everything was finicky and delicate. The shower head, the kitchen sink that fell in two times somehow (which we had been accused of being rough with, an absurd thought – it’s a kitchen sink!), the bedroom doors that didn’t close right, the bathroom door that would trap you inside if it shut during a hot shower. All of the niceness, the glitzy brand names, the living materials were not meant for everyday use, even by gentle individuals like ourselves. They were made solely for looking at, as though that were the point of all habitation.

Suddenly, we were in a prison of design. This was a place for performing living, and we, as normal people, simply wanted to live – wanted to leave clothes in front of the washer as we pleased, wanted to bake cakes that got flour everywhere, wanted to just collapse somewhere and go to sleep, wanted to have a private life not dominated by the curation and fussiness and pressures of taste that govern careers like mine. Our house was always just for our consumption, not that of others. I spend most of my life in the worlds of design and architecture, and to be honest, you wouldn’t know it aside from all the heavy books and the tapered legged coffee table. I never had it in me to turn my house into a museum of my own clever delectations, a proof of concept of my skills as a critic. I just wanted to dwell naively. Off Instagram.

But the worst part of the apartment was that it was designed by someone who didn’t know how to live, couldn’t think of anyone’s world other than the sparse one of the architect who owned nothing save for color-coordinated books and limited edition lithographs. It had all the functions of living, technically speaking, but the way in which they were allocated and arranged made no sense. There were no closets in any of the rooms, just open storage, which only works for people who don’t actually have things. The tub wasn’t caulked to the wall so that it would appear to float, a nice aesthetic effect which made taking showers annoying and perhaps bad for the walls.

Above all, I hated the kitchen the most. The kitchen was basically ten feet of counter space, with giant cabinets extending to the ceiling, far beyond what any normal person could reach without a stepladder, the upper shelves of which being where things went to be forgotten. A sink punctuated the center of the marble countertop – and marble is a terrible material for a countertop. It stains and wears with water. It shows all mess mercilessly. There was a stove and a fridge just, like, in the kitchen attached to nothing. The gas stove had no overhead ventilation and every time we used it we had to open the door so the smoke alarm wouldn’t go off. It was a kitchen designed by people who never cooked: too small, inefficient, laid out in the way it was, like so many apartment kitchens, so that it shared services with the same wall as the bathroom. We couldn’t put anything in the finicky sink to soak so the counter was always crowded with dishes. We had no dishwasher because that would mean ceding the only bottom cabinet that was truly usable.

It angered me, really, as an architecture critic, that this apartment, which had so very much been made to be ogled and looked at and oohed and ahhed over by people of taste was absolutely, for a lack of a better word, bullshit. That it was beautiful but unlivable, like some kind of joke made only for people like me to laugh at. I love design, obviously, but I hate the pressure to have to perform taste in the most intimate of one’s settings and this was the epitome of that, the untouchableness of it, the smug superiority of its flavorless emptiness. I’m not a curator of other people’s gazes when I’m in my pajamas or sweating it out on the trainer. I’m simply Kate Wagner, living with a husband and a dog, like a lot of twenty-seven year old white girls in cities. By the end of the lease, I just wanted to move somewhere where I’d feel at home, whatever that meant. I never had the type A personality needed for pristine white walls. I hated how the recessed lights made all our stuff look cheap, like a museum of stunted adulthood.

Our new apartment has a two-year lease, which is about as much stability people like us could ever hope for or afford. It’s the first floor of a worker’s cottage dominated by a palladian window on the second story that would be pretentious were it not so earnest. The house itself is a hodgepodge of the vernacular, which is what I deserve, as its chronicler. The interior walls are painted lively colors – a soft blue, a slate purple, a taupe, a mint green. It’s gritty enough to be cool and old enough to be livable. There are closets. The bathroom is covered in chiclet glass tile that’s different shades of blue, which I find endearing. But what I love most of all is the kitchen.

All my life, I’d been in search of an apartment with a decent kitchen, and I’ve always wondered why apartment kitchens suck so bad save for the obvious answer (landlords are cheap.) Like I said earlier, the desire to route services (plumbing, electricity) in the most efficient way possible governs most things, though this is more true of renovations or new builds than the adaptation of single family homes into multi-family dwellings. In the case of the latter, the second floor apartments are always the worst off, in fact, almost all apartments are worse off than the one that houses the actual original full-sized kitchen to begin with.

Adapting a space that was meant for sleeping into one where food could be cooked often required some inventiveness with regards to fire safety and ventilation and this usually took the path of least resistance, hence why most kitchens are positioned to the rear of the house, especially if there is outdoor access. (Plumbing in older houses also tends to be positioned on interior walls to avoid pipes freezing in the winter.) In Chicago, most layouts of familiar single-family vernacular housing styles are similar to one another on the ground floor, but the apartments on the second floor are always quite varied, especially with regard to where the kitchen is placed. Often it’s done, again, in a way that allows existing services to be used or for new ones to be built that are on the same wall as another unit. Adding new plumbing where it wasn’t before is expensive and a pain.

However, service routing aside, most apartment kitchens are only ever satisfactory – kitchens for people who ate nothing but takeout or miniature versions of the real thing as though apartment living were just an audition for owning a house, something that’s just no longer true in this economy. This one – with its vintage 50s aluminum cabinetry and its enameled countertops with glitter infused in them like some kind of demure bowling ball and its full-sized appliances and dishwasher, and mint green penny tile, its wonderful quirkiness and its ample cabinet space beneath the counters – is functional. It works like a kitchen should, towards a domestic life engineered by modernism and scientific management with a dash of feminism to be less arduous. This is nothing short of a miracle to me. When I think about it, I get emotional. I have been searching for so long for any kind of semblance of a place tailored in any way towards my needs, towards my desires, which is to have enough space to help rather than hinder in the preparation of meals. Meals we now enjoy as a very small family. The kitchen was never really important to me until I had someone to share it with, as insipid and mawkish and introduction-to-a-gluten-free-recipe as that sounds. I’m no longer living for one, but for two, and I didn’t realize how much that changed living.

I didn’t realize how much autonomy meant until I lived in a place where I felt I had none.

Our new landlords, a school-teacher and private investigator (what a combo) are there right now cleaning the house, fixing the little nicks left by the previous tenants, pulling out their picture hanging apparatuses, which, they assure us, we can leave too. We can put stuff up on the walls, the very thought! They’ve already stickered our names on the mailboxes, have installed a doorbell, which strikes me as a very post-COVID gesture. They hope we will stay there a long time, and so do we. There’s a yard for the dog to play in with garden beds that house burgeoning bell peppers. Our friends are allowed to come over, which they weren’t before — well, not officially, but it felt like it. There are sounds in the house, of those who dwell above and below, the sounds of life. There’s a window I wish I was sitting by writing, and soon, I will be.

So many of us ask the simple question, what is home? What should it be? And the only real, genuine answer I have to give after ten-odd moves is that home is the only place in the world where one can be truly unselfconscious. Even if that means having particleboard furniture and a bunch of bicycles.

That’s my business, not yours.

If you liked this post, check out the McMansion Hell Patreon, or, if so inclined, drop a tip in the tip jar.

r/McMansionHell - Hello r/McMansionHell, I'm Kate Wagner, creator of McMansion Hell and architecture critic at The New Republic. AMA!

r/McMansionHell - Hello r/McMansionHell, I'm Kate Wagner, creator of McMansion Hell and architecture critic at The New Republic. AMA!:

Howdy, Folks! If you’re not busy right now, I’m doing an AMA on the McMansion Hell Subreddit! Stop by and ask me some questions!

The McMansion Hell Yearbook: 1979

Howdy, folks! I hope all of my fellow Midwesterners are enjoying this year’s false spring. Seventy-degree days notwithstanding, the snow will indeed be back, and, as such, I have prepared for you a house to enjoy (?) alongside a miserably late-in-the-year hot cocoa. 

Now, this house isn’t as oppressively horrible as the last one, however, the point of the Yearbook is to show off how houses evolved overtime, and also to celebrate some of the kookier time capsules left out there. Our current house falls into the latter category, and to be honest, I find it weirdly endearing. 

Located just outside of Detroit, this 5 bed, 4.5 bath house tops out at over 10,000 square feet. Yes, you read that right. 10,000. You’ll see why later. Anyways, if you want to purchase said house, it can be all yours for just under $1,000,000. A steal!

??? Foyer

In America we don’t have barons, only robber barons, so I’m going to assume whoever built this house did so on the backs of thousands of exploited 19th century child laborers or whatever. Bad stuff. 

??? Room

Unsure of the purpose of this room, genuinely, because all other rooms are accounted for. This one’s just empty. It’s just existing. Vibing, as one might say.

TV (???) Room

Don’t mind me, I’m just getting out my birding binoculars in order to watch Seinfeld reruns.


Considering the history of the Midwest and the fact that Sears and co. cut down all our old growth forests in order to do cheap furniture and balloon framing, this whole wood paneling bit is really part of a much larger historical milieu.  

Dining Room

The American Bicentennial lurks in the background of all of these houses, its legacy permanently ingrained in too-dark rooms across the nation. 

Main Bedroom

Shivering at the thought of my feet touching cold tile floor every morning. That’ll wake you up. 

Other Bedroom

You know, the grandness of the chandelier has diminishing returns if you put one in every single room. Then it becomes just another light fixture. 

Random Bathroom

BROWN TUB BROWN TUB BROWN TUB (the rarest of all mid-century tubs)

Pleasure Grotto

Ok now this is why I chose this house. It also explains why this house is 10,000 square feet - at least half of that is just this pool alone. The funniest bit is, I can’t for the life of me tell WHERE this pool is by looking at the exterior of the house. In fact, I’m not sure how they managed to fit so much house in that small of an envelope, but at this point, it’s so weird I’m inclined not to ask further questions. Some things in the universe are not meant to be known to us. 

Rear Exterior


Anyways, I’ll let that haunt you for a little while. 

In the mean time, I’d like to take this space at the end of the post to announce that I’ve started a little side project devoted to my other love in life, professional cycling. It’s a newsletter called derailleur that aims to tell the stories of contemporary professional cycling in an unconventional, narrative-driven way. If you’re into such things, feel free to check it out: derailleur.substack.com 


If you like this post, and want to see more like it, consider supporting me on Patreon!

There is a whole new slate of Patreon rewards, including: good house of the month, an exclusive Discord server, monthly livestreams, free merch at certain tiers and more!

Not into recurring donations but still want to show support? Consider the tip jar!

Or, Check out the McMansion Hell Store! Proceeds from the store help protect great buildings from the wrecking ball.

i draw cyclists

i draw cyclists:

hey so in my spare time, when i am not an architecture critic, i like to draw. this has merged with my other love in life (professional cycling) and as such i have dedicated the last six months of my evening hours to drawing cyclists. 

tl;dr i made a tumblr where i’m posting my art if you’re into that kind of thing. this isn’t monetized in any way and i don’t take commissions - it’s just a nice (if strange) hobby i enjoy.

see you all monday with a new house post <3

The McMansion Hell Yearbook: 1978

Howdy Folks! Today’s house comes to us from Iredell County, North Carolina, and trust me, it is quite a doozy - just in time for Valentines Day, too! If you don’t fall in love with it, I don’t know what to tell you. 

This 5300 square foot, 4 bedroom, 4.5 bath house, comes in at $625,000, making it more of a bargain than most McMansions usually are, and while the Tudors never came to America, a place that had not yet been “discovered” by the time the Tudors were in power in England, fear not - for all the repression and stuffiness of 15th century Britain can still be found within these darkened doors. 

Lawyer Foyer

If your house doesn’t constantly give off I AM MARRIED vibes, your spouse might start having indecent thoughts. One must stay vigilant at all times. 

Dining Room

Look, hutches are good storage, okay. Sturdy. We as a generation (millennials) need to get back into knickknacks. Minimalism is dead. Long live kitsch. 

Living Room

Honestly, this house is so dark and repressed it makes high school me look like a libertine. 


“What do you mean ‘dopeness’ isn’t a qualifier for granting a property historical landmark status?” 

Main Bedroom

Love is in the air. Also the air is really, really stale in here right now. 


If your bathroom doesn’t emulate a luxuriant grotto, wyd???

Bedroom 2

please, my floor ducks, they are so cold,,,,


I have got to stop using epic ironically. I already lived through 2008 once. 

That’s it for the interior! Let’s just step outside for a quick breather…

Rear Exterior

Well, I hope you had a good time traipsing through what can only be described as a treasure trove of different matching fabrics. Be sure to stick around for the next part of “Underground” which is coming your way shortly!

If you like this post, and want to see more like it, consider supporting me on Patreon!

There is a whole new slate of Patreon rewards, including: good house of the month, an exclusive Discord server, weekly drawings, monthly livestreams, a reading group, free merch at certain tiers and more!

Not into recurring donations but still want to show support? Consider the tip jar! 

Or, Check out the McMansion Hell Store! Proceeds from the store help protect great buildings from the wrecking ball.

Underground, Part 1

[Author’s Note: A year ago, when waiting for the DC Metro, I came up with an idea for a short story involving two realtors and the infamous Las Vegas Underground House, typed up an outline, and shoved it away in my documents where it sat neglected until this month. The house recently resurfaced on Twitter, and combined with almost a year of quarantine, the story quickly materialized. Though I rarely write fiction, I decided I’d give it a shot as a kind of novelty McMansion Hell post. I’ve peppered the story with photos from the house to break up the walls of text. Hopefully you find it entertaining. I look forward to returning next month with the second installment of this as well as our regularly scheduled McMansion content. Happy New Year!

Warning: there’s lots of swearing in this.]



Back in 1997, Mathieu Rino, the son of two Finnish mechanical engineers who may or may not have worked intimately with the US State Department, changed his name to Jay Renault in order to sell more houses. It worked wonders.

He gets out of the car, shuts the door harder than he should. Renault wrinkles his nose. It’s a miserable Las Vegas afternoon - a sizzling, dry heat pools in ripples above the asphalt. The desert is a place that is full of interesting and diverse forms of life, but Jay’s the kind of American who sees it all as empty square-footage. He frowns at the dirt dusting up his alligator-skin loafers but then remembers that every lot, after all, has potential. Renault wipes the sweat from his leathery face, slicks back his stringy blond hair and adjusts the aviators on the bridge of his nose. The Breitling diving watch crowding his wrist looks especially big in the afternoon glare. He glances at it.

“Shit,” he says. The door on the other side of the car closes, as though in response. 

If Jay Renault is the consummate rich, out-of-touch Gen-Xer trying to sell houses to other rich, out-of-touch Gen-Xers, then Robert Little is his millennial counterpart. Both are very good at their jobs. Robert adjusts his tie in the reflection of the Porsche window, purses his lips. He’s Vegas-showman attractive, with dark hair, a decent tan, and a too-bright smile - the kind of attractive that ruins marriages but makes for an excellent divorcee. Mildly sleazy.

“Help me with these platters, will you?” Renault gestures, popping the trunk. Robert does not want to sweat too much before an open house, but he obliges anyway. They’re both wearing suits. The heat is unbearable. A spread of charcuterie in one hand, Jay double-checks his pockets for the house keys, presses the button that locks his car. 

Both men sigh, and their eyes slowly trail up to the little stucco house sitting smack dab in the center of an enormous lot, a sea of gravel punctuated by a few sickly palms. The house has the distinct appearance of being made of cardboard, ticky-tacky, a show prop. Burnt orange awnings don its narrow windows, which somehow makes it look even more fake. 

“Here we go again,” Jay mutters, fishing the keys out of his pocket. He jiggles them until the splintered plywood door opens with a croak, revealing a dark and drab interior – dusty, even though the cleaners were here yesterday. Robert kicks the door shut with his foot behind him.

 “Christ,” he swears, eyes trailing over the terrible ecru sponge paint adorning the walls. “This shit is so bleak.”

The surface-level house is mostly empty. There’s nothing for them to see or attend to there, and so the men step through a narrow hallway at the end of which is an elevator. They could take the stairs, but don’t want to risk it with the platters. After all, they were quite expensive. Renault elbows the button and the doors part. 

“Let’s just get this over with,” he says as they step inside. The fluorescent lights above them buzz something awful. A cheery metal sign welcomes them to “Tex’s Hideaway.” Beneath it is an eldritch image of a cave, foreboding. Robert’s stomach’s in knots. Ever since the company assigned him to this property, he’s been terrified of it. He tells himself that the house is, in fact, creepy, that it is completely normal for him to be ill at ease. The elevator’s ding is harsh and mechanical. They step out. Jay flips a switch and the basement is flooded with eerie light. 

It’s famous, this house - The Las Vegas Underground House. The two realtors refer to it simply as “the bunker.” Built by an eccentric millionaire at the height of Cold War hysteria, it’s six-thousand square feet of paranoid, aspirational fantasy. The first thing anyone notices is the carpet – too-green, meant to resemble grass, sprawling out lawn-like, bookmarked by fake trees, each a front for a steel beam. Nothing can grow here. It imitates life, unable to sustain it. The leaves of the ficuses seem particularly plastic.

Bistro sets scatter the ‘yard’ (if one can call it that), and there’s plenty of outdoor activities – a parquet dance floor complete with pole and disco ball, a putt putt course, an outdoor grill made to look like it’s nestled in a rock, but in reality better resembles a baked potato. The pool and hot tub, both sculpted in concrete and fiberglass mimicking a natural rock formation, are less Playboy grotto and more Fred Flintstone. It’s a very seventies idea of fun.

Then, of course, there’s the house. That fucking house. 

A house built underground in 1978 was always meant to be a mansard – the mansard roof was a historical inevitability. The only other option was International Style modernism, but the millionaire and his wife were red-blooded anti-Communists. Hence, the mansard. Robert thinks the house looks like a fast-food restaurant. Jay thinks it looks like a lawn and tennis club he once attended as a child where he took badminton lessons from a swarthy Czech man named Jan. It’s drab and squat, made more open by big floor-to-ceiling windows nestled under fresh-looking cedar shingles. There’s no weather down here to shrivel them up.


“Shall we?” Jay drawls. The two make their way into the kitchen and set the platters down on the white tile countertop. Robert leans up against the island, careful of the oversized hood looming over the electric stovetop. He eyes the white cabinets, accented with Barbie pink trim. The matching linoleum floor squeaks under his Italian loafers. 

“I don’t understand why we bother doing this,” Robert complains. “Nobody’s seriously going to buy this shit, and the company’s out a hundred bucks for party platters.”

“It’s the same every time,” Renault agrees. “The only people who show up are Instagram kids and the crazies - you know, the same kind of freaks who’d pay money to see Chernobyl.” 

“Dark tourism, they call it.”

Jay checks his watch again. Being in here makes him nervous.

“Still an hour until open house,” he mutters. “I wish we could get drunk.”

Robert exhales deeply. He also wishes he could get drunk, but still, a job’s a job.

“I guess we should check to see if everything’s good to go.”

The men head into the living room. The beamed, slanted ceiling gives it a mid-century vibe, but the staging muddles the aura. Jay remembers making the call to the staging company. “Give us your spares,” he told them, “Whatever it is you’re not gonna miss. Nobody’ll ever buy this house anyway.” 

The result is eclectic – a mix of office furniture, neo-Tuscan McMansion garb, and stuffy waiting-room lamps, all scattered atop popcorn-butter shag carpeting. Hideous, Robert thinks. Then there’s the ‘entertaining’ room, which is a particular pain in the ass to them, because the carpet was so disgusting, they had to replace it with that fake wood floor just to be able to stand being in there for more than five minutes. There’s a heady stone fireplace on one wall, the kind they don’t make anymore, a hearth. Next to it, equally hedonistic, a full bar. Through some doors, a red-painted room with a pool table and paintings of girls in fedoras on the wall. It’s all so cheap, really. Jay pulls out a folded piece of paper out of his jacket pocket along with a pen. He ticks some boxes and moves on.

The dining room’s the worst to Robert. Somehow the ugly floral pattern on the curtains stretches up in bloomer-like into a frilly cornice, carried through to the wallpaper and the ceiling, inescapable, suffocating. It smells like mothballs and old fabric. The whole house smells like that. 

The master bedroom’s the most normal – if anything in this house could be called normal. Mismatched art and staging furniture crowd blank walls. When someone comes into a house, Jay told Robert all those years ago, they should be able to picture themselves living in it. That’s the goal of staging. 

There’s two more bedrooms. The men go through them quickly. The first isn’t so bad – claustrophobic, but acceptable – but the saccharine pink tuille wallpaper of the second gives Renault a sympathetic toothache. The pair return to the kitchen to wait.


Both men are itching to check their phones, but there’s no point – there’s no signal in here, none whatsoever. Renault, cynical to the core, thinks about marketing the house to the anti-5G people. It’s unsettlingly quiet. The two men have no choice but to entertain themselves the old-fashioned way, through small talk.

“It’s really fucked up, when you think about it,” Renault muses.

“What is?”

“The house, Bob.”

Robert hates being called Bob. He’s told Jay that hundreds of times, and yet…

“Yeah,” Robert mutters, annoyed.

“No, really. Like, imagine. You’re rich, you founded a major multinational company marketing hairbrushes to stay-at-home moms, and what do you decide to do with your money? Move to Vegas and build a fucking bunker. Like, imagine thinking the end of the world is just around the corner, forcing your poor wife to live there for ten, fifteen years, and then dying, a paranoid old man.” Renault finds the whole thing rather poetic. 

“The Russkies really got to poor ol’ Henderson, didn’t they?” Robert snickers.

“The wife’s more tragic if you ask me,” Renault drawls. “The second that batshit old coot died, she called a guy to build a front house on top of this one, since she already owned the lot. Poor woman probably hadn’t seen sunlight in God knows how long.”

“Surely they had to get groceries.”

Jay frowns. Robert has no sense of drama, he thinks. Bad trait for a realtor.

“Still,” he murmurs. “It’s sad.”

“I would have gotten a divorce, if I were her,” the younger man says, as though it were obvious. It’s Jay’s turn to laugh.

“I’ve had three of those, and trust me, it’s not as easy as you think.”

“You’re seeing some new girl now, aren’t you?” Robert doesn’t really care, he just knows Jay likes to talk about himself, and talking fills the time.  

“Yeah. Casino girl. Twenty-six.”

“And how old are you again?”

“None of your business.”

“Did you see the renderings I emailed to you?” Robert asks briskly, not wanting to discuss Jay’s sex life any further.

“What renderings?”

“Of this house, what it could look like.”

“Oh. Yeah.” Jay has not seen the renderings.

“If it were rezoned,” Robert continues, feeling very smart, “It could be a tourist attraction - put a nice visitor’s center on the lot, make it sleek and modern. Sell trinkets. It’s a nice parcel, close to the Strip - some clever investor could make it into a Museum of Ice Cream-type thing, you know?”

“Museum of Ice Cream?”

“In New York. It’s, not, like, educational or anything. Really, it’s just a bunch of colorful rooms where kids come to take pictures of themselves.”

“Instagram,” Jay mutters. “You know, I just sold a penthouse the other week to an Instagram influencer. Takes pictures of herself on the beach to sell face cream or some shit. Eight-point-two million dollars.”

“Jesus,” Robert whistles. “Fat commission.”

“You’re telling me. My oldest daughter turns sixteen this year. She’s getting a Mazda for Christmas.”

“You ever see that show, My Super Sweet Sixteen? On MTV? Where rich kids got, like, rappers to perform at their birthday parties? Every time at the end, some guy would pull up in, like, an Escalade with a big pink bow on it and all the kids would scream.”

“Sounds stupid,” Jay says.

“It was stupid.”

It’s Robert’s turn to check his watch, a dainty gold Rolex.

“Fuck, still thirty minutes.”

“Time really does stand still in here, doesn’t it?” Jay remarks.

“We should have left the office a little later,” Robert complains. “The charcuterie is going to get –“

A deafening sound roars through the house and a violent, explosive tremor throws both men on the ground, shakes the walls and everything between them. The power’s out for a few seconds before there’s a flicker, and light fills the room again. Two backup generators, reads Jay’s description in the listing - an appeal to the prepper demographic, which trends higher in income than non-preppers. For a moment, the only things either are conscious of are the harsh flourescent lighting and the ringing in their ears. Time slows, everything seems muted and too bright. Robert rubs the side of his face, pulls back his hand and sees blood.

“Christ,” he chokes out. “What the hell was that?”

“I don’t know,” Jay breathes, looking at his hands, trying to determine if he’s got a concussion. The results are inconclusive – everything’s slow and fuzzy, but after a moment, he thinks it might just be shock.

“It sounded like a fucking 747 just nosedived on top of us.” 

“Yeah, Jesus.” Jay’s still staring at his fingers in a daze. “You okay?”

“I think so,” Robert grumbles. Jay gives him a cursory examination.

“Nothing that needs stitches,” he reports bluntly. Robert’s relieved. His face sells a lot of houses to a lot of lonely women and a few lonely men. There’s a muffled whine, which the two men soon recognize as a throng of sirens. Both of them try to calm the panic rising in their chests, to no avail.

“Whatever the fuck happened,” Jay says, trying to make light of the situation, “At least we’re in here. The bunker.”

Fear forms in the whites of Robert’s eyes.

“What if we’re stuck in here,” he whispers, afraid to speak such a thing into the world. The fear spreads to his companion.

“Try the elevator,” Jay urges, and Robert gets up, wobbles a little as his head sorts itself out, and leaves. A moment later, Jay hears him swear a blue streak, and from the kitchen window, sees him standing before the closed metal doors, staring at his feet. His pulse racing, Renault jogs out to see for himself.

“It’s dead,” Robert murmurs. 

“Whatever happened,” Jay says cautiously, rubbing the back of his still-sore neck, “It must have been pretty bad. Like, I don’t think we should go up yet. Besides, surely the office knows we’re still down here.”

“Right, right,” the younger man breathes, trying to reassure himself.

“Let’s just wait it out. I’m sure everything’s fine.” The way Jay says it does not make Robert feel any better. 

“Okay,” the younger man grumbles. “I’m getting a fucking drink, though.”

“Yeah, Jesus. That’s the best idea you’ve had all day.” Renault shoves his hands in his suit pocket to keep them from trembling.  


If you like this post, and want to see more like it, consider supporting me on Patreon!

There is a whole new slate of Patreon rewards, including: good house of the month, an exclusive Discord server, weekly drawings, monthly livestreams, a reading group, free merch at certain tiers and more!

Not into recurring donations but still want to show support? Consider the tip jar! 

Or, Check out the McMansion Hell Store! Proceeds from the store help protect great buildings from the wrecking ball.