Q&A on 1972

In response to recent changes in the look and feel of the site...

Q: Did someone complain about the old design with the blue and white?

A: No. I did this in response to ridiculous bullshit going on in my country. We've rolled back to 1972 in terms of basic human decency, and I'm not happy about it. Obviously. So I've forced the design back to a terrible place as well.

Q: Why not go whole-hog and make it look like a real terminal with phosphor effects and run it at 75 baud?

A: This is not a fucking game. I am not celebrating 1972.

Q: Can you fix the colors so I can read things?

A: No. I want you to feel the pain here. It's small and stupid but it's where I am right now. I'm one person with a keyboard. What do you want me to do? Just pretend everything is okay? Everything is NOT OKAY.

Q: Is this all you're going to do?

A: Probably not. I see no reason to continue helping people who would treat others as a piece of meat, or worse.

Q: What does that mean?

A: I don't know yet. Wait and see.

Euro profile locks - a few tips

By [email protected] (RevK)

Test door, lock sticks out a bit!
Euro profile locks are a doddle to change - it is literally one screw, and you can slide out the old lock and slide in the new locks. They are easy to buy, or order on-line. But a few quick tips:

  • You need to order the right size (inside and outside). This is the distance from the centre of the lock to the key slot each side. Usually available in 5mm steps. You want it just right, not sticking out, though good locks have a snap off part if someone does take pliers to it.
  • You can order keyed alike locks so they all have the same key, which can be very handy. Somehow people don't realise this!
  • There are loads of different quality and prices of locks.
  • You can have key both sides, or one side with a thumb turn, or just keyed one side and blank the other side even (half lock).

So, when we moved in, the first thing I did on day 1 was order new locks. Five of them. The house had all been recently re-done and the locks in the house already were all brand new, so a bit of a shame. But I wanted higher quality locks and did not want five different sets of keys (don't people know you can get locks that have the same key?).

Cheaper lock

I ordered like for like, the same size, and keyed both sides as that was what was in the house.

Unfortunately, after a little while we realised the choice of locks was wrong. You do not want keyed both sides. The reason is that the doors were all multipoint locks, and only locked by turning the key. Without that someone can literally walk in from the street (which has happened!). But this means you can only use the door from the inside if you have a key to unlock it. This means if there was a fire in the night when the doors are (obviously) locked, you need a key to get out. Remember the house originally had 5 sets of keys so you need to find the right key for the door by which you are trying to escape from a fire.

The short term fix, a key on a hook by the door, but that is far from ideal. Obviously.

Thumb turn on inside
So I ordered another complete set of locks (getting expensive now) with thumb turn on the inside. This means you can always lock or unlock the door easily from the inside without a key. Importantly it is not hard to unlock if trying to escape a fire. I actually disposed of the first set of locks as no use to me any more.

As some of you know, I have a complete door access control system and alarm system, but changing locks means a locksmith and time and money, so even though we have been here over a year I had not yet changed the locks. I was also researching the right lock for the job. Being a house, I really don't want an "exit button" and an "emergency break glass" by every door. I also wanted a "fail secure" so a power cut when we are away (long enough for battery to drain) does not leave all the doors unlocked. But I also want it "safe" so always possible to get out in a fire even when nothing is working electrically.

So the locks are Abloy EL560. I have been testing on my office/study door, meaning we now have six locks. This is great, it is fail secure (i.e. power fail is locked). But it can always be opened from the inside with the handle, and with a key. It also has signals so you know if opened by handle or key. This is great.

RFID reader
They are being installed in the rest of the house shortly, with my AES DESFire based readers to open from outside - nice and secure, and all links in to the alarm system.

However, if it was to be opened from outside using a key, I would want the alarm to know this, and disarm. The idea is we can trust a key. That is fine, I simply configure the system to disarm when the key is used. The system is very flexible and easy to configure for various types of lock.

Except... I have thumb turns on the locks on the inside. I don't need these now as you can open the door with the inside handle. But if I set the system to trust a key it trusts the thumb turn as well. Someone breaking in only has to turn the thumb turn on any door to disarm the alarm. So yes, obviously, it is not being configured to do that (yet). Indeed, one approach would be you have to enter a PIN on the keypad if not using a DESFire fob, even if you did use a key. Given how easily keys, even high security keys, can be copied or 3D printed, this may be sensible anyway.

The real answer is order locks keyed both sides, or even no key at all on the inside now.

I had a full set of locks just like that from when we first moved in. I have disposed of them. Arg! So another set of locks, six this time.

The moral is never throw anything away, ever!... I should know this already.

Weekly Update 301

By Troy Hunt

Presently sponsored by: Varonis for Salesforce. Protect Salesforce data from overexposure and cyberthreats. Try it free!

First up, I'm really sorry about the audio quality on this one. It's the exact same setup I used last week (and carefully tested first) but it's obviously just super sensitive to the wind. If you look at the trees in the background you

1972.

Amber on black. You want 1972, you get 1972.

Roman Numerals

100he100k out th1s 1nno5at4e str1ng en100o501ng 15e been 500e5e50op1ng! 1t's 6rtua100y perfe100t! ...hang on, what's a "virtuacy"?

Keycloak 18.0.2 released

To download the release go to Keycloak downloads.

Migration from 17.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

Bugs

Upgrading

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

What If? 2 Countdown

If you don't end the 99 Bottles of Beer recursion at N=0 it just becomes The Other Song That Never Ends.

More on geo-tagging photos with a time element

Some readers have written in with questions about my photo geotagging post from last week. One common question is whether the place name has ended up in the file's metadata somehow. The answer is: I don't think so. I did an "export as original" on the photo in question and ran it through a bunch of exif dumper tools and didn't find anything that suggested a name like that.

The EXIF data looks like this:

Create Date         : 2014:06:16 13:02:15.202
Date/Time Original  : 2014:06:16 13:02:15.202
GPS Altitude        : 5.2 m Above Sea Level
GPS Latitude        : 37 deg 29' 6.13" N
GPS Longitude       : 122 deg 8' 53.30" W
Circle Of Confusion : 0.004 mm
Field Of View       : 57.2 deg
Focal Length        : 4.1 mm (35 mm equivalent: 33.0 mm)
GPS Position        : 37 deg 29' 6.13" N, 122 deg 8' 53.30" W
Hyperfocal Distance : 1.89 m
Light Value         : 15.4
Lens ID             : iPhone 5 back camera 4.12mm f/2.4

(Side note: that's an interesting term, huh? Today I learned.)

Anyway, it's just a bunch of numbers, as you would expect. Something in the actual Photos app on the Mac and the equivalent thing on my phone is translating it to a name.

What's kind of nutty is that the same picture still shows "Facebook - Headquarters" when viewed on my phone. Really. Check it out:

iOS 15.something or other view

So, not only is there some mapping going on, but the phone and the computers (both of them) are looking at two different sources of data. I have to assume the phone has it cached, while the Macs must have flushed it and picked up the new value in recent times.

Or, who knows, maybe Apple is running multiple backends with disjoint geographical data sources. It wouldn't be the first time they had terrible map data, right?

So here's another fun problem: how do you do a "fourth dimensional" geo-tag (that is, adding a time system) without revealing all of the places a person's been and when they were there? In other words, how do you do that without compromising privacy?

The best I can figure so far is that you'd send back a list of ALL of the place names for a given area and let the device figure out which times apply to which photos, and just discard the rest. Also, it should probably be "zoomed out" pretty far, such that only very coarse bounds are given to the server. Just return all of the mappings for all of the polygons or whatever inside some giant swath of space, and do all of the nitty gritty stuff on their device.

Otherwise, hey, it becomes pretty easy to track people after the fact.

Place name mappings probably need a time dimension too

I used to work at Facebook. That was both the name of the service with all of the cat pictures and the name of the company that paid me every two weeks. The cat picture part still has the same name, but the parent company does not. It's called Meta now. I left well before any of that renaming happened.

As a result, I have plenty of pictures that predate that change on my Macs and other Apple devices. They're mostly geotagged, but something curious has happened to them: the name of the place has shifted. It's no longer "Facebook HQ". It's now "Meta - Headquarters". This is what it looks like in the Apple photos app:

Building map on the ground at FB, 2014

Given that this picture was taken in 2014, it was clearly not Meta back then. I know, the usual "well actually" people are warming up their keyboards right about now: "it used to be called that, and it's the same company, so it's fine" and so on and so forth. I don't like that, but okay, whatever, let's say we accept that for the moment because it IS the same company with a different name. Companies do that all the time.

What if that picture of the ground had been taken in that same spot in 2004? Would it still make sense to call it "Meta - Headquarters"? I hope you wouldn't say that. Back then, that space was inhabited by Sun Microsystems, a company that very much is not the same as Facebook. (This is well before Oracle ate them - that was 2009-2010.)

What happens in another couple of years when Meta is the next smoking crater in the tech landscape and then some other company tries to become the next unicorn in the mud flats of Menlo Park? Or how about a couple of decades past then when that whole area is underwater? Will my pictures say something like "San Francisco Bay"?

This why I would say that perhaps we need some time bounding on these hyperlocal place names. Now, I realize this is no small thing. It's one of those big-O blowup factors, and that's annoying for all involved. Still, if you take the very long view on these things, something is going to have to happen eventually. Otherwise, our grandkids will have pictures that we took that make no sense at all.

There should also be some actual humanity applied here. Place names are non-trivial, and many of them have captured a large amount of hateful and just plain ignorant behavior. That's why you can't just automatically build up a list of "this place was called this at this time". It needs people in the loop to make thoughtful decisions about how to handle the more interesting ones.

Case in point: Palisades Tahoe. I also have pictures that I took there many years ago. I am more than fine with them being rendered with its current name. I know it wasn't called that when I was there. Give it an asterisk if you must, but really, even that probably isn't needed.

That's what I mean when I say that we should be careful about this.


June 20, 2022: This post has an update.

Wholesale rate update (2022-06-22) – with NO dirty surcharges

By Simwood

We will be updating our Managed A-Z Termination rates and codes on June 22nd 2022. As usual, these changes are colour coded in our full rate files available through the portal as below. Whilst this update mostly comprises reductions (especially in EUR and USD denominated rates), there are some increases to a couple of UK […]

Emergency Call Charges

By Simwood

By Simon Woodhead Please note our next rate update will unavoidably feature a 16% increase in the costs to call 999. Please note we don’t levy any monthly minimum’s for calls to 999, they are billed alongside normal call traffic for enabled customers. This is the consequence of a 20% increase in the charges from […]

Superintelligent AIs

Your scientists were so preoccupied with whether or not they should, they didn't stop to think if they could.

IPv8?

By [email protected] (RevK)

I should write up my concept for IP. This is literally stuff I dream of!

This is totally "if I had a time machine and could fix IP at the start" and very much not a "this is what we should move to". The time taken to get IPv6 deployed (over 50% in US now) shows this would never fly.

So my ideas is this...

IP addresses would have multiple levels, tagged at the binary level in some way to allow each level to be different number of bytes, and allow for multiple levels - perhaps top two bits say length of each level. The exact detail on this is not that important other than the fact it is "variable" in some way and a fixed pattern for any IP address to allow hardware to cope. The displayed format is not that important either, but probably a series of decimal numbers with a separator.

The top level of any target IP would be AS number. This is still routing packet by packet, not session routing. So an ISP level core router needs a simple top level binary decisions, is target outside our AS (so send to target AS) or within (so send to next level at byte X in packet). Yes, a router could have more than one role as more than one AS maybe, but in general it is simple. This is the sort of thing that can work at a hardware level in ASICs without too much issue. A CAM at top level for sending to AS and a CAM for "within my network (AS)" level.

Routers below this level are similar - "is it my network" do routing to "next level", or I send "upstream".

The concept is that the IP would actually go in levels from AS, to areas within an AS (if needed), to customers, to devices on customer networks, and even include "port" within the device. No need for NAT ever. Ultimately extensible at ISP or customer or network level and even within device to allow more ports (which can be an issue). Some limit on levels, and bits at each level, but more than enough.

Yes, TCP and UDP would change to not have a port where it is now, but part of the IP addressing.

As for allocation and RIRs, the allocation would be AS, and anyone with an AS controls as many IPs within that as they need.

More ports

Also, the session connection to a device would be a protocol in itself, for things like TCP (maybe even UDP and others), where the connection is to the device IP address (not a port level) but the payload includes a text port name. So https would be to port "https" not port 443. The reply would confirm the actual target IP (which includes port ID) to use for that connection. This allows target port to be unique without mapping the source IP/port and target IP/port normally needed to identify TCP socket within a device, even as a server. So simpler code (yes, check the IP/ports are right when you match it).

I also think that, unlike IPv6 which has a separate standard header for encryption (which therefore does not actually work for TLS we have now) I think TLS would be an option in the that SYN, along with port name. So port "http" can request TLS or not as a standard start of that session, with things like "use previous authentication session" as an option at the SYN level for faster connections. Ideally the application calls for TCP would make it very simple for any stream to be TLS or not with minimal coding overhead.

Multihoming at TCP level

Also, you need protocols like TCP to be multi-homed at the TCP level. Mobile phones can already do this to some extent. Connect to a name, not an IP, and it has multiple IPs, but allow the IPs to change during the session if needed, either end, as part of the connection protocol. This avoids the need for multihoming at the BGP level, and IPs can start with AS at a top level regardless.

No, not "IP is the route" - still routing path redundancy

Just to be clear, this is not saying the IP is the route to the end point, either. The route taken would be determined by routing protocols like BGP, and still have the alternative paths and redundancy that exists now to get to an AS, and within an AS. The only really difference is that core routing policy would almost certainly not allow announcements below the AS level, and hence keeping routing tables smaller. At present IPv4 does not work (by policy) smaller than a /24, for the same reasons. This just makes a really simple and obvious policy as the inter-AS level. It also means each AS only needs to originate one prefix (their AS) where as now they originate loads of separate blocks. That one prefix is extensible as much as they like. Indeed, the role of RIRs for IP management would pretty much vanish as having an AS would entitle you to allocate IPs under that AS, and originate routing for those IPs from that AS.

Comments and discussion welcome - but remember this is essentially just a thought exercise.

Alternatives rejected

This idea is still per packet - a totally different approach involves a connection based system. Establish a route over the internet as you connect and each point reports the connection id, and at the start you send to the local connection ID which is mapped to next hop connection ID. It could work but is a massive amount of "state" in the core, and I don't think a viable approach. Sorry.

Weekly Update 300

By Troy Hunt

Presently sponsored by: Varonis for Salesforce. Protect Salesforce data from overexposure and cyberthreats. Try it free!

Well, we're about 2,000km down on this trip and are finally in Melbourne, which was kinda the point of the drive in the first place (things just escalated after that). The whole journey is going into a long tweet thread you can find below (or mute -

Red Line Through HTTPS

Some organization has been paying to keep this up and it hasn't been removed from search results. Seems like two votes of confidence to me.

The need for world government

Comments

We Halved Go Monorepo CI Build Time

Comments

GitHub: Thank You to Our Maintainers

Comments

On the Closing of 42 Silicon Valley from 42 co-founder Kwame Yamgnane

Comments

Pgo: The Postgres operator from crunchy data

Comments

The “Just Worrying” Labelling Technique [pdf]

Comments

Gov’t Contractor Copies Open Source 3D Printing Concept and Patents It

Comments

3D Diagrams of London Underground Stations

Comments

Cycling: Why Tunnels are Better than Bridges (2014)

Comments

Why I still recommend Julia

Comments

Enclave: An Unpickable Lock

Comments

Switzerland’s underground freight project gets start date

Comments

Don't let dicts spoil your code (2020)

Comments

VirtualBuddy: Virtualize macOS 12 and later on Apple Silicon

Comments

Mummified baby woolly mammoth found in the Yukon

Comments

Ukraine war: Keep up unity amid war fatigue, says PM

Boris Johnson says the higher food and energy costs from the conflict are the price of freedom.

At least 20 found dead in South Africa nightclub

The cause of the deaths remains unclear, and police say an investigation is ongoing.

Patrick Grady to step away from SNP membership over allegations

The Glasgow North MP is reportedly under police investigation over allegations of sexual harassment.

Homophobia large portion of online abuse aimed at footballers and basketballers - study

Homophobia is responsible for a large portion of abuse aimed at footballers and basketballers in the men's and women's game, according to a new report.

England v New Zealand: Ben Foakes out of third Test after testing positive for Covid-19

England wicketkeeper Ben Foakes is ruled out of the remainder of the third Test against New Zealand after testing positive for Covid-19.

How a family of 14 is coping with rising costs

Mother of 12, Zoe Sullivan, explains how she cuts costs as her family's energy and fuel bills double.

Ukraine war: UK joins ban on imports of Russian gold

The move by the UK, US, Canada and Japan will "strike at the heart of Putin's war machine", the UK PM says.

Euro 2022: Iceland's Sara Bjork Gunnarsdottir on being a mother and professional footballer

With football-playing mothers figuring in this summer's Euros like never before, two of Iceland's best tell BBC Sport about their journey to the tournament.

Prince Charles 'accepted a suitcase with 1m euros', report claims

Clarence House says the correct processes were followed with the Qatari sheikh's charitable donations.

Cycling: TfL to begin issuing fines to drivers in cycle lanes

New powers will allow TfL to enforce infringements in a similar way to bus lanes.

Emma Raducanu at Wimbledon: There will be 'huge expectation' but 'let's give her time'

How will Emma Raducanu handle her first Wimbledon as a Grand Slam champion - and might we all be expecting too much?

The Papers: 'Crackdown on unions' and PM plans for third term

The papers lead with strike action warnings and Tory MPs slam Boris Johnson's "delusional" behaviour.

Boris Johnson 'actively thinking about' third term as PM

The PM says he will lead his party into the next election and beyond, despite criticism of his leadership.

In pictures: Glastonbury 2022

Thousands of people are attending the event which has returned for the first time in three years.

Drivers who kill could receive life sentences under law reform

Judges will be able to give life sentences to dangerous drivers who kill, in a toughening of the law.

UK man, weeding and gardening whilst listening to Rage Against The Machine. So middle aged!

By /u/YorkshireDad1

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

Match Thread: 3rd Test - New Zealand vs England, Day 4

By /u/CricketMatchBot

3rd Test, New Zealand tour of England at Leeds

Cricinfo | Reddit-Stream | ☁️ ☁️ ☁️ 🌥 🌥

Innings Score
New Zealand 329 (Ov 117.3)
England 360 (Ov 67)
New Zealand 199/5 (Ov 65)

Batter Runs Balls SR
Daryl Mitchell* 16 65 24.62
Tom Blundell 24 44 54.55
Bowler Overs Runs Wickets
Jamie Overton 11 44 1
Jack Leach 15 31 1
Recent : . . | 4 . . . . . | . 4 . . . . | 4 . 1 . . 1 | 

Day 4 - Session 1: New Zealand lead by 168 runs.


Live match threads: Bulgaria vs Serbia |

Send feedback | Schedule | Stat Help

Please don't post illegal streaming links in match threads

submitted by /u/CricketMatchBot to r/Cricket
[link] [comments]

What bizarre Mis information about the geography of the U.K. have you heard?

By /u/gg663

Not just from people from other countries, but from us too!

Just seen someone coming on Reddit insist Wales was part of England. A lot of people get quite confused with Ireland too.

Could go even further and mention people have often stated former British empire territories are ‘part of Britain’

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

Another shameless repost. This time from u/NonRock from r/comics.

By /u/laurencehartnell

Another shameless repost. This time from u/NonRock from r/comics. submitted by /u/laurencehartnell to r/GreenAndPleasant
[link] [comments]

How many times do you shower each day?

By /u/No-Imagination-OG

Inspired by a post on r/asksingapore, where many of the commenters say they are showing two or more times daily. How often do you shower each day?

submitted by /u/No-Imagination-OG to r/AskUK
[link] [comments]

[talkSPORT sources] 𝗕𝗥𝗘𝗔𝗞𝗜𝗡𝗚: Manchester United are aiming to complete the signing of Barcelona midfielder Frenkie de Jong by June 30. United are close to agreeing a fee in the region of £68m for the Dutch international. - talkSPORT sources understand

By /u/nearly_headless_nic

[talkSPORT sources] 𝗕𝗥𝗘𝗔𝗞𝗜𝗡𝗚: Manchester United are aiming to complete the signing of Barcelona midfielder Frenkie de Jong by June 30. United are close to agreeing a fee in the region of £68m for the Dutch international. - talkSPORT sources understand submitted by /u/nearly_headless_nic to r/reddevils
[link] [comments]

Why is the pirate theme so glamourised?

By /u/avartee

I get more and more into kids' stuff and I can't help but wonder about the subject. Pirates are portrayed as funny, innocent, kind creatures that kids sympathise with. As a kid I read Treasure Island, then played computer games related to this theme but I was always aware of who the pirates truly were.

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

Greyhound racing is morally unjustifiable – it should be banned

By /u/infiniteloadinscreen

Greyhound racing is morally unjustifiable – it should be banned submitted by /u/infiniteloadinscreen to r/unitedkingdom
[link] [comments]

Does anyone else think that Glastonbury has lost the alternative edge that made it special and is now just... lame?

By /u/redryn

Glastonbury was once full of crazy stuff and you could go there and see old punks, crazy druids, and all kinds of weird and wonderful people and things.

The music mostly had an alternative edge and there was a massive variety.

Now Glastonbury has become middle class, family friendly and a middle of the road borefest.

People take their kids to see Paul McCartney there which says it all. The acts have never been blander.

It's been invaded by braying Henrys and Henriettas, all dressed almost identically in their festival uniform.

Not sure whether I'm just old or if the Glastonbury Festival died with John Peel.

Edit:

No, I'm not there.

Yes, i have been there many times in the past, mostly during 90s and 00s.

Didn't know about John Peel but wasn't putting him on a pedestal, just giving a rough timeline on when Glastonbury death spiral started.

Glastonbury death spiral is a good name for a band.

Sorry to the Henrys who aren't Henrys.

If you like "Glasto" then knock yourself out and have fun!

Paul McCartney after The Beatles is lame, not going to change my mind on that.

Edit Edit:

Some of you need to chill out, isn't Glastonbury meant to be about peace and love? If you're there then go and chill, don't need to rant at me for my opinion.

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

Returning to an old project...

By /u/LargeDisplay1080

Returning to an old project... submitted by /u/LargeDisplay1080 to r/ProgrammerHumor
[link] [comments]

Mick(78) is just phenomenal for his age.Milan july 2022.

By /u/maRRtin79

Mick(78) is just phenomenal for his age.Milan july 2022. submitted by /u/maRRtin79 to r/nextfuckinglevel
[link] [comments]

Nico Hülkenberg is now a married man (via instagram/otmarf1)

By /u/poyetree1

Nico Hülkenberg is now a married man (via instagram/otmarf1) submitted by /u/poyetree1 to r/formula1
[link] [comments]

Great-circle distance anyone?

By /u/Revealed_Jailor

Great-circle distance anyone? submitted by /u/Revealed_Jailor to r/facepalm
[link] [comments]

Technically a two wheel bicycle made from 1 + 0.5 + 0.5 wheels

By /u/Rhedogian

Technically a two wheel bicycle made from 1 + 0.5 + 0.5 wheels submitted by /u/Rhedogian to r/interestingasfuck
[link] [comments]

Looking for restaurant to wear a suit to, which won't bankrupt a student

By /u/sukornorubix

Hello. I have recently come into ownership of quite a nice suit. I am very much a fan of this suit (Primark's finest). My long distance girlfriend is coming to visit tomorrow, and she is also quite a big fan of the suit.

Would anyone have some suggestions for a restaurant I can take her to, at which my suit can be worn within convention of said restaurant, without the prices in the restaurant taking me into my student overdraft? Many thanks :)

submitted by /u/sukornorubix to r/london
[link] [comments]

First impressions of DALL-E, generating images from text

I made it off the DALL-E waiting list a few days ago and I've been having an enormous amount of fun experimenting with it. Here are some notes on what I've learned so far (and a bunch of example images too).

(For those not familiar with it, DALL-E is OpenAI's advanced text-to-image generator: you feed it a prompt, it generates images. It's extraordinarily good at it.)

First, a warning: DALL-E only allows you to generate up to 50 images a day. I found this out only when I tried to generate image number 51. So there's a budget to watch out for.

I've usually run out by lunch time!

How to use DALL-E

DALL-E is even simpler to use than GPT-3: you get a text box to type in, and that's it. There are no advanced settings to tweak.

A label says "Start with a detailed description" - there is also a "Surprise me" button. The text box has the grayed out suggestion text "An impressionist oil painting of sunflowers in a puple vase." There is also a Generate button, and the text "Or upload an image to edit"

It does have one other mode: you can upload your own photo, crop it to a square and then erase portions of it and ask DALL-E to fill them in with a prompt. This feature is clearly still in the early stages - I've not had great results with it yet.

DALL-E always returns six resulting images, which I believe it has selected as the "best" from hundreds of potential results.

Tips on prompts

DALL-E's initial label suggests to "Start with a detailed description". This is very good advice!

The more detail you provide, the more interesting DALL-E gets.

If you type "Pelican", you'll get an image that is indistinguishable from what you might get from something like Google Image search. But the more details you ask for, the more interesting and fun the result.

Fun with pelicans

Here's "A ceramic pelican in a Mexican folk art style with a big cactus growing out of it":

A ceramic pelican in a Mexican folk art style with a big cactus growing out of it - the image looks exactly like that, it's very impressive

Some of the most fun results you can have come from providing hints as to a medium or art style you would like. Here's "A heavy metal album cover where the band members are all pelicans... made of lightning":

A heavy metal album cover where the band members are all pelicans... made of lightning - except none of the pelicans are made of lightning. The text at the top reads PLENY HLAN

This illustrates a few interesting points. Firstly, DALL-E is hilariously bad at any images involving text. It can make things that look like letters and words but it has no concept of actual writing.

My initial prompt was for "A death metal album cover..." - but DALL-E refused to generate that. It has a filter to prevent people from generating images that go outside its content policy, and the word "death" triggered it.

(I'm confident that the filter can be easily avoided, but I don't want to have my access revoked so I haven't spent any time pushing its limits.)

It's also not a great result - those pelicans are not made of lightning! I tried a tweaked prompt:

"A heavy metal album cover where the band members are all pelicans that are made of lightning":

A heavy metal album cover where the band members are all pelicans that are made of lightning - six images, all very heavy metal but none of them where the birds are made of lightning, though two have lightning in the background now

Still not made of lightning. One more try:

"pelican made of lightning":

Six images of pelicans - they are all made of lightning this time, but they don't look great.

Let's try the universal DALL-E cheat code, adding "digital art" to the prompt.

"a pelican made of lightning, digital art"

Six images of pelicans - they are all made of lightning this time, and they look pretty cool

OK, those look a lot better!

One last try - the earlier prompt but with "digital art" added.

"A heavy metal album cover where the band members are all pelicans that are made of lightning, digital art":

These are really cool images of pelicans with lightning - though again, they aren't really made of lightning. Also there's no album text any more.

OK, these are cool. The text is gone - maybe the "digital art" influence over-rode the "album cover" a tiny bit there.

This process is a good example of "prompt engineering" - feeding in altered prompts to try to iterate towards a better result. This is a very deep topic, and I'm confident I've only just scratched the surface of it.

Breaking away from album art, here's "A squadron of pelicans having a tea party in a forest with a raccoon, digital art". Often when you specify "digital art" it picks some other additional medium:

A beautiful painting. A racoon sits in the foreground at a little table in the forest. He is surrounded by pelicans, one of which is pouring a drink from a half-bucket-half-teapot.

Recreating things you see

A fun game I started to play with DALL-E was to see if I could get it to recreate things I saw in real life.

My dog, Cleo, was woofing at me for breakfast. I took this photo of her:

A medium sized black pitbull mix sitting on a hardwood floor

Then I tried this prompt: "A medium sized black dog who is a pit bull mix sitting on the ground wagging her tail and woofing at me on a hardwood floor"

A medium sized black pitbull mix sitting on a hardwood floor

OK, wow.

Later, I caught her napping on the bed:

A medium sized black pitbull mix curled up asleep on a green duvet

Here's DALL-E for "A medium sized black pit bull mix curled up asleep on a dark green duvet cover":

A medium sized black pit bull mix curled up asleep on a dark green duvet cover - a very good image

One more go at that. Our chicken Cardi snuck into the house and snuggled up on the sofa. Before I evicted her back into the garden I took this photo:

a black and white speckled chicken with a red comb snuggled on a blue sofa next to a cushion with a blue seal pattern and a blue and white knitted blanket

"a black and white speckled chicken with a red comb snuggled on a blue sofa next to a cushion with a blue seal pattern and a blue and white knitted blanket":

Six images that fit the brief, though the cushions don't have the pattern and the camera zoomed in much closer on the chicken than in the original

Clearly I didn't provide a detailed enough prompt here! I would need to iterate on this one a lot.

Stained glass

DALL-E is great at stained glass windows.

"Pelican in a waistcoat as a stained glass window":

A really cool stained glass window design of a pelican, though it is not wearing a waistcoat

"A stained glass window depicting 5 different nudibranchs"

5 different nudibranchs in stained glass - really good

People

DALL-E is (understandably) quite careful about depictions of people. It won't let you upload images with recognisable faces in them, and when you ask for a prompt with a famous person it will sometimes pull off tricks like showing them from behind.

Here's "The pope on a bicycle leading a bicycle race through Paris":

A photo of the pope on a bicycle, taken from behind, with a blurred out Paris street in the background

Though maybe it was the "leading a bicycle race" part that inspired it to draw the image from this direction? I'm not sure.

It will sometimes generate made-up people with visible faces, but they ask users not to share those images.

Assorted images

Here are a bunch of images that I liked, with their prompts.

Inspired by one of our chickens:

"A blue-grey fluffy chicken puffed up and looking angry perched under a lemon tree"

A blue-grey fluffy chicken puffed up and looking angry perched under a lemon tree

I asked it for the same thing, painted by Salvador Dali:

"A blue-grey fluffy chicken puffed up and looking angry perched under a lemon tree, painted by Salvador Dali":

Three paintings of a blue-grey fluffy chicken puffed up and looking angry perched under a lemon tree, in the style of Salvador Dali

"Bats having a quinceañera, digital art":

Three bats with pink ears, one is wearing a pink dress

"The scene in an Agatha Christie mystery where the e detective reveals who did it, but everyone is a raccoon. Digital art.":

This one is in more of a cartoon style. The raccoon stands in front, and four people in period clothes stand in the background, one of them with a magnifying glass.

(It didn't make everyone a raccoon. It also refused my initial prompt where I asked for an Agatha Christie murder mystery, presumably because of the word "murder".)

"An acoustic guitar decorated with capybaras in Mexican folk art style, sigma 85mm":

A close-up shot of an acoustic guitar with some capybaras painted on it.

Adding "sigma 85mm" (and various other mm lengths) is a trick I picked up which gives you realistic images that tend to be cropped well.

"A raccoon wearing glasses and reading a poem at a poetry evening, sigma 35mm":

A very convincing photograph of a racoon wearing glasses reading from a book, with a blurry background

"Pencil sketch of a Squirrel reading a book":

A just gorgeous pencil sketch of a squirrel reading a book

Pencil sketches come out fantastically well.

"The royal pavilion in brighton covered in snow"

The royal pavilion in brighton covered in snow - the windows look a bit weird

I experienced this once, many years ago when I lived in Brighton - but forgot to take a photo of it. It looked exactly like this.

And a game: fantasy breakfast tacos

It's difficult to overstate how much fun playing with this stuff is. Here's a game I came up with: fantasy breakfast tacos. See how tasty a taco you can invent!

Mine was "breakfast tacos with lobster, steak, salmon, sausages and three different sauces":

A really delicious assortment of tacos

Natalie is a vegetarian, which I think puts her at a disadvantage in this game. "breakfast taco containing cauliflower, cheesecake, tomatoes, eggs, flowers":

A really delicious assortment of tacos

Closing thoughts

As you can see, I have been enjoying playing with this a LOT. I could easily share twice as much - the above are just the highlights from my experiments so far.

The obvious question raised by this is how it will affect people who generate art and design for a living. I don't have anything useful to say about that, other than recommending that they make themselves familiar with the capabilities of these kinds of tools - which have taken an astonishing leap forward in the past few years.

My current mental model of DALL-E is that it's a fascinating tool for enhancing my imagination. Being able to imagine something and see it visualized a few seconds later is an extraordinary new ability.

I haven't yet figured out how to apply this to real world problems that I face - my attempts at getting DALL-E to generate website wireframes or explanatory illustrations have been unusable so far - but I'll keep on experimenting with it. Especially since feeding it prompts is just so much fun.

How Imagen Actually Works

How Imagen Actually Works

Imagen is Google's new text-to-image model, similar to (but possibly even more effective than) DALL-E. This article is the clearest explanation I've seen of how Imagen works: it uses Google's existing T5 text encoder to convert the input sentence into an encoding that captures the semantic meaning of the sentence (including things like items being described as being on top of other items), then uses a trained diffusion model to generate a 64x64 image. That image is passed through two super-res models to increase the resolution to the final 1024x1024 output.

Joining CSV files in your browser using Datasette Lite

I added a new feature to Datasette Lite - my version of Datasette that runs entirely in your browser using WebAssembly (previously): you can now use it to load one or more CSV files by URL, and then run SQL queries against them - including joins across data from multiple files.

Your CSV file needs to be hosted somewhere with access-control-allow-origin: * CORS headers. Any CSV file hosted on GitHub provides these, if you use the link you get by clicking on the "Raw" version.

Loading CSV data from a URL

Here's the URL to a CSV file of college fight songs collected by FiveThirtyEight in their data repo as part of the reporting for this story a few years ago:

https://raw.githubusercontent.com/fivethirtyeight/data/master/fight-songs/fight-songs.csv

You can pass this to Datasette Lite in two ways:

Once Datasette has loaded, a data database will be available with a single table called fight-songs.

As you navigate around in Datasette the URL bar will update to reflect current state - which means you can deep-link to table views with applied filters and facets:

https://lite.datasette.io/?csv=https://raw.githubusercontent.com/fivethirtyeight/data/master/fight-songs/fight-songs.csv#/data/fight-songs?_facet=conference&_facet=student_writer&_facet=official_song

Or even link to the result of a custom SQL query:

https://lite.datasette.io/?csv=https://raw.githubusercontent.com/fivethirtyeight/data/master/fight-songs/fight-songs.csv#/data?sql=select+school%2C+conference%2C+song_name%2C+writers%2C+year%2C+student_writer+spotify_id+from+%5Bfight-songs%5D+order+by+rowid+limit+101

Loading multiple files and joining data

You can pass the ?csv= parameter more than once to load data from multiple CSV files into the same virtual data database. Each CSV file will result in a separate table.

For this demo I'll use two CSV files.

The first is us-counties-recent.csv from the NY Times covid-19-data repository, which lists the most recent numbers for Covid cases for every US county.

The second is us_census_county_populations_2019.csv, a CSV file listing the population of each county according to the 2019 US Census which I extracted from this page on the US Census website.

Both of those tables include a column called fips, representing the FIPS county code for each county. These 4-5 digit codes are ideal for joining the two tables.

Here's a SQL query which joins the two tables, filters for the data for the most recent date represented (using where date = (select max(date) from [us-counties-recent])) and calculates cases_per_million using the cases and the population:

select
  [us-counties-recent].*,
  us_census_county_populations_2019.population,
  1.0 * [us-counties-recent].cases / us_census_county_populations_2019.population * 1000000 as cases_per_million
from
  [us-counties-recent]
  join us_census_county_populations_2019 on us_census_county_populations_2019.fips = [us-counties-recent].fips
where
  date = (select max(date) from [us-counties-recent])
order by
  cases_per_million desc

A screenshot of that query running in Datasette. Loving county Texas has the worst result - 1,289,940 cases per million - but that's because they have a population of just 169 people and 218 recorded cases.

And since everything in Datasette Lite can be bookmarked, here's the super long URL (clickable version here) that executes that query against those two CSV files:

https://lite.datasette.io/?csv=https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties-recent.csv&csv=https://raw.githubusercontent.com/simonw/covid-19-datasette/main/us_census_county_populations_2019.csv#/data?sql=select%0A++%5Bus-counties-recent%5D.*%2C%0A++us_census_county_populations_2019.population%2C%0A++1.0+*+%5Bus-counties-recent%5D.cases+%2F+us_census_county_populations_2019.population+*+1000000+as+cases_per_million%0Afrom%0A++%5Bus-counties-recent%5D%0A++join+us_census_county_populations_2019+on+us_census_county_populations_2019.fips+%3D+%5Bus-counties-recent%5D.fips%0Awhere%0A++date+%3D+%28select+max%28date%29+from+%5Bus-counties-recent%5D%29%0Aorder+by%0A++cases_per_million+desc

The State of WebAssembly 2022

The State of WebAssembly 2022

Colin Eberhardt talks through the results of the State of WebAssembly 2022 survey. Rust continues to dominate as the most popular language for working to WebAssembly, but Python has a notable increase of interest.

WarcDB

WarcDB

Florents Tselai built this tool for loading web crawl data stored in WARC (Web ARChive) format into a SQLite database for smaller-scale analysis with SQL, on top of my sqlite-utils Python library.

Via Hacker News

Weeknotes: datasette-socrata, and the last 10%...

... takes 90% of the work. I continue to work towards a preview of the new Datasette Cloud, and keep finding new "just one more things" to delay inviting in users.

Aside from continuing to work on that, my big project in the last week was a blog entry: Twenty years of my blog, in which I celebrated twenty years since starting this site by pulling together a selection of highlights from over the years.

I've actually updated that entry a few times over the past few days as I remembered new highlights I forgot to include - the Twitter thread that accompanies the entry has those updates, starting here.

datasette-socrata

I've been thinking a lot about the Datasette Cloud onboarding experience: how can I help new users understand what Datasette can be used for as quickly as possible?

I want to get them to a point where they are interacting with a freshly created table of data. I can provide some examples, but I've always thought that one of the biggest opportunities for Datasette lies in working with the kind of data released by governments through their Open Data portals. This is especially true for its usage in the field of data journalism.

Many open data portals - including the one for San Francisco - are powered by a piece of software called Socrata. And it offers a pretty comprehensive API.

datasette-socrata is a new Datasette plugin which can import data from Socrata instances. Give it the URL to a Socrata dataset (like this one, my perennial favourite, listing all 195,000+ trees managed by the city of San Francisco) and it will import that data and its associated metadata into a brand new table.

It's pretty neat! It even shows you a progress bar, since some of these datasets can get pretty large:

Animated demo of a progress bar, starting at 137,000/179,605 and continuing until the entire set has been imported

As part of building this I ran into the interesting question of what a plugin like this should do if the system it is running on runs out of disk space?

I'm still working through that, but I'm experimenting with a new type of Datasette plugin for it: datasette-low-disk-space-hook, which introduces a new plugin hook (low_disk_space(datasette)) which other plugins can use to report a situation where disk space is running out.

I wrote a TIL about that here: Registering new Datasette plugin hooks by defining them in other plugins.

I may use this same trick for a future upgrade to datasette-graphql, to allow additional plugins to register custom GraphQL mutations.

sqlite-utils 3.27

In working on datasette-socrata I was inspired to push out a new release of sqlite-utils. Here are the annotated release notes:

  • Documentation now uses the Furo Sphinx theme. (#435)

I wrote about this a few weeks ago - the new documentation theme is now live for the stable documentation.

  • Code examples in documentation now have a "copy to clipboard" button. (#436)

I made this change to Datasette first - the sphinx-copybutton plugin adds a neat "copy" button next to every code example.

I also like how this encourages ensuring that every example will work if people directly copy and paste it.

Francesco Frassinelli filed an issue about this utility function, which wasn't actually part of the documented stable API, but I saw no reason not to promote it.

The function incorporates the logic that the sqlite-utils CLI tool uses to automatically detect if a provided file is CSV, TSV or JSON and detect the CSV delimeter and other settings.

  • rows_from_file() has two new parameters to help handle CSV files with rows that contain more values than are listed in that CSV file's headings: ignore_extras=True and extras_key="name-of-key". (#440)

It turns out csv.DictReader in the Python standard library has a mechanism for handling CSV rows that contain too many commas.

In working on this I found a bug in mypy which I reported here, but it turned out to be a dupe of an already fixed issue.

This is a workaround for the following Python error:

_csv.Error: field larger than field limit (131072)

It's an error that occurs when a field in a CSV file is longer than a default length.

Saying "yeah, I want to be able to handle the maximum length possible" is surprisingly hard - Python doesn't let you set a maximum, and can throw errors depending on the platform if you set a number too high. Here's the idiom that works, which is encapsulated by the new utility function:

field_size_limit = sys.maxsize

while True:
    try:
        csv_std.field_size_limit(field_size_limit)
        break
    except OverflowError:
        field_size_limit = int(field_size_limit / 10)
  • table.search(where=, where_args=) parameters for adding additional WHERE clauses to a search query. The where= parameter is available on table.search_sql(...) as well. See Searching with table.search(). (#441)

This was a feature suggestion from Tim Head.

  • Fixed bug where table.detect_fts() and other search-related functions could fail if two FTS-enabled tables had names that were prefixes of each other. (#434)

This was quite a gnarly bug. sqlite-utils attempts to detect if a table has an associated full-text search table by looking through the schema for another table that has a definition like this one:

CREATE VIRTUAL TABLE "searchable_fts"
USING FTS4 (
    text1,
    text2,
    [name with . and spaces],
    content="searchable"
)

I was checking for content="searchable" using a LIKE query:

SELECT name FROM sqlite_master
WHERE rootpage = 0
AND
sql LIKE '%VIRTUAL TABLE%USING FTS%content=%searchable%'

But this would incorrectly match strings such as content="searchable2" as well!

Releases this week

TIL this week

Quoting Addy Osmani

Becoming a good engineer is about collecting experience. Each project, even small ones, is a chance to add new techniques and tools to your toolbox. Where this delivers even more value is when you can solve problems by pairing techniques learned on one project with tools learned working on another. It all adds up.

Addy Osmani

Help the CMA help the Web

By sil

As has been mentioned here before the UK regulator, the Competition and Markets Authority, are conducting an investigation into mobile phone software ecosystems, and they recently published the results of that investigation in the mobile ecosystems market study. They’re also focusing in on two particular areas of concern: competition among mobile browsers, and in cloud gaming services. This is from their consultation document:

Mobile browsers are a key gateway for users and online content providers to access and distribute content and services over the internet. Both Apple and Google have very high shares of supply in mobile browsers, and their positions in mobile browser engines are even stronger. Our market study found the competitive constraints faced by Apple and Google from other mobile browsers and browser engines, as well as from desktop browsers and native apps, to be weak, and that there are significant barriers to competition. One of the key barriers to competition in mobile browser engines appears to be Apple’s requirement that other browsers on its iOS operating system use Apple’s WebKit browser engine. In addition, web compatibility limits browser engine competition on devices that use the Android operating system (where Google allows browser engine choice). These barriers also constitute a barrier to competition in mobile browsers, as they limit the extent of differentiation between browsers (given the importance of browser engines to browser functionality).

They go on to suggest things they could potentially do about it:

A non-exhaustive list of potential remedies that a market investigation could consider includes:
  • removing Apple’s restrictions on competing browser engines on iOS devices;
  • mandating access to certain functionality for browsers (including supporting web apps);
  • requiring Apple and Google to provide equal access to functionality through APIs for rival browsers;
  • requirements that make it more straightforward for users to change the default browser within their device settings;
  • choice screens to overcome the distortive effects of pre-installation; and
  • requiring Apple to remove its App Store restrictions on cloud gaming services.

But, importantly, they want to know what you think. I’ve now been part of direct and detailed discussions with the CMA a couple of times as part of OWA, and I’m pretty impressed with them as a group; they’re engaged and interested in the issues here, and knowledgeable. We’re not having to educate them in what the web is. The UK’s potential digital future is not all good (and some of the UK’s digital future looks like it could be rather bad indeed!) but the CMA’s work is a bright spot, and it’s important that we support the smart people in tech government, lest we get the other sort.

So, please, take a little time to write down what you think about all this. The CMA are governmental: they have plenty of access to windy bloviations about the philosophy of tech, or speculation about what might happen from “influencers”. What’s important, what they need, is real comments from real people actually affected by all this stuff in some way, either positively or negatively. Tell they whether you think they’ve got it right or wrong; what you think the remedies should be; which problems you’ve run into and how they affected your projects or your business. Earlier in this process we put out calls for people to send in their thoughts and many of you responded, and that was really helpful! We can do more this time, when it’s about browsers and the Web directly, I hope.

If you feel as I do then you may find OWA’s response to the CMA’s interim report to be useful reading, and also the whole OWA twitter thread on this, but the most important thing is that you send in your thoughts in your own words. Maybe what you think is that everything is great as it is! It’s still worth speaking up. It is only a good thing if the CMA have more views from actual people on this, regardless of what those views are. These actions that the CMA could take here could make a big difference to how competition on the Web proceeds, and I imagine everyone who builds for the web has thoughts on what they want to happen there. Also there will be thoughts on what the web should be from quite a few people who use the web, which is to say: everybody. And everybody should put their thoughts in.

So here’s the quick guide:

  1. You only have until July 22nd
  2. Read Mobile browsers and cloud gaming from the CMA
  3. Decide for yourself:
    • How these issues have personally affected you or your business
    • How you think changes could affect the industry and consumers
    • What interventions you think are necessary
  4. Email your response to [email protected]

Go to it. You have a month. It’s a nice sunny day in the UK… why not read the report over lunchtime and then have a think?

Making Code Faster

Making Code Faster

Tim Bray's detailed guide to using the Go profiler.

Twenty years of my blog

I started this blog on June 12th 2002 - twenty years ago today! To celebrate two decades of blogging, I decided to pull together some highlights and dive down a self-indulgent nostalgia hole.

Some highlights

Some of my more influential posts, in chronological order.

Picking out these highlights wasn't easy. I ended up setting myself a time limit (to ensure I could put this post live within a minute of midnight UTC time on my blog's 20th birthday) so there's plenty more that I would have liked to dig up.

My tags index page includes a 2010s-style word cloud that you can visit if you want to explore the rest of my content. Or use the faceted search!

A few more project release highlights:

Evolution over time

I started my blog in my first year of as a student studying computer science at the University of Bath.

You can tell that Twitter wasn't a thing yet, because I wrote 107 posts in that first month. Lots of links to other people's blog posts (we did a lot of that back then) with extra commentary. Lots of blogging about blogging.

That first version of the site was hosted at http://www.bath.ac.uk/~cs1spw/blog/ - on my university's student hosting. Sadly the Internet Archive doesn't have a capture of it there, since I moved it to http://simon.incutio.com/ (my part-time employer at the time) in September 2002. Here's my note from then about rewriting it to use MySQL instead of flat file storage.

This is the earliest capture I could find on the Internet Archive, from June 2003:

My blog in June 2003. The header and highlight colours were orange, the rest was black on white text. The tagline reads: PHP, PYthon, CSS, XML and general web development. The sidebar includes a "Blogs I read" section with notes as to when each one was last updated. My top post that day talks about Using boomarklets to experiment with CSS.

Full entry on Using bookmarklets to experiment with CSS.

By November 2006 I had redesigned from orange to green, and started writing Blogmarks - the name I used for small, bookmark-style link posts. I've collected 6,304 of them over the years!

My blog in June 2003. The header and highlight colours were orange, the rest was black on white text. The tagline reads: PHP, PYthon, CSS, XML and general web development. The sidebar includes a "Blogs I read" section with notes as to when each one was last updated. My top post that day talks about Using boomarklets to experiment with CSS.

By 2010 I'd reached more-or-less my current purple on white design, albeit with the ability to sign in with OpenID to post a comment. I dropped comments entirely when I relaunched in 2017 - constantly fighting against spam comments makes blogging much less fun.

My blog in July 2010. It's the same visual design as today, but with an option to sign in with OpenID and a little bubble next to each item showing the number of comments.

The source code for the current iteration of my blog is available on GitHub.

Taking screenshots of the Internet Archive with shot-scraper

Here's how I generated the screenshots in this post, using shot-scraper against the Internet Archive but with a line of JavaScript to hide the banner the display at the top of every archived page:

shot-scraper 'https://web.archive.org/web/20030610004652/http://simon.incutio.com/' \
  --javascript 'document.querySelector("#wm-ipp-base").style.display="none"' \
   --width 800 --height 600 --retina

mgdlbp on Hacker News pointed out that you can instead add if_ to the date part of the archive URLs to hide the banner, like this:

shot-scraper 'https://web.archive.org/web/20030610004652if_/http://simon.incutio.com/' \
   --width 800 --height 600 --retina

A tiny web app to create images from OpenStreetMap maps

Earlier today I found myself wanting to programmatically generate some images of maps.

I wanted to create a map centered around a location, at a specific zoom level, and with a marker in a specific place.

Some cursory searches failed to turn up exactly what I wanted, so I decided to build a tiny project to solve the problem, taking advantage of my shot-scraper tool for automating screenshots of web pages.

The result is map.simonwillison.net - hosted on GitHub Pages from my simonw/url-map repository.

Here's how to generate a map image of Washington DC:

shot-scraper 'https://map.simonwillison.net/?q=washington+dc' \
  --retina --width 600 --height 400 --wait 3000

That command generates a PNG 1200x800 image that's a retina screenshot of the map displayed at https://map.simonwillison.net/?q=washington+dc - after waiting three seconds to esure all of the tiles have fully loaded.

A map of Washington DC, with a Leaflet / OpenStreetMap attribution in the bottom right

The website itself is documented here. It displays a map with no visible controls, though you can use gestures to zoom in and pan around - and the URL bar will update to reflect your navigation, so you can bookmark or share the URL once you've got it to the right spot.

You can also use query string parameters to specify the map that should be initially displayed:

Annotated source code

The entire mapping application is contained in a single 68 line index.html file that mixes HTML and JavaScript. It's built using the fantastic Leaflet open source mapping library.

Since the code is so short, I'll enclude the entire thing here with some additional annotating comments.

It started out as a copy of the first example in the Leaflet quick start guide.

<!DOCTYPE html>
<!-- Regular HTML boilerplate -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>map.simonwillison.net</title>
<!--
  Leaflet's CSS and JS are loaded from the unpgk.com CDN, with the
  Subresource Integrity (SRI) integrity="sha512..." attribute to ensure
  that the exact expected code is served by the CDN.
-->
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-hoalWLoI8r4UszCkZ5kL8vayOGVae1oxXe/2A4AO6J9+580uKHDO3JdHb7NzwwzK5xr/Fs0W40kiNHxM9vyTtQ==" crossorigin=""/>
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-BB3hKbKWOc9Ez/TAwyWxNXeoV9c1v6FIeYiBieIWkpLjauysF18NzgR1MBNBXf8/KABdlkX68nAhlwcDFLGPCQ==" crossorigin=""></script>
<!-- I want the map to occupy the entire browser window with no margins -->
<style>
html, body {
  height: 100%;
  margin: 0;
}
</style>
</head>
<body>
<!-- The Leaflet map renders in this 100% high/wide div -->
<div id="map" style="width: 100%; height: 100%;"></div>
<script>
function toPoint(s) {
  // Convert "51.5,2.1" into [51.5, 2.1]
  return s.split(",").map(parseFloat);
}
// An async function so we can 'await fetch(...)' later on
async function load() {
  // URLSearchParams is a fantastic browser API - it makes it easy to both read
  // query string parameters from the URL and later to generate new ones
  let params = new URLSearchParams(location.search);
  // If the starting URL is /?center=51,32&zoom=3 this will pull those values out
  let center = params.get('center') || '0,0';
  let initialZoom = params.get('zoom');
  let zoom = parseInt(initialZoom || '2', 10);
  let q = params.get('q');
  // .getAll() turns &marker=51.49,0&marker=51.3,0.2 into ['51.49,0', '51.3,0.2']
  let markers = params.getAll('marker');
  // zoomControl: false turns off the visible +/- zoom buttons in Leaflet
  let map = L.map('map', { zoomControl: false }).setView(toPoint(center), zoom);
  L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 19,
    attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
    // This option means retina-capable devices will get double-resolution tiles:
    detectRetina: true
  }).addTo(map);
  // We only pay attention to ?q= if ?center= was not provided:
  if (q && !params.get('center')) {
    // We use fetch to pass ?q= to the Nominatim API and get back JSON
    let response = await fetch(
      `https://nominatim.openstreetmap.org/search.php?q=${encodeURIComponent(q)}&format=jsonv2`
    )
    let data = await response.json();
    // data[0] is the first result - it has a boundingbox array of four floats
    // which we can convert into a Leaflet-compatible bounding box like this:
    let bounds = [
      [data[0].boundingbox[0],data[0].boundingbox[2]],
      [data[0].boundingbox[1],data[0].boundingbox[3]]
    ];
    // This sets both the map center and zooms to the correct level for the bbox:
    map.fitBounds(bounds);
    // User-provided zoom over-rides this
    if (initialZoom) {
      map.setZoom(parseInt(initialZoom));
    }
  }
  // This is the code that updates the URL as the user pans or zooms around.
  // You can subscribe to both the moveend and zoomend Leaflet events in one go:
  map.on('moveend zoomend', () => {
    // Update URL bar with current location
    let newZoom = map.getZoom();
    let center = map.getCenter();
    // This time we use URLSearchParams to construct a center...=&zoom=... URL
    let u = new URLSearchParams();
    // Copy across ?marker=x&marker=y from existing URL, if they were set:
    markers.forEach(s => u.append('marker', s));
    u.append('center', `${center.lat},${center.lng}`);
    u.append('zoom', newZoom);
    // replaceState() is a weird API - the third argument is the one we care about:
    history.replaceState(null, null, '?' + u.toString());
  });
  // This bit adds Leaflet markers to the map for ?marker= query string arguments:
  markers.forEach(s => {
    L.marker(toPoint(s)).addTo(map);
  });
}
load();
</script>
</body>
</html>
<!-- See https://github.com/simonw/url-map for documentation -->

The End of Localhost

The End of Localhost

swyx makes the argument for cloud-based development environments, and points out that many large companies - including Google, Facebook, Shopify and GitHub - have made the move already. I was responsible for the team maintaining the local development environment experience at Eventbrite for a while, and my conclusion is that with a large enough engineering team someone will ALWAYS find a new way to break their local environment: the idea of being able to bootstrap a fresh, guaranteed-to-work environment in the cloud at the click of a button could save SO much time and money.

Announcing Pyston-lite: our Python JIT as an extension module

Announcing Pyston-lite: our Python JIT as an extension module

The Pyston JIT can now be installed in any Python 3.8 virtual environment by running "pip install pyston_lite_autoload" - which includes a hook to automatically inject the JIT. I just tried a very rough benchmark against Datasette (ab -n 1000 -c 10) and got 391.20 requests/second without the JIT compared to 404.10 request/second with it.

Via Hacker News

Weeknotes: Datasette Cloud ready to preview

I made an absolute ton of progress building Datasette Cloud on Fly this week, and also had a bunch of fun playing with GPT-3.

Datasette Cloud

Datasette Cloud is my upcoming hosted SaaS version of Datasette. I've been re-building my initial alpha on top of Fly because I want to be able to provide each team account with their own Datasette instance running in a dedicated Firecracker container, and the recently announced Fly Machines lets me do exactly that.

As-of this weekend I have all of the different pieces in place, and I'm starting to preview it to potential customers.

Interested in trying it out? You can request access to the preview here.

GPT-3 explorations

Most of my GPT-3 explorations over the past week are covered by these two blog posts:

Searching my tweets for GPT captures a bunch of other, smaller experiments. A few highlights:

Releases this week

TIL this week

How to play with the GPT-3 language model

I ran a Twitter poll the other day asking if people had tried GPT-3 and why or why not. The winning option, by quite a long way, was "No, I don't know how to". So here's how to try it out, for free, without needing to write any code.

You don't need to use the API to try out GPT-3

I think a big reason people have been put off trying out GPT-3 is that OpenAI market it as the OpenAI API. This sounds like something that's going to require quite a bit of work to get started with.

But access to the API includes access to the GPT-3 playground, which is an interface that is incredibly easy to use. You get a text box, you type things in it, you press the "Execute" button. That's all you need to know.

How to sign up

To try out GPT-3 for free you need three things: an email address, a phone number that can receive SMS messages and to be located in one of this list of supported countries and regions.

  1. Create an account at https://openai.com/join/ - you can create an email/password address or you can sign up using your Google or Microsoft account
  2. Verify your email address (click the link in the email they send you)
  3. Enter your phone number and wait for their text
  4. Enter the code that they texted to you

New accounts get $18 of credit for the API, which expire after three months. Each query should cost single digit cents to execute, so you can do a lot of experimentation without needing to spend any money.

How to use the playground

Once you've activated your account, head straight to the Playground:

https://beta.openai.com/playground

The interface looks like this (it works great on mobile too):

A heading says Playground. There is a text area with "Write a tagline for an ice cream shop" in grey, and a green Submit button. A right hand panel includes some sliders and other options.

The only part of this interface that matters is the text box and the Submit button. The right hand panels can be used to control some settings but the default settings work extremely well - I've been playing with GPT-3 for months and 99% of my queries used those defaults.

Now you can just type stuff into the box and hit that "Submit" button.

Try this one to get you started:

Three reasons to start a succulent garden

The same interface. I have entered the prompt "Three reasons to start a succulunt garden". GPT-3 has replied, its output in the same text area but highlighted with a green background: "1. Succulents are low-maintenance: They don't require much watering or fertilizing, and they can tolerate a wide range of light conditions. 2. Succulents are drought-tolerant: They're perfect for areas that receive little rainfall or irrigation. 3. Succulents add interest and variety to the landscape: With their wide range of shapes, sizes, and colors, they can provide a unique and eye-catching addition to any garden."

Prompt engineering

The text that you entered there is called a "prompt". Everything about working with GPT-3 is prompt engineering - trying different prompts, and iterating on specific prompts to see what kind of results you can get.

It's a programming activity that actually feels a lot more like spellcasting. It's almost impossible to reason about: I imagine even the creators of GPT-3 could not explain to you why certain prompts produce great results while others do not.

It's also absurdly good fun.

Adding more to the generated text

GPT-3 will often let you hit the Submit button more than once - especially if the output to your question has the scope to keep growing in length - "Tell me an ongoing saga about a pelican fighting a cheesecake" for example.

Each additional click of "Submit" costs more credit.

You can also add your own text anywhere in the GPT-3 output, or at the end. You can use this to prompt for more output, or ask for clarification. I like saying "Now add a twist" to story prompts to see what it comes up with.

Further reading

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: Anno Domini

By Lyle Seaman

Buffalo, New York is a recovering Rust Belt city which has given the world several notable achievements. First, a fairly forgettable sliced meat sandwich au jus more known for its barely edible stale roll than for the entirely unremarkable beef entombed within. Second, an innovative repurposing of a castoff fowl appendage into a drunkard's delicacy (and Mlle Simpson's famed befuddlement). Most of all, it's indispensable for the construction of a lighthearted linguistic shibboleth: Buffalo buffalo buffalo buffalo... and so on. Unfortunately, the city also brings us bad news this week.

But first, Tony H. reminds us of a famously scandal-ridden bank. Theirs might not have been the worst fraud in 2016 (or 2017, or 2018, or 2019) but apparently they're now tightening down the screws on consumer lending. Tony observes, frostily, "a credit card with a limit below zero is alarming even for Wells Fargo."

limit

 

Sleepless David Green puns breathlessly "My Philips CPAP machine was recalled and I am waiting for a replacement machine. I'm concerned about the possible harm my existing machine could do, and I'm hoping that the new machine is better, but if it's anything like their string formatting for reference numbers, I'm not exactly inspired with confidence." Nyuk.

ppap

 

Job-hunter Pawel serves up a short cup. "I've heard there have been staffing shortages recently, but didn't realize the bar would be so low!" Nivel, for los analfabetos, means degree in this argot.

nivel

 

An anonymous HBO Max viewer surnamed B. reached out for help, asking "This is my second time watching this film and I still don't know what happened to Peter and Vera." I'm sorry, Mx. B. I read the book, and I couldn't figure it out either. (we probably should have a special column just for the "bad online shopping data" since there's So. Damned. Much of it. And it's kind of a special case of WTFery that doesn't quite rise to the level of endless NaNs.)

vera

 

And finally, Buffalonian (it's a word!) Chris N. previews our column of bad online journalism data and our column of troubled timestamps with this ripped straight from the breaking news: "Trusted since year 40 -- is that AD or BC? Better ask Meredith." ISO 8601 OR ELSE!

xxxx

 

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

Submit Your Vacation

By Remy Porter

"We have an internal website that shows, among other things, the daily availability of my coworkers for the next three months to help with scheduling, especially when planning vacations," writes Alexander.

"This vacation planner data is represented as a table. An image of a table to be more precise."

Displaying data as images is already a WTF. It's certainly not user friendly, it's definitely not accessible, and it makes one wonder whyyyy. That, however, is the least of the WTFs Alexander has in store for us.

First, the front-end sent its HTTP requests to a single end-point. Every request went to the same URL. When the user clicked the button to show the vacation planner, the browser would submit a form- yes a form, creating a body which looked like:

-----WebKitFormBoundary9lVf1utJmbYdQuZm Content-Disposition: form-data; name="mode" vacationplannerimage ------WebKitFormBoundary9lVf1utJmbYdQuZm Content-Disposition: form-data; name="imgpath" images/vacationplanner/July 1 2022.jpg ------WebKitFormBoundary9lVf1utJmbYdQuZm--

"Why," you might ask, "couldn't they just use an <img> tag pointing at the correct URL?" Then you remember what site you're reading this on, and realize there isn't a good answer to that question.

So, what does the API endpoint do with that request? It feeds it through a gigantic C# switch:

switch (mode) { case "dosomething": Response.Write(DoSomething()); break; case "dosomethingdifferent": Response.Write(DoSomethingDifferent()); break; // ...more cases case "vacationplannerimage": Response.Write(VacationPlannerImage()); break; // ...even more cases but no default case }

Note the comment: there's no default case. So if a client sends an invalid request, we get back an empty response, not an error. So that's fun, and definitely not a recipe for future confusion. Especially because there's no documentation for what mode flags are valid- the only way to know is to read the gigantic switch block.

So how does the VacationPlannerImage get fetched?

public string VacationPlannerImage() { string file = Server.MapPath(Request.Form["imgpath"]); try { if (File.Exists(file)) return $"{{\"isok\": true, \"message\": \"ok\", \"data\": {{\"idx\":{Request.Form["arridx"]}, \"img\":\"data:image/jpeg;charset=utf-8;base64,{Convert.ToBase64String(File.ReadAllBytes(file), Base64FormattingOptions.None)}\"}}}}"; else return $"{{\"isok\": false, \"message\": \"No data to display!\"}}"; } catch (Exception ex) { return $"{{\"isok\": false, \"message\": \"{ex.Message}\"}}"; } }

Ahh, now that's the stuff. Hand-crafted, artisinal JSON through string interpolation. The image served up as a field in the response, encoded in Base64, wrapped up in status fields which are handily re-inventing things that HTTP just already does for free.

Or, to let Alexander sum up:

Instead of a GET to an image URL, maybe handling security stuff in the server and returning an image this project takes a detour around every imaginable web standard to do its thing.

And this isn't some ancient, legacy project- the first commit to the project was in 2016.

Alexander closes:

Feel free to reach out if you have any questions or comforting words.

I have a lot of questions, but I don't think there are any good answers. As for comforting words, I don't think there are any that are sufficient.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

CodeSOD: Heading On Out

By Remy Porter

Madeline inherited some Python 2.7 code, with an eye towards upgrading it to a more modern Python version. This code generates CSV files, and it's opted to do this by cramming everything into a 2D array in memory and then dumping the array out with some join operations, and that's the real WTF, because that's a guaranteed way to generate invalid CSV files. Like so many things, the CSV files are actually way more complicated than people think.

But we're going to focus in on a smaller subset of this pile of WTFs. I'll lead with the caveat from Madeline: "I've changed some of the variable names around, for a bit of anonymity, but couldn't get variable names quite as terrible as the original ones."

columns = [] headColumns = "Record ID, Record Category, CITY,Restrictions,UNIQUE_GENERATED_ID".split( "," ) for currentColumn in headColumns: columns.append(currentColumn)

This code tracks the column names as a comma separated string. It splits the string into a list. Then it iterates across that list and appends each item into… a list. headColumns is never referenced again.

This could have just been… a list of column names. No splits. No appends. Just… have a list of column names.

That's annoying, but then there's all the hinted at details here. The column names will all contain an abritrary number of spaces. There's a mix of conventions- spaces and underscores in names, Title Case and ALL CAPS. Two columns, "Record ID" and "UNIQUE_GENERATED_ID" both suggest that they're unique identifiers. Madeline says that the CSV file ends up containing three different identifier columns, and says "I think that's likely due to an improperly designed database schema.

Yes, I suspect Madeline is right about that.

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

CodeSOD: Show Thumbnails?

By Remy Porter

Christopher Walker continues to struggle against ancient PHP applications in the automotive industry. With the point system behind him, there was a whole pile of internal applications for handling information about laws, misconceptions about the law, and other driver services.

One, a home-grown CMS, was useful for publishing blog-style content about changes in the law. There was just one problem: if a post was published without a thumbnail, attempts to view that post failed with an error. It wasn't hard to find the offending line.

<div class="col-12{{ $show_image == 1 ? ' col-md-8' : '' }}">

This was actually a pretty simple mistake. The code assumed that $show_image was set, and that if there was a thumbnail, the value was 1. If there wasn't, it was 0, or false, or an empty string, or some other value. Types didn't really matter, if it was set.

The problem was, if there was no thumbnail, it wasn't set. And that caused the error. The fix was simple: use a null-coalescing operator. Christopher submitted this pull request:

<div class="col-12{{ $show_image ?? false == 1 ? ' col-md-8' : '' }}">

This isn't the ideal solution. But despite putting forward a good effort, Christopher couldn't figure out where $show_image was actually getting initialized in the code- it was just that much of a mess behind the scenes. But this fixed the crash bug, and at least pointed towards the kind of refactoring that would be needed for a more permanent fix. Ideally they'd abandon the whole 0/1 thing and just use boolean values in the first place.

So it's not great, but it's acceptable given the constraints.

Well, almost acceptable. The problem arises a few weeks later, because while the error went away, a display isssue cropped up. As it turns out, the maintainer of this particular internal project rejected Christopher's pull request. They did, however, see the need and implemented their own version. No, they didn't go and track down the root cause of the problem and try and fix it, they just did the same thing as Christopher… but wrong.

<div class="col-12{{ $show_image ?? 1 == 1 ? ' col-md-8' : '' }}">

This code continues to work fine if there is a thumbnail set, but if there isn't, it will still reserve the space for a thumbnail. That's because this code does the opposite of what it's supposed to, which is treat an unset $show_image as false.

It's impressive to see the working solution mutate into a non-working one so quickly.

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

CodeSOD: Spellchucker

By Remy Porter

There's an old saying in programming: you don't have to spell correctly, you only have to spell consistently. As long as you mispell everything the same way, your language will understand your code. However, most editors and IDEs have spell-check integration, though, because it's hard to get everyone on a team to spell things wrong consistently.

Unless, of course, you know just implement some bonus methods, like John's co-worker. This was frequently spammed in the Java codebase:

public String toStrign() { return super.toString(); }

Don't strign us along.

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

CodeSOD: Classic WTF: Pure Eval

By Remy Porter

We close out our week with something evil. Someting… eval. Original. --Remy

When Jeff saw a line like this one, he knew there was something terribly wrong in the code he had inherited.

eval(Application("buildCommon").toString());

He wasn't sure what was more troubling- the way the Application variable was being used, or the fact that C#, as a compiled language, doesn't have an eval statement.

A brief trip to the Googles informed him that yes, some people did in fact wrap eval around the compiler. There were a depressing number of samples demonstrating how it could be done. Someplace, buried in his codebase, there was a function much like that.

Which was bad, but what was worse was how every other function in the application was built and maintained. By storing all of their class definitions as strings and compiling them at runtime, they could have an application that was more "flexible".


Application("commonFunctions") =
    openConnObj.toString() + "\xFF" +
    /***snip about 100 functions***/
    closeConnObj.toString();

Application("buildCommon") =
    "if (typeof(openConnObj) == 'undefined') {"+ "a = Application('commonFunctions').split('\xff');"+
    "for (var nCnt = 0;nCnt < a.length;nCnt++)eval(a[nCnt]);};"; 

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

Classic WTF: GHOST Busted

By Remy Porter

We're wrapping up our vacation week with a look at something really scary. A GHOST. A spooky GHOST, not the Swedish metal band, which isn't really spooky. Original. --Remy

Some developers look at a problem and say, “Let’s solve it. With code!” Then there are other developers, who say, “This specific problem is a subset of a general class of problem, which, if we solve the general class, will automatically solve the specific class.” The best programmers know when it’s time to keep it simple, and when they really should shoot for the stars.

Chris worked for a startup run by former academics. They wanted to shoot for the stars, some black holes, and maybe, if there was budget left over, the primordial galaxies that formed after the Big Bang. They had an idea for a product which would… well, Chris had no idea what it did.

The vision was codenamed SPRIT. Walter, the wizard behind it, couldn’t explain its purpose in terms anyone else understood. The only thing he could explain was that SPIRIT needed to be implemented in the in-house language, GHOST. “It’s a joke,” Walter explained once, “It stands for ‘Generic Hybrid Script for Transactional Objects’. The acronym is out of order because GHOST is all about parallel processing. It’s funny.”

GHOST wasn’t terribly funny to use. It terrified Chris. The syntax loved short-hand and unusual special characters, which made it read like the demon offspring of MUMPS and APL. Worse, it wasn’t truly a language in its own right- it compiled down into C#. The generated C# code read like Franz Kafka on LSD, and depended on syntax conventions which had been deprecated in 2003, meaning it depended on .NET 1.1.

The language was cluttered with all sorts of things it didn’t need. To demonstrate its “expressive power”, Walter built syntax primitives to do non-primitive things. With a single line of code, you could generate 500 users and add them to the domain, or scan the network for every printer or network drive and map it to the local machine. There was a built-in method named “NPR”, which calculated the nth prime using a brute force (but highly parallelized) algorithm.

GHOST was Walter’s pride and joy. The fact that only the generated C# was debuggable, and not GHOST itself, or that the advanced “transactional primitives” rarely worked did nothing to dull his pride. Like a proud father, Walter wanted every chance to show off his offspring.

The first chance was an upcoming trade show. Walter pulled out all of the stops, bought the best booth their budget allowed, and booked travel for the entire team. The lack of a demo-ready product meant nothing to him. “We’ll just have to go into crunch mode!” Walter led by example and took a week’s vacation.

This left Chris, and his allies Peter and Ray, to slave away late each night. The night before the trade show, they worked in silence. The lights were dimmed, the floor was littered with yesterday’s pizza boxes and tonight’s Chinese take-out. Chris wrestled with his GHOST, trying to get the system to do whatever it was it was supposed to do. He had some tests as his guide, even if he didn’t know what they meant. Peter and Ray scrambled to prepare the other booth materials and printouts.

Shortly before midnight, Chris found his triumph. The inputs he in the spec generated the outputs they were supposed to. Peter and Ray were still scrambling- the main printer had just died, and in a rush, they hooked up a dusty, ancient replacement. Everything seemed fine, until the clock struck midnight.

Something happened, someplace between the hardware, the operating system, and the GHOST software. Ray’s print job finished, and a new one started. Page after page of the arcane, eldritch code of the system spewed forth. GHOSTly code danced across the pages like the gibberings of a mad-man. It was only Chris’s quick thinking that saved their sanity- he tore the printer’s power cable from the wall.

No one knew why it happened. No one wanted to know. Maybe it was the printer, or perhaps it was something stuck in the print queue. Maybe one of them triggered some unknown feature in the application. Maybe… maybe it was the GHOST in the machine. They swore to never discuss it, and agreed to run off the last few print jobs at Kinko’s the next day, and went home for the night.

The first day of the trade show was a mild disaster. Their booth was tucked away in a remote corner, between the trash bins and one of those pushy training companies that promised to turn novices into veteran programmers in six weeks, “Or your money back!” When anyone wandered past, Walter did his best to rope them in, and demo SPIRIT and discuss the power of GHOST. Each demo triggered bugs and crashes, but since no one actually understood the application, only Walter noticed the issues.

They stayed through the day, into the opening night party. The free drinks ran out at 11PM, and so everyone wandered out into the streets of the city, looking for nightlife. This meant only security and the cleanup crew were there at midnight…

The second day opened as a scene of bedlam
. Several acres of forest had been converted into the cracked scrawl of GHOST code. Each and every vendor with a poorly-secured printer on the network (all of them) had been taken over by GHOST. Most ran out of paper early in the evening, although with that many print jobs hitting the network, a number of them were only just starting on their insane quest to print the entirety of SPIRIT’s GHOST code.

Chris pulled the demo machine off the network, which crushed Walter. “Now I can’t demonstrate the great networking features of GHOST!” They never found the underlying cause. Like most hauntings, in cropped up at midnight for a few weeks, then slowly drifted away into a bad memory. SPIRIT never found a market, and when the company folded, they gave up the GHOST.

Chris thought that was the end of the story, until he went to clean out his attic. He found an old, unmarked box. Inside were reams of paper, completely covered with GHOSTs.

Ghost image by Lionel Allorge (Own work) GFDL, CC-BY-SA–3.0 or FAL, via Wikimedia Commons

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

Classic WTF: Back That Thang Up

By Alex Papadimoulis

We're still away for our summer break, skimming our inbox and horrified by all the things you're sending us. Keep doing it. Speaking of horrors, this one's about backups. You know what's about to happen… Original. -- Remy

It ain't easy being number one, especially for R.B.'s company. With €730 million in annual revenues, they're the leader in a relatively small (€1.6 billion) niche market and are constantly struggling to maintain their dominance amongst a handful of vicious competitors. Recently, an executive at the company came up with an astonishingly brilliant plan that would ensure that they stayed on top for many years to come. This plan was named The Convergence.

The Convergence was, in all seriousness, a really good idea. It represented a completely new way of doing business that relied heavily on technology and its ability to integrate the supply chain with the customer experience. It would do nothing short of revolutionizing their entire industry, leaving their competitors struggling just to stay afloat.

Being that it was such a large idea, The Convergence would take a lot of time and money to implement. Just about all departments -- from sales to customer service -- would need to dedicate resources to complete the project. The I.T. budget alone was €2.3 million, which was at least five times larger than any project before it. To make sure that the I.T. portion of the project went smoothly, an Expert Project Manager was brought in.

To the Expert Project Manager, a €2.3 million project was nothing. Chump change. Small potatoes. Nickels and dimes. Chicken feed. Compared to his portfolio, this "tiny little project" would be a cinch to run out.

The first thing the Expert Project Manager requested was Expert Team Collaboration Software. His request was denied: the software was expensive and required dedicated hardware to run. He was, however, authorized to set up a demonstration of it so that others could "experiment on it and see how it works." And that he did: a development server was recommissioned and the Expert Team Collaboration Software was installed.

Time went by and the Expert Project Manager started to use the Expert Team Collaboration Software for a bit more than demo purposes. Agendas, meeting notes, requirements, etc. all started to find a home in the collaboration software and, before everyone realized it, they had all transitioned to using the Expert Team Collaboration Software for everything related to the project.

This was all despite R.B.'s vehement objections. Keep in mind that the setup was on a temporary development server with no security, no backups, and no support from Network Operations. As with some of the other developers, R.B. was shuffled aside and even criticized for being uncooperative. After a while, R.B just gave up and went with the flow.

Fast forward a year and a half and The Convergence plan is getting closer and closer to being implemented. As part of the project, a Terminal Server needed to be setup for development and testing purposes. Over the weekend, the folks in Network Operations recommissioned an unused development server, wiped it clean, and configured a new set up.

The following Monday morning, a business analyst working on The Convergence couldn't find the document she was working on in the Expert Team Collaboration Software. In fact, not only was her document missing, but so were the initial charters, plans, budgets, request for proposals, test scripts, requirements, etc. She asked a developer to help her find out why ...

Developer: What happened to all of our data on the Expert Team Collaboration Software server?
Network Operations Administrator: No idea. Why do you ask, and what is an "Expert Team Collaboration Software Server"?
Dev: Umm ... it was the server we have all the documents for The Convergence on.
Admin: ... the file share? That's up and running just --
Dev: No, no -- the Expert Team Collaboration Software Server, DEVT09 I think.
Admin: Oh that server? We wiped that for the Terminal Server you guys requested.
Dev: ... we need it back ... can you restore it from backup?
Admin: No -- we don't back up your Dev Temp Servers.

The developer reported this in the morning project meeting. The Expert Project Manager didn't find the joke too funny, as the Expert Team Collaboration Software housed over a years worth of work from 28 different people. When it was explained to him that it wasn't a joke, the Expert Project Manager excused himself and headed in the direction of the restrooms. No one has seen him since.

But of course, the real fun came when someone had to sit in for the Expert Project Manager at the Board of Directors status meeting and explain all this. It turns out that the bigwigs weren't too understanding about The Convergence being delayed for a year ... or even about being asked if they saved any hard copies of the project documentation.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

Classic WTF: The Source Control Shingle

By Alex Papadimoulis

It's still a short summer break for a few more days, as always, keep those submissions filling our inbox while we're away. In the meantime, we're also into peak homebuying season. A friend of mine needed a new roof as part of her purchase. Roofs are important, as they provide vital protection for your structure. Unless that structure is your source code… Original. --Remy

The year was 1999 and the dot-com boom was going full-throttle. Companies everywhere were focused on building revolutionary applications using nothing but top-shelf hardware and state-of-the-art software tools. Developers everywhere were trying to figure out if they should play more foosball, more air hockey, or sit back down on their Aeron and write more code. Everywhere, that is, except Boise, Idaho. Or at least, Dave's small corner of it.

At Dave's company, developers worked at a solid pace, using reliable tools, for a stable industry. They were sub-sub-contractors on a giant project commissioned by the U.S. Navy to condense naval vessel documentation. Generally speaking, the complete documentation required for a modern warship-from the GPS calibration instructions to the giant 130-millimeter cannon repair guide-is measured in tons. By condensing the documentation into the electronic equivalent, they could not only save tremendous physical space, but they could make it much easier to navigate.

 

A Simple Plan

Dave's company's small piece of the pie involved writing a very specific application for a particular group of users. Their application needed to track who moved which box of classified documentation from where to where, and why. Given the very simple requirements, the entire application was assigned to Mark.

Mark believed in keeping things simple: he rarely left the command line, his text editor was notepad and his source repository was a few backup folders on a network drive. He didn't need or want more than that. It was a simple task that called for his simple methodologies.

As their app neared completion, a whole new set of requirements came in. Now, they had to add in security and logging. When Dave joined Mark's one-man team to help out with this, the current system of source control -- nothing -- became inconvenient for collaborating.

Dave suggested they set up a source-control repository, but Mark wanted to keep things simple. He devised a solution called the "source-control shingle."

 

Roofing and Revisions

The source-control shingle was literally that: an actual shingle from someone's house that somehow ended up in their office. It acted like a "talking stick," in that only he who possessed the shingle was allowed to edit the common libraries.

As time went on, the project's scope grew immensely. More and more developers came on board, and the source-control shingle was pushed to its limits. Despite not being in possession of the shingle, some developers broke protocol and edited the library files on the share drive. Finally, Mark agreed to use a simple source repository. He wanted to use the only source-control system that guaranteed file locks: Visual Source Safe.

Unfortunately, Source Safe was so painful to license and manage that Mark had no choice but to explore other options, some of which involved a piece of painted wood. After much arguing and cajoling, Mark agreed to try out open source CVS. Things went well for the first few days, but quickly took a turn for the worse.

"What happened to my code?" Mark asked. "I just did a CVS UPDATE and everything I wrote this morning is gone!"

"It's working fine for me," one of the developers replied.

"Same here," another joined in. "I just checked in my changes a few minutes ago, and they're still here."

"Wait," a third one questioned, "did you do an UPDATE before the COMMIT?"

"Did I what?" the second developer replied. "Oh. Crap."

Exasperated, Mark jumped. "That's it! We're going back to the shingle!"

Fortunately, some of the other developers managed to convince Mark to stick with CVS, at least for a little while longer. One of the developers even managed to enforce better source control practices using some server-side scripts. And despite Mark's constant reservations, they ended up staying with CVS throughout the project. But the whole while, Mark kept the shingle handy, just in case.


The Source Control Shingle was originally published in Alex's DevDisasters column in the April 15, 2008 issue of Redmond Developer News. RDN is a free magazine for influential readers and provides insight into Microsoft's plans, and news on the latest happenings and products in the Windows development marketplace.

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

Classic WTF: DATABASE ABNORMALIZATION 101

By Mark Bowytz

It's that time of year, we're taking a brief little summer break this week, and thus reaching back into the archives for some classics. Enjoy these, and in the meantime, keep those submissions coming! For today, we have a unique way to keep track of when classes start… Original. --Remy

Working as a DBA in academia, Paul received a notice that a certain newly migrated user schema, specifically the one used by the enrollment tracking system, had swelled to 281 tables and was growing. This had struck Paul as being very strange since the tracking system wasn't all that complicated.

When a student is registering for a class, and want to know if there's room left, they need two pieces of information - the Course ID and the Semester Number.

Course IDs are found by simply looking up the course in the Course Catalog. However, the semesters (or terms), denoted by a 4-digit number, can be a little tricky for new students. The first digit denotes the century (2 for the 21st century), the second and third digits are the specific year (08 for 2008, 09 for 2009, and so on) and the last digit denotes the month the term begins (1 for spring term, 6 for the summer term, and 9 for the fall term). Therefore, if you are looking for classes for the Spring 2009 Term use 2091 or if you are looking for Summer 08 classes use 2086, and for Fall 2010 use 2109.

The student enters the Course and Semester code and they get back a count of spaces left in the class.

Thinking that the system should really be, tops, five tables in all, Paul couldn't figure where all the tables were coming from, that is until he checked the layout and found a very creative way of storing data in a database.

Each table was in the format ██_Enroll_hours_<term>_<week> each for enrollment going back in history several years.

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

Error'd: Meat!

By Lyle Seaman

I remember when gasoline was under a dollar a gallon in the US! And penny candy was only a penny! And a pound sterling could buy you a decent dinner, not just a few ounces of meat product! And the euro! Let me tell you about the euro!!
I mean, um. Yeah. Things have changed, and it seems lately all our consumer goods and services have become suddenly more expensive, or smaller, or inferior in some other way. Have you priced airplane flights, even in middle seats with no luggage or food?
The lead submission this week isn't really a software Error'd. It's not even a wacky product offering from Amazon. But despite what seems an unconscionable price, the manufacturer has discovered a revolutionary method to deliver extra value by (apparently) literally altering the properties of the universe.
Ladies and gentlemen, I give you... MEAT!

Finally free from those awful EU restrictions, Michael R. now has access to 85% over-clocked pork sausages. "Not bad to get 185g meat out of 100g product.", he grunts gluttonously. "I will take 2."

meat

 

Mac user (maybe? Correct me if I'm wrong) Lily might need some of that over-clocked sausage sustenance while trying to make something like full use of her Core i5 heater. "I've never realized my 4 core CPU has such performance! Thank you, Intel!" It really makes you wonder why Apple bothered with new chips at all.

cpu

 

Jonathan Holmes , on the other hand, needs some over-clocked memory. Even in these inflated days, a half-terabyte of RAM is a considerable investment. "To be fair to Samsung, I can rent a 512GB Amazon instance for under $5 an hour if I want to backup my mobile..." Gramps here recalls a product called "RAM Doubler" that might help a bit, especially if you could exploit some of Lily's massive CPU for some really fancy compression algorithms.

samsung

 

Peter C. highlights a pernicious variant on inflation that the mass media are now calling "shrinkflation". If you don't want to raise prices, just reduce your product quantity instead. Seems like FedEx's web supplier has been selling them a bunch of diminished text boxes. "I thought this form gave me 120 characters to work with, but then it cut me off after 35," he raged. "You can hardly say BOO in only 35 characters!!11!"

35

 

In another reminiscence on bygone days, unrelated to inflation, Unsightly P. regales us with a heroic tale. "I was thrilled to log in to my plural sight account, and see a real live NaN! Such sightings were common when the web was young, but civilization has largely relegated them to forgotten myths. The search is on though, for NaN's older brother, the great (K?)null." Ah, me, Mr. P. I assure you the mythical NaN is anything but. We here at Error'd see scores of NaNs with every mailbag. It's only the shocking ubiquity of their existence that discourages more than a fortnightly feature. Next week, perhaps, we'll see a Pnull.

nan

 

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

CodeSOD: Re-Ports

By Remy Porter

Crystal Reports falls into that category of tool which promises to help end users accomplish technical tasks easily. They can point it at a database, ask the database a question, and voila, a report pops out, complete with pretty fonts and colors.

Like any such tool, however, there's a point where it starts getting technical. Jon's company passed that point ages ago, and hired on a dedicated Crystal Reports Developer to write reports that were too complicated for the end users. But even that has its limits, and eventually, their reporting needs outgrew what a Crystal Report implemented by their dedicated developer could do.

So Jon's team was handed a pile of reports and told, "implement these as stored procedures in SqlServer." Now, there wasn't anything so fancy as being given requirements or any sort of description about what the reports were for, or what they did, or what would qualify as a successful port version an error. The reports themselves were the requirements: reverse engineer them exactly as written, doing a 1-to-1 mapping wherever possible.

That was mostly fine, but there were a few "special" points in the original reports, where the developer had implemented their own custom Crystal Report functions. Including their own custom date functions. Like this one:

shared DateTimeVar dateObj1; shared DateTimeVar dateObj2; If IsDate(ToText(dateObj1,{@DateFormat})) and IsDate (ToText(dateObj2, {@DateFormat})) then

Now, looking at this, you can see that dateObj1 and dateObj2 are typed as DateTimeVars, which yes, means they only hold date times. And thus, in the conditional, we see a pattern we've seen many, many times before: we convert the actual date object back into text and then validate that the text contains a valid date. Which it will, because, again, we started with a date in the first place.

But the goal was to do a 1-to-1 mapping, since no one really knew what the reports actually depended on or how they worked, and no one was going to free up the budget to actually answer those questions. "Thoughtlessly port the code, as accurately as possible," was the order of the day.

So, despite every desire in his body, Jon replaced those ToText calls with TO_CHAR and kept the logic exactly the same.

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

CodeSOD: Query Lockup

By Remy Porter

Another day, another time where someone from Brian's team needs to log into their MySQL database and kill a query. This particular query hangs while holding a lock, which hangs up every other query which needs to touch this table, which is a lot of them.

select count(*) INTO @fullCount FROM SALLSTDM LEFT OUTER JOIN BUYBIDMB ON (MBBUYNBR = 597436 AND MBLOTNBR = SLLOTNBR) INNER JOIN LOTFILFL FL1 ON (FL1.FLFILTYP = 'A1' AND FL1.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL2 ON (FL2.FLFILTYP = 'A1' AND FL2.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL3 ON (FL3.FLFILTYP = 'A1' AND FL3.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL4 ON (FL4.FLFILTYP = 'A1' AND FL4.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL5 ON (FL5.FLFILTYP = 'A1' AND FL5.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL6 ON (FL6.FLFILTYP = 'A1' AND FL6.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL7 ON (FL7.FLFILTYP = 'A1' AND FL7.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL8 ON (FL8.FLFILTYP = 'A1' AND FL8.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL9 ON (FL9.FLFILTYP = 'A1' AND FL9.FLLOTNBR = SALLSTDM.SLLOTNBR ) INNER JOIN LOTFILFL FL10 ON (FL10.FLFILTYP = 'A1' AND FL10.FLLOTNBR = SALLSTDM.SLLOTNBR ) WHERE 1=1 AND SALLSTDM.SLYRDNBR not in(450,451,452)

Now, I actually think the WTF is the code that generates this query, but Brian didn't send us that. Maybe Brian doesn't even know where that is. But for some reason, this query joins back to the LOTFILFL table ten times. It's the same condition, and it's inner joins, so this isn't going to affect the count(*) of the table.

In an ideal world, someone would track down the source of the query, drag it out behind the barn and be done with it. But we don't live in that world- instead, somebody from Brian's database team gets called outside of regular hours every time this query runs. Sometimes that's once a week. Sometimes that's three or four times a day. No one is empowered to fix it or address the root cause, so it just sits there, festering.

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

CodeSOD: Mostly Okay

By Remy Porter

Taffer is the team lead on a team making security products. As such, they have very strict policies about how they write their code, they have very thorough code review systems, and they also have automated tests for everything.

And yet, things can still slip through.

Taffer submitted this change. It passed two code reviews. It didn't cause any unit tests to fail. It made it into the main branch, and sat there for two months. A team of very experienced, very senior developers didn't catch this glitch until a new hire happened to notice it during a review for something else.

status_t retval = internal_check_struct_integrity(input_struct); if (retval != OK) { return OK; }

It's a simple mistake to make, and would hopefully be a simple mistake to catch, but alas, it turned out to be hard. Obviously, if the integrity check fails, we don't want to return OK.

It's not all bad. It never made it into a released product, and it has additional benefits, as Taffer explains:

On the plus side, we have a great example of "anyone can make mistakes" to show new hires and interns when we're introducing them to our code review regime.

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

CodeSOD: onFunctionCall

By Remy Porter

Annalise has a pile of… unfortunate JavaScript. It's thousands of files with no real organization or logic behind their organization. It's got so much tech debt that it takes a full time developer just to keep it running, let alone provide support or add features or fix bugs. And the backlog of features and bugs is so long that it's best described in terms of א.

Which is to say, there's a lot in there that nobody understands. So when you see a bunch of callbacks registered to onFunctionCall, you might assume that this handler is doing… something. You'd be wrong.

onFunctionCall(varA, varB){ for (let i = 0; i < varA.length; i++){ if (varA.condition){ if (varA.field[i][varB.attr] == varB.id){ let temp = varA.field[i]; } } } }

This… doesn't do anything. It has no purpose or point. And yet, it's sitting in this giant pile of code, registered as a callback in all sorts of cases, because someone felt like it must be important. It is not.

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

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.

Mayday

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])

 

Cadillac
 

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.

 
  


Cheers!


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!

By [email protected] (Jon North)


After a beautifully sunny start to June, his week in Lunel has turned muggy and grey.  Little rain though, despite rain and storms all round us.

The blog is back. Not really a break but a lazy delay in putting together this next post.  That means there are plenty of pictures to share, and the news here is that we have a new garden shed - our friendly workman M. Beaumann is just finishing the concrete floor as I write.

The first pic shows the old and very ramshackle shed, which lasted nearly 15 years.  You can see the tortoise in front of her little shelter in the second photo


Last week we paid a welcome visit to our friends Nigel & Elizabeth near Narbonne.  Four sets of photos, one of the river Aude near their house, seen during our dog walks, and three others at Narbo Via, the new and impressive Norman Foster museum on the outskirts of Narbonne.  This town was the commercial centre of the Roman empire in France, but without the monumental buildings of Nîmes or Arles.  So the remains had to be reassembled from the later buildings into which they'd been incorporated, and the main display is a kind of giant library of stone carvings.  Foster, we think, has done France proud!




This summer the town has come to life a bit more with brightly coloured animal sculptures


Finally the garden continues to provide colour and interest - this time from lilies and (ornamental) pomegranates as well as ever-changing light on our own sculptures.



A month of holidays

By [email protected] (Jon North)


I begin this blog with a boast about our wonderful daughter-in-law Fi, who has just been awarded an honorary doctorate by Keele University.  Here's the announcement, excellent news for the theatre too because her colleague Theresa also received an award as you can see.  The New Vic has just reopened after a long layoff - in France too, culture and arts are tentatively coming back to life, and choral singing is not lagging behind - we hear that in England it has still been singled out as especially risky

May in France is, it seems, stuffed with holidays.  It is not the first time I've commented that many of these are Catholica, Christian, religious festivals - as I write this Monday afternoon we have the Pentecôte holiday, what in England would be called Whit Monday.  Years ago when our new library, the médiatheèque, opened to fanfares (rightly) and soon afterwards the town announced that it would be open on the first Sunday of each month.  That year, the first one, the first Sunday of April was April, was Easter Sunday and - guess what - the Library was closed!  France will continue to honour its Catholic heritage but inconsistently refuses to acknowledge equally other religions such as Islam.

I was intrigued this week by this piece by Duncan Campbell about Bow Street on its final day as a functioning court.  On that day in 2006 he was a member of the press bench  "I still have my pass). A young woman, arrested for posting advertisements for sex workers in telephone boxes, was given a conditional discharge and ordered to surrender her Blu Tack. A businessman facing extradition to Germany for a £14 million fraud case was remanded in custody. Two Kosovans were accused of paying £4000 to buy a Moldovan woman from an Albanian gang in a deal agreed in a pod on the London Eye. They denied forcing her into the sex trade but were rejected for bail because false documents had been found at their home. A young Londoner who had stuffed £200 worth of Marks & Spencer lingerie down his trousers was remanded for reports.  At last, the list-caller, Angela Georgiou, told the magistrate, Timothy Workman: ‘With sadness, I call your last case ever at Bow Street, sir.’ The honour fell to a 32-year-old Scot from Kirkcaldy, who had breached an Asbo (Anti-Social Behaviour Order) – he was found in possession of a bottle of red wine and some lighter fluid – and little knew that the hand of history had landed on his collar the previous night in the Covent Garden piazza. It was his fifth visit to the court and he pleaded guilty. ‘The closure of the court, with its great legal heritage and its history,’ Workman said, ‘is of great sadness to me and to all who are associated with this court.’ He was the 33rd chief magistrate, a role once held by Henry Fielding, who presided over the first detective force, the Bow Street Runners."  All that was happening the same year, 2006, as we moved to France.

I read a lot, and am frequently caught up in discussions about tablet (Kindle or iPad - I have both) vs the traditional book.  Lots of things jostle for importance in my mind.  Librarians like me were constantly surrounded by books, arranging them on shelves and keeping them by the bed or armchair.  I love our shelves of books, and know most of them pretty well.  So although the electronic formats are less evocative, but more practical for two reasons.  One is often the sheer size and weight: reading in bed holding a large heavy hardback is a struggle, but my Kindle has one other advantage I've come to appreciate reading in French - I can click on a word I don't know and find its translation instantly.  And since we are now of an age when we have to start thinking of downsizing, getting rid of many metres of shelves may in future be a necessity though not yet!  The seemingly limitless capacity of a little Kindle to hold a library of books, and its ability to search for characters whose identity has been forgotten, are great assets.  And, living in France, our regular periodicals like The Week and The London Review of Books arrive right on time.  Mary nevertheless prefers to wait for the paper versions a few weeks later!

We are constantly reminded of litter and waste.  As a dog-walker I  see the endless trail of muck and litter (and of course picking up our own) on the daily trips round the neighbourhood; and of course we have to keep track of regular council rubbish collections, feeling pleased that our own local refuse service has widened out its plastics recycling service, but at the same time wary that we don't really know what happens to the sorted plastics, tin cans and card we throw away.  There is a relatively new, large incinerator in the next village, not at all liked by people living there but clearly it has to be kept busy so one always wonders if some of our waste is not recycled but burnt.  All the same our local authority makes big efforts to encourage us to recycle and has special collections for metal and large electronic items etc - our old computer printer has to be disposed of soon.  And also, the local paper is regularly full of stories and pictures of fly tipping in town centres.  Not a simple process to manage either for us or for the authorities.

My next blog will include a tour of the garden, much changed since our arrival 15 years ago.  The photos each time often chart its simple pleasures, and in the glorious weather we've been having it is a constant joy to watch things growing and glowing.



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.

Foyer

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.”)

Dining

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:

Kitchen

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!”

Office

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.

Kitchen

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.)

bedroom

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.

pool

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.

Behold.

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?

Kitchen

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.

WARNING: SICKO ZONE AHEAD

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.”

Enjoy!

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.

Kitchen

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

Landing

(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.

Basement

(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.

Kitchen

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

Ok I changed my mind. WHERE IS THE POOL. WHERE DID THEY FIT THE POOL IN ALL THIS. 

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 

MEANWHILE:

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. 

Kitchen

“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. 

Bathroom

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

Bedroom 2

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

Sunroom

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.]

Underground

image

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.

image

“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.

image

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.  

image

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.

We Interrupt This Broadcast to Bring You an Especially Cursed House

Hello everyone. Originally, this post was supposed to be devoted to the year 1978, however something came up, and by something, I mean this 2.2 million-dollar, 5,420 sq ft 4 bed/4.5 bath house in Colt’s Neck, NJ. 

You see, usually, when a listing goes viral, I’m content to simply retweet it with a pithy comment, but this house genuinely shook something in me, genuinely made me say “what the (expletive)” out loud. It is only fair to inflict this same suffering onto all of you, hence, without further ado: 

Looks normal, right? Looks like the same low-brow New Jersey McMansion we’re all expecting, right? Oh, oh dear, you couldn’t be more wrong

Guess who’s making a list and checking it twice? 

Guess who’s gonna find out who’s naughty or nice?

Guess who’s coming to town? 

Guess who’s coming to town to drag your ass into hell?

A gentle reminder that it is not yet Thanksgiving. 

But oh. Oh. It continues:

If you’re wondering what’s happening here, you’re not alone, and sadly there is no convenient way to find out via a kind of haunted house hotline or something. 

I can’t even label these rooms because frankly I’m not even sure what they are. All I am sure of is that I want out of them as soon as humanly possible. 

r̸̘̆e̴̝̻̽m̵̡̼̚ȩ̵͑̎ͅm̷͍̮̉b̸̥̈e̶̯̺̽͗r̸̝͊͠ ̸̡͎̅̀t̴̯̲̓ȯ̷̮̫ ̷̜̅̀ŵ̶̟̱ā̴̭̘s̸̥͋h̴͉̿ ̵̡̑y̸̩͈͑o̷̹̭͛͝ů̷̩̮̔r̶̜̃ ̴̠̗͋ẖ̴̈́͛a̸̢̟̐͒n̶̩̟̆ḍ̵̍̀s̴̨̈́

How is it that a room can simultaneously threaten, frighten, and haunt me? Me, of all people!

My eyes do not know where to go here. They go to the window, they go to the fireplace, they go to the massive mound of fake plant and statuary currently gorging on the leftmost corner of the room, they go to my hands, which are shaking. 

“Hello, I would like to get in touch with the Ministry of Vibes? Yes, I’ll hold.” 

I haven’t been this afraid of a shower since I went to Girl Scout camp in the fifth grade and there was a brown recluse spider in the camp shower and I screamed until the counselor came in and told me it was only a wolf spider but it turns out those still bite you and it hurts

I love watching Still Images on my Television Set :)

Nobody make a sound. He’s watching you. 

i spy with my evil eye:

:)

Their souls are trapped in these photographs forever :)

Okay, phew, we made it out alive. Here’s the back of the house I guess. 

Well, I hope you’re as thoroughly disturbed as I am. Seriously, I’m going to have trouble sleeping. I mean, I already have trouble sleeping, but this is just making that existing problem so much worse. 

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! (Tips are much appreciated since I am making a cross country move in two weeks!!!)

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