50 States of McMansion Hell: Fairfax and Loudoun County, Virginia

Howdy folks! This post has been months in the making. Scouring the hell that is the McMansion Trenches of Virginia for only the best (worst) houses for your viewing pleasure generated some truly awful contenders. Of all the counties in Virginia, it was the wealthiest DC suburban counties of Fairfax and Loudoun that delivered. I won’t leave you hanging longer than I already have, so without further ado, the countdown:

#10: The Trellis Terror (Loudoun County)

The scrunched up piles of roof and narrow windows are a casualty of trying to squeeze the biggest possible house complete with not one but two garages into the smallest imaginable lot. The second story over-the-garage trellis aims to invoke the Tuscan countryside, but ends up looking like a bad strip mall Olive Garden instead. 

#9: Tricorn Turret (Loudoun County)

The consistency of cladding materials and window shapes make this house more well put-together than most McMansions. However it made the list for obvious reasons: a substantial and precipitous roofline, a rare triple turret dormer assembly, and that bizarre skeletal stone porch thing transform this house from country estate to ridiculous Hummer house. 

#8: Fort Void (Loudoun County)

Usually the problem of McMansions is too many large windows, in this case it’s too many small windows, all of them different from one another as if this house was just a front for the Pella Window showroom. The monotonous brick swallows the windows giving the house a fortress-y aura. The juxtaposition of pastoral rolling farmland with an equally ugly house right next door is particularly choice. 

#7: Mt. Nub’s Revenge (Loudoun County)

This house is a perfect example of how, even when they try really really hard, McMansions are incapable of symmetry. The more you look at this house the more “spot the difference” elements you find: the weird short colonnade vs the five-bay picture window; the length of the two wings, the roofline of the right wing is for some reason broken up because God is dead. And then there’s that nub. 

#6: Sticker Shock (Loudoun County)

This robust residence is absolutely chaotic. No two gables are the same. Stone is applied liberally and without logical consistency. Gutters trail down columns and crevices. Every window antagonizes its neighbor. The only thing over which any control has been exerted is nature itself, repressed and dominated by a monocultural expanse of grass. Normally I am not so blunt, but I will be today: I hate this house. 

#5: Chonky Corinthian

There is a certain type of house that is very popular in Fairfax County. It consists of a hulking range of hipped roofs punctured by a central (?) portico supported by columns that can only be described as thicc. This is one of these houses. The people who built this house could not decide when they were done building it. One can only assume that the myriad plans for this house were saved with file names like “House″ “House 2″ “House 2 final” “House 2 final final” “House 2 FINAL FINAL FOR REAL THIS TIME” 

#4: Mad Hatter (Fairfax County)

First of all, this home is way too long. It just keeps going. It’s like six different houses stitched together. Roofs begin and end. Porches come and go. Two stories somehow transform into one. By the time the eye reaches the front entrance, one is already exhausted. Finally, whoever decided to take the phrase “nesting gables” and apply it in this way deserves a trial at the Hague. 

#3: Tragic “Tudor” (Fairfax County)

This is the house equivalent of an identity crisis. Elements of French, English, and Donald Trump commingle to produce a truly formidable facade. All of the landscaping choices in this post are sad, but this house takes the cake for most depressing scenery, and not just because it was photographed in winter. Stubby shrubs appear to be gasping for breath, what trees exist are mere, unstable sticks; beside the pergola, a fallen cypress. 

#2: Foaming at the Mouth (Fairfax County)

This is a classic McMansion: it does its best to look dignified and imposing and instead appears cartoonish and cheap. Every element of this house except perhaps the wooden door is derived from petroleum products. The massive transom screams “climate denialism.” The grand entrance is overdone and top-heavy to the point of parody. In short: I hope this house melts. 

#1: Brick Behemoth 

If you combine all of the insipid elements of the other houses: mismatched windows; massive, chaotic rooflines; weird asphalt donut landscaping; pompous entrances, and tacked on masses; you’d get this house. The more one looks at this house the more upsetting it becomes. The turrets don’t match. The roofline is truly mountainous. The windows are either too small or too big for the walls they are housed in. The carhole is especially car hole-y. What sends this one over the top is its surroundings: lush trees and clear skies that have been desecrated in order to build absolute garbage. At least it doesn’t have shutters. 

Well, that’s it for Virginia! Stay tuned for another installment of “The Brutalism Post” - this time about what Brutalism actually is. 

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 Week, Crowdcast streaming, and bonus essays!

Not into recurring donations or bonus content? Consider the tip jar! Or, Check out the McMansion Hell Store! Proceeds from the store help protect great buildings from the wrecking ball.

Copyright Disclaimer: All photographs are used in this post under fair use for the purposes of education, satire, and parody, consistent with 17 USC §107. Manipulated photos are considered derivative work and are Copyright © 2019 McMansion Hell. Please email kate@mcmansionhell.com before using these images on another site. (am v chill about this)

Class of 2020: How Kate Wagner Is Making Everyone Question Everything About DesignHowdy!! I’m...

Howdy!! I’m very pleased to announce that Apartment Therapy has included me in their Class of 2020 Design Change Makers!

The Brutalism Post, Part 2: What Brutalism is Not

Why open a series about Brutalism by discussing what is not Brutalism? The answer is simple: of all of the terms in the history of architecture, Brutalism is perhaps the most misused and misunderstood by the general public. 

Pictured: Citizens Bank Tower, 1958-66. Not Brutalism (it’s just plain ol’ International Style modernism). Source

The main issue here, as we will discuss later, is not that people are ignorant for using the wrong definition of the word Brutalism, but that the word Brutalism has come to mean or refer to a variety of architectural phenomena that are linked to one another via overarching similarities, the most important being an expanded set of buildings that elicit a specific emotional response in the viewer.  

“Brutalism”, a specific architectural movement with its own ideology and history, has come to encompass a wide range of colloquial meanings. Some of these meanings are common misconceptions that reflect a need for broader architectural education (the purpose of this series), and some of these meanings reflect a deeper, more philosophical, interrogation into how we perceive and discuss architecture and the complex emotions it arouses within us, exposing a need for new means of communicating a common architectural sentiment

Let’s start with the most common misuse of the term. 

Brutalism is not: every single building made primarily of reinforced concrete. 

Blame this one on the dictionary. The term Brutalism, while being derived from the French term beton brut, meaning raw concrete, does not apply to all buildings made from reinforced concrete. Developed in the 1870s, reinforced concrete is one of the most commonly used building materials in the world. Because of its inexpensive price, its structural integrity, and its ability to be cast into a variety of shapes and forms, many buildings were - and continue to be - made from it. 

Let’s look at three examples of buildings I have found labeled “brutalist” in various places. 

Not Brutalism: (from left to right): Tadao Ando, Vitra Conference Center (1993) Photo by Wojtek Gurak (CC BY NC 2.0); Le Corbusier, Villa Savoye (1929) Photo by Scarlet Green (CC BY 2.0); Albert Kahn, Highland Park Ford Factory (1910) Photo by Thomas Hawk (CC BY NC 2.0)

All of these buildings are constructed primarily from reinforced concrete. As you can see, they are all very, very different from one another. In these three cases, the key piece of information discrediting these buildings as being Brutalist is when they were built. Brutalism was a specific architectural movement from spanning a defined period of time (1940s-late 1970s). Buildings constructed outside of this time window are rather unlikely to be Brutalist

Let’s look at why these buildings might be mislabeled brutalist. 

Our first example is the Vitra Conference Center by Tadao Ando, which was built in 1993. Even though 1993 is far outside the time frame that brutalism spanned, this building has many characteristics that are “brutalistic,” specifically its extensive use of unpainted reinforced concrete, its heavy, geometric massing, and its intense visual weight. Ando’s architecture falls under the term “critical regionalism” - which is best understood as being modern in form (but not in dogma), with a heightened focus on the surrounding ecology and landscape as well as other geographical, cultural, and social contexts.  

The Villa Savoye by Le Corbusier, finished in 1929, is one of the most iconic 20th century houses and works of modernist architecture in the world. This house, though made of reinforced concrete, belongs to the movement known as the International Style, which was developed in Western Europe after World War I, is known for its rejection of ornament, flat surfaces (especially roofs), extensive use of glass, and visually lightweight and repetitive forms. While the International Style makes use of concrete, it differs from Brutalism in its visual lightness - the Villa Savoye seems to float effortlessly above the landscape - very unlike Brutalist architecture, which is characterized by its massive scale, hulking forms and visual heaviness. 

The Highland Park Ford Plant, built in 1910 by noted factory architect Albert Kahn, was once the premiere factory building in America, helping to advance not only the Fordist system, but the city of Detroit, Michigan as being the automobile capital of the world. It is a touchstone of factory design, notable for its pioneering use of the assembly line to facilitate mass production, a concept that remains central to factory design today. Although made of reinforced concrete, the Highland Park plant is not a brutalist building. It frequently is mischaracterized as being brutalist because of its massive side, imposing features, and the close association that has developed between brutalist architecture and urban exploration photography (More on this later). 

TL;DR: All brutalist buildings are made of reinforced concrete (or heavy masonry), but not all reinforced concrete buildings are brutalist. Moving on.

Brutalism is not a catch-all term for Late Modernist architecture

Architecture got so weird and complicated in the period from the 1960s through the early 1980s that it inspired the architectural theorist Charles Jencks to create the first of several delightful and mind-bending charts to try and categorize it: 


What is Late Modernism? The concise definition is that it is an umbrella term encompassing the various architectural movements that transpired after International Style/Mid-Century Modernism but before Postmodernism. (For more on what Late Modernism is and why you should care, see my post from 2016.) Brutalism elides with Late Modernism, but not all Late Modern buildings are Brutalist. Because Brutalism is contemporaneous with Late Modernism, the distinction can be confusing. Often the case is that Late Modern buildings that are described as ‘Brutalist’ should be recategorized or reassigned to a different, equally obscure and hyper-specific architectural sub-movement happening around the same time. This might seem nitpicky, but look on the bright side: now you get to correct your friends. 

Late Modernism encompassed a lot of smaller architectural movements, most, but not all of them ending in -ism. Some, like Brutalism and High Tech, are more well known; others, like Metabolism, Structuralism, Critical Realism, and Neo-expressionism, not so much. Some buildings don’t fit into any of these categories and must (frustratingly) be referred to as simply “Late Modern” or “Transitional” (referring to the transition from Modernism to Postmodernism.) 

Here are three Late Modern buildings that are not Brutalist:

Left: Richard Rogers, Lloyd’s Building (1986) Photo by Lloyd’s Insurance (CC BY 2.5); Top Right: Kisho Kurakawa Nakagin Capsule Tower (1972) Photo by scarletgreen (CC BY 2.0); Bottom Right: Herman Hertzberger, Centraal Baheer (1972) Photo by Apdency (CC BY-SA 3.0) 

Lloyd’s Building, the headquarters of Lloyd’s of London, located in, unsurprisingly, London, was designed by Richard Rogers and completed in 1986. Despite the relative lack of reinforced concrete, the building is frequently categorized as being Brutalist. The fact that it lacks reinforced concrete as a defining architectural feature is all one needs to eliminate Lloyd’s from the Brutalism category - why it is put there in the first place we will discuss more in depth in the next section of this post. Lloyd’s - along with most of Rogers’ work - is part of the architectural movement known as “High Tech” because it is, well, High Tech. 

High Tech buildings are the apogee of the modernist mindset in terms of glorifying the functions of a building and the technological elements of structural engineering. They take what are usually internal systems such as structural frames, circulation systems (such as stairs and elevators) and services (electrical, plumbing, etc) and integrate them into their external architectural form. (Lloyd’s is colloquially known by Londoners as the “inside out building”). High Tech was relatively short lived because it turns out that when you decorate the outside of your building with its internal services, when winter comes, your water pipes, exposed to the elements, tend to freeze. 

The Nakagin Capsule Tower, built in 1972 by Japanese architect Kisho Kurakawa (one of my favorite architects ever who more people should know about), is one of the buildings most commonly labeled as Brutalist. This building illustrates the gray area that arises when one uses vague aesthetic attributes (concrete, visually heavy, geometric massing) to designate a building as Brutalist instead of the actual history and context of the building in question. The Nakagin Capsule Tower belongs to a different (if coexistent) architectural movement that, frankly is a lot weirder than Brutalism: Metabolism. Take the formal concept of organic biological growth and systems and combine it with the urbanistic concept of megastructures (an entire city contained in a single continuous structure or via several interconnecting structures) and you get Metabolism. Because of the practical issues with building an entire city within a single building, Metabolism lived mostly on paper, however a few built examples were executed, the most famous being the Nakagin Capsule Tower. 

The Centraal Baheer office building was built by Dutch architect Herman Hertzberger in 1972. Like the Nakagin Capsule Tower, it satisfies many of the aesthetic signifiers commonly attributed to Brutalism: it’s made of reinforced concrete, composed of large geometric massing, and it’s visually heavy. Also like the Nakagin Capsule Tower, it belongs to a different, coexisting architectural movement, primarily developed by the Dutch, called Structuralism. Structuralism is a complex set of architectural ideologies developed in the 1960s and 70s, centered around a few key concepts: the rationalist idea that people’s behavior can be directly changed (or manipulated) via design; designing built structures that correspond in form to social structures; an emphasis on cultural and geographical context; an urbanism and design approach based, like Metabolism, on a biological growth analogy (called Aesthetics of Number); the integration of a variety of uses and programs within the same overall structure; and, finally, the aim to architecturally reconcile the needs of both “high” and “low” culture. 

Brutalism, Metabolism, and Structuralism arose from a similar origin, and are ideologically more alike than different, something we will talk about in the next installment of this series. 

Brutalism is not a feeling. 

But also, it kind of is. It is, as the folks say, “a big mood.” A large reason why buildings are incorrectly labeled Brutalist is because they bring forth a very specific emotional response to architecture shared by many people across the world. Some of the buildings that cause people to feel this complex and nuanced set of emotional and aesthetic reactions are, in fact, Brutalist, but many are not. To me, what this demonstrates, is a broader need for architectural education and discourse that goes beyond the most common system for classifying architecture: stylistic labels. 

To talk about this, we’ll bring back Lloyd’s Building, Kahn’s factory and present it alongside a few other examples. 

Left to Right: John M Johanson, Stage Center Oklahoma City (1979) Photographer unknown; Yuri Platonov, Russian Academy of Sciences (1968) Photo by Raita (CC BY 2.0); Boris Magasto, Haludovo Hotel, Krk, Croatia (1972) Photographer unknown; Kevin Roche, The Pyramids (1972) Photo by jikatu (CC BY SA 2.0)

All of these buildings (and all of the photographs of these buildings) are very different from one another, and yet, they have all been classified mistakenly as being “Brutalism.” The only real link between them is emotion. 

Like many folks in the late aughts/early 2010s, I nurtured my then-juvenile love of architecture through spending hours lurking in the Skyscraper City forums looking at thread after thread of pictures of 20th century architecture. Why? Because those images made me feel powerful emotions that I still find difficult to put into words. 

When talking about Brutalism as a feeling, perhaps the closest idea comes from the English philosopher Edmund Burke in his 1756 treatise “A Philosophical Enquiry into the Origin of our Ideas of the Sublime and Beautiful”. I am, of course, talking about the sublime. The Burkean sublime is emotionally complex. To quote Burke directly: 

“Whatever is fitted in any sort to excite the ideas of pain, and danger, that is to say, whatever is in any sort terrible, or is conversant about terrible objects, or operates in a manner analogous to terror, is a source of the sublime; that is, it is productive of the strongest emotion which the mind is capable of feeling.”

But the sublime isn’t just negative. It overwhelms us with its awesome power and in this moment, “the mind is so entirely filled with its object, that it cannot entertain another.” Burke’s concept of the sublime was initially applied to such things as the ocean or the Alps - natural features that are so large, massive, and inherently dangerous that they put us in a state of awe-inspiring disbelief - and yet, and despite their mass and their danger, they give us feelings of deep pleasure and joy

To the people (including myself) who love Brutalism - it does engender feelings of unknowing, of mystery, and sometimes, especially when said Brutalist building is in disrepair or photographed at a particularly menacing angle, of fear or grief. It shares this, rather than a stylistic label, with the buildings featured in this post. 

Because of Brutalism’s association with the State, such as in the case of the former Soviet Bloc, East Germany, the welfare state in England, or its use in governmental buildings around the world, lingering political sentiments can also contribute to this complex mix of emotions - whether one longs for the halcyon days of eras past or fears them as being domineering or totalitarian. It can also cause people to associate buildings that are not Brutalist with buildings that are because they share a same political history. Similar to how the post-industrial society left behind a trail of industrial ruins along the American Rust Belt, so too has neoliberalism gutted and left for dead the monuments of these modernist utopias. 

An actual Brutalist building: Paul Rudolph, Endo Laboratories Headquarters (1964). Photo via Library of Congress

Brutalist or not, these are enigmatic buildings - their forms are strange and unusual, alien even; their contents and even their purposes remain mysterious. Their siting makes them seem either imposing relative to their surroundings or isolated and alone. There is something dark and lonely, sad and longing about them. They are beautiful, partially because of their striking, form-bending architecture, and partially because they once lived different lives in times so unlike ours. 

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 Week, Crowdcast streaming, and bonus essays!

Not into recurring donations or bonus content? Consider the tip jar! Or, Check out the McMansion Hell Store! Proceeds from the store help protect great buildings from the wrecking ball. 

Copyright Disclaimer: All photographs are used in this post under fair use for the purposes of education, satire, and parody, consistent with 17 USC §107. Manipulated photos are considered derivative work and are Copyright © 2019 McMansion Hell. Please email kate@mcmansionhell.com before using these images on another site. (am v chill about this)

important announcement

i met the lawyer to my foyer
the nub to my roofline
the car to my carhole…
what i’m trying to say is i’m engaged now

edit: we will not be buying a mcmansion for obvious reasons but if you’re feeling the love tonight, you can donate a coffee to the kate wagner & partner tiny and modest wedding fund: www.ko-fi.com/mcmansionhell ! 

(i’m a writer and he’s a high school math teacher so we could use all the help we can get.)

50 States of McMansion Hell: Campbell County, Wyoming

Howdy, folks! It’s time for us to go home, (big, ugly) home on the range. That’s right: It’s time for Wyoming. Now, when I think Wyoming, I think of rolling hills, ranches, incredible landscapes, and also that book about cowgirls that Dick Cheney’s wife wrote.

On that note:

This beautiful 5 bed/4.5 bath 6,000 square foot house was built in 2002. It can be all yours for around $700,000 USD.

Let’s mosey on down through this here estate.

Divorce Lawyer Foyer/Living Room

Now, I’ve been an architecture enthusiast for about a decade of my short, two and a half decade life and never have I seen something as both absurd and patently useless as whatever the hell that thing separating the foyer and the living room is. Does it have a structural purpose? No. Does it have an aesthetic purpose? Also no.


(Running for president voice) “Folks, when I become president, I assure you that the injustice - the absolute tyranny -  that is the island stovetop/wall oven combo will finally–” (crowd cheering) “– and I mean finally, be put deep into the ground where it belongs.”

Dining Room

The aged bronze chandeliers must have been on ultra clearance. Personally, as someone who loves a good deal, I cannot shame them for this.

Master Bedroom

What I can’t determine is what they were going for with the sponge paint on the walls. My closest approximation is tree bark, in which case what we see before us in fact is deeply offensive to the trees, who are innocent and don’t deserved to be involved in any of this.

Master Bathroom

I don’t care how nostalgic we as a culture get for the late nineties/early aughts, sponge paint should never come back. One, it’s sponge paint. Two, it is ridiculously labor intensive and frankly we could all be spending our last few years on this still-habitable earth doing something more worthwhile with our time, such as going outside or falling in love or destroying our brains on the internet.

You are seriously not ready for this

When making this picture I realized I desperately need to log off.

Bathroom 2

Computer, enhance.

Ok but you can’t even read that in the shower. If you’re that desperate for prophetic, non-digital bathroom reading material, buy a bottle of Dr. Bronners or, like, a copy of War and Peace.


Poor Little Julie. :(

Well, that wraps up our interior. Now, for the final frontier, on the frontier:

Rear Exterior

Somehow this house looks more like it’s made out of cardboard than the many, many houses on this blog that also look like they’re made out of cardboard.

Anyways, that does it for Wyoming! Stay tuned for next week’s Brutalism Post, Part II: What Brutalism is Not. Have a great weekend, folks.

If you like this post, and want to see more like it, consider supporting me on Patreon, ESPECIALLY if you also like donoteat01′s content on YouTube, because we will be doing a livestream collab on Patreon on August 25th, 2019 from 8-10PM EST!!!

There is a whole new slate of Patreon rewards, including Good House of the Week, Crowdcast streaming, and bonus essays!

Not into recurring donations or bonus content? Consider the tip jar! Or,Check out the McMansion Hell Store ! 100% of the proceeds from the McMansion Hell store go to charity!

Copyright Disclaimer: All photographs are used in this post under fair use for the purposes of education, satire, and parody, consistent with 17 USC §107. Manipulated photos are considered derivative work and are Copyright © 2019 McMansion Hell. Please email kate@mcmansionhell.com before using these images on another site. (am v chill about this)

Kate Wagner - McMansion Hell Live at Motorco!

Kate Wagner - McMansion Hell Live at Motorco!:

Howdy folks! If you’re in the NC area next Tuesday, come and see me talk about McMansions as well as do a live house roast at Motorco in Durham. The ticket sales go to fund NC Modernist Houses, a nonprofit that works to preserve the heritage of architectural modernism in North Carolina. 

When: Tuesday, July 23, 6pm

Where: Motorco, 723 Rigsbee Avenue, Durham

Tickets: Advance - $29
At the door - $39
VIP - $99
(you get to throw axes at pictures of McMansions with me afterward lol)

See y’all there! 

The Brutalism Post, Part One: Introduction

This is part one of a five-part post about Brutalism. 

University of Massachusetts at Dartmouth campus by Paul Rudolph. Photo via Library of Congress

No style of architecture so passionately divides even the most good-natured and level-headed people as Brutalism. The discourse surrounding Brutalism being “good” or “bad” is fierce and polemical. The “for” crowd lobbies on both aesthetic grounds – posting pictures of incredible and obscure structures and saying “I mean LOOK at this” – as well as political ones, citing in particular, how Brutalism was used to house thousands of people during the postwar period. 

On the other hand, the “against” crowd brings up the failed urbanism of Le Corbusier that gave us the freeways and slum clearance that split and displaced entire swaths of city fabric, proclaiming that only architects or architecture enthusiasts like Brutalism, and that this is a testament to how out of touch they are with everyday people. “If you had to live or work in these buildings,” they say, “you’d feel differently.” 

Unité d'Habitation by Le Corbusier. Photo by Thomas Nemeskeri, via Flickr (CC BY-NC-ND 2.0) 

I’ve been a spectator to this debate since I first lurked in the Skyscraper City forums as a high school freshman, ten years ago, when Brutalism itself sparked the interest in architecture that brings me here today. I have, as they say, heard both sides, and when asked to pick one, my response is unsatisfying. Though my personal aesthetic tastes fall on the side of “Brutalism is good,” I think the actual answer is  it’s deeply, deeply complicated. 

Still, what is it about Brutalism that makes it so divisive? Why does a short-lived substyle of modern architecture elicit such vehement passion in so many people? What does it even mean for a style of architecture to be “good” or “bad”? You can see why I’m drawn to finally sitting down and penning this series, which has been simmering at the back of my mind since I started McMansion Hell three years ago. (By the way, Happy Birthday to this blog!!!) 

Brutalism has a special way of inspiring us to ask big and difficult questions about architecture. “Is Brutalism good?” is really a question of “is any kind of architecture good?” - is architecture itself good? And what do we mean by good? Are we talking about mere aesthetic merits? Or is it more whether or not a given work of architecture satisfies the purpose for which it was built? Can architecture be morally good? Is there a right or wrong way to make, or interpret, a building? 

Ferrier Estate, a now-demolished social housing complex in South London. Photo by Tim Slessor via Flickr (CC BY-NC 2.0)  

I have bad news for you: the answers to all of these questions are complicated, nuanced, and unsatisfying. In today’s polemical and deeply divided world of woke and cancelled, nuance has gotten a bad rap, having been frequently misused by those acting in bad faith to create blurred lines in situations where answers to questions of morality are, in reality, crystal clear. This is not my intention here. 

For centuries, the philosophical discipline of aesthetics has tried in vain to articulate some kind of clearly defined standard by which we can delineate whether or not a work of art is good, bad, moral or amoral. Architecture makes this even more complicated because unlike literature, painting, music, or art, we have to live, work, and exist in architecture. Not only does the question of whether or not we can separate the art from the artist exist in architecture, so to do questions of whether or not we can separate the building from the politics, from the culture, from the time period, from the urbanism, from the socioeconomic system, from the entire contents of everyday life in which it exists. 

Orange County Government Center, Perspective Drawing, by Paul Rudolph. Photo via the Library of Congress.

Existential questions aside, there are other reasons to write about Brutalism. First, while we’ve been hemming and hawing about it online, we’ve lost priceless examples of the style to either demolition or cannibalistic renovation, including Paul Rudolph’s elegant Orange County Government Center, Bertrand Goldberg’s dynamic Prentice Women’s Hospital in Chicago, and the iconic Trinity Square, Gateshead complex, famous for the role it played in the movie Get Carter. My hope is that by bringing up the nuances of Brutalism before a broad and diverse audience, other buildings on the chopping block might be spared. 

On an even broader note, I think Brutalism is worth writing about simply because a lot of people are rightly confused as to what it even is.  The common practice of identifying Brutalism by the presence of a material - reinforced concrete - too broadly defines a style that belongs to a specific era and architectural praxis. There are so many buildings and styles called Brutalist that are not Brutalist that I’ve devoted the first two installments of this series to the subject “What Brutalism Is Not,” followed, of course, by “What is Brutalism?” The goal is that these two essays will be educational and interesting (with the added bonus of providing the reader with an arsenal of information that will make them as insufferable at dinner parties as I am.)

The third part in this series is devoted to the people of Brutalism - the architects, politicians, planners, writers, and philosophers, who signed their names to an architectural movement that spanned the globe. Finally, the last installment gathers all this information together and answers the question we’ve all been waiting for: is Brutalism good? 

The Kyoto International Conference Center, designed by Sachio Otani. Photo by Chris Guy, via Flickr. (CC BY-NC-ND 2.0) 

This is a series on Brutalism, but Brutalism itself demands a level of inquiry that goes beyond defining a style. Really, this is a series about architecture, and its relationship to the world in which it exists. Architects, as workers, artists, and ideologues, may dream up a building on paper and, with the help of laborers, erect it in the material world, but this is only the first part of the story. The rest is written by us, the people who interact with architecture as shelter; as monetary, cultural, and political capital; as labor; as an art; and, most broadly, as that which makes up the backdrop of our beautiful, complicated human lives. 

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 Week, Crowdcast streaming, and bonus essays!

Not into recurring donations or bonus content? Consider the tip jar! Or,Check out the McMansion Hell Store ! 100% of the proceeds from the McMansion Hell store go to charity!

Copyright Disclaimer: All photographs are used in this post under fair use for the purposes of education, satire, and parody, consistent with 17 USC §107. Manipulated photos are considered derivative work and are Copyright © 2019 McMansion Hell. Please email kate@mcmansionhell.com before using these images on another site. (am v chill about this)

50 States of McMansion Hell: Top 10 Waukesha County, Wisconsin McMansions

Howdy Folks! We’re continuing our out-of-order-for-dramatic-effect tour of the 50 States of McMansion Hell today with perhaps one of the most underrated McMansion counties in the country: Waukesha County, Wisconsin. These houses were so bizarre it was hard to choose just one to do a takedown of. So, without further ado… 

#10: Doom McGloom

This 2002 estate, thanks to the clever machinations of whoever took these photographs, looks less like an enticing investment property and more like a prime candidate for the Chernobyl ripoff set in America that has 2 stars and is only available on Amazon Prime. 

#9: Headquarters of Tree-Haters Anonymous

This 2004 manse is $1.4 million dollars and yet its creators couldn’t afford more than a single (invasive!) tree. I don’t know what kind of sociopath wakes up in the morning and actively hates everything taller than a malnourished shrub. Whoever they are, this is certainly the house for them. 

#8: Roofer’s Paradise 

A post-recession 2011 McMansion, this house clearly didn’t learn anything from the recent past. With many McMansions, I can conceive of ways to improve them to make them better. With this house, I simply do not know how to rectify its main problem: it’s, like, 90% roof. In my head I refer to houses like this as “turtle houses” but frankly this does a disservice to the noble turtle. 

#7: Haunted Geometry

This house was built in 2014, a time when people should definitely have known better. Its inclusion in this list is solely due to the absolutely bizarre geometry of its roof, a kind of geometry formerly unknown to mathematics until this time. Bonus points for the continued animosity to trees found in the wealthy populous of this county. 

#6: McEscher

Nothing about this house makes sense. I’m serious. I’ve looked at it from several different angles and have yet to perceive any coherent spatial logic to how it comes together. This is house is an SCP. It’s an X-Files case. House of Leaves was actually based on this house. It’s an Escherian nightmare. 0/10 would not go inside even if you paid me. 

#5: Obligatory Beigehaus

You know when a bad stand up comedian tells a joke that just keeps going way too long? The audience is like, okay, we get it, you need therapy, but he (and it’s always a he) just keeps going on and on. Well, this is the house equivalent of that. 

#4: House of Lumps

Whoever built this house was utterly incapable of picturing in their minds eye what a house should look like. The very conception of a house is foreign to them. They have never seen a children’s book with houses in it. They probably didn’t even have a childhood. 

#3: Play-doh Playhouse

This house made it so far in the countdown because it is, frankly, weird. I don’t know why it is painted the color of jaundice, or why they have transformed every gable into a hollow cavity longing for death. Lots of things are happening here, though none of them could appropriately be called “architecture.”

#2: Farmhouse Freak

Let your eyes glaze over as you look at this “farmhouse” - the more you look at it the less sense it makes. What are they farming, you ask? Why, turf grass of course! Bonus points for this image in which the house appears through a haze of ozone or something. 

And now, the moment you’ve been waiting for…

#1: Corinthian Catastrophe

It’s one thing to have oversized Corinthian columns on your absurd McManse, but it’s a whole new level of extra to spray paint the capitals gold. This house takes all the elements found in the other houses (treeless sociopathy, turret lust, garish mismatched windows, foam) and ramps it up to 11, which is why it earns the number one slot in the county. Also, as a bonus, I find it incredibly funny that they embossed the letter “C” everywhere. I guess whoever buys it either has to have a name starting with C or has their work cut out for them. The C represents the grade they got in home design class. 

Anyways, that’s it for Wisconsin, folks! Stay tuned for a special essay on whether or not brutalism is good, as well as the next installment of the 50 States: Wyoming. Have a great weekend. 

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 Week, Crowdcast streaming, and bonus essays!

Not into recurring donations or bonus content? Consider the tip jar! Or,Check out the McMansion Hell Store ! 100% of the proceeds from the McMansion Hell store go to charity!

Copyright Disclaimer: All photographs are used in this post under fair use for the purposes of education, satire, and parody, consistent with 17 USC §107. Manipulated photos are considered derivative work and are Copyright © 2019 McMansion Hell. Please email kate@mcmansionhell.com before using these images on another site. (am v chill about this)

McMansion Hell Cross Stitch Patterns

Howdy folks! My internet has been funny this week, thus, I had a lot of time to myself with no internet which invariably leads to…crafting. I made some McMansion Hell-themed cross stitch patterns in MacStitch and wanted to share them with all of you in case there are other folks out there who love to stitch. 

These pictures are just the previews - to download the full patterns, click here

Happy Stitching! See you soon with Wisconsin’s McMansion! 

Why Marie Kondo’s method is ideal for my ADHD

Why Marie Kondo’s method is ideal for my ADHD:

I got to write about how Marie Kondo helped with my ADHD! 

Frank Lloyd Wright Quarterly | Frank Lloyd Wright Foundation

Frank Lloyd Wright Quarterly | Frank Lloyd Wright Foundation:

Art by Ellen Surrey

Howdy! The lovely folks at the Frank Lloyd Wright Foundation let me take the reigns as guest-editor for the new edition of their quarterly, about FLW and pop culture! It was a great opportunity for me to revisit my love of Wright’s work, to invite some of my favorite architecture writers around to share their talents, and to draw arrows and text on top of a very famous and handsome building instead of the ugliest and dumbest houses imaginable. 

Topics include why FLW’s work and life remain so influential after all these years; a reverse McMansion Hell roast of Taliesin West, and a look at FLW in tv (including GoT!!), movies, and the entire genre of science fiction. (There’s also some really cute drawings of FLW sitting on the Iron Throne, cavorting with robots, etc.)

Stay tuned for the next installment of this blog, which will drop Thursday! 

I wasted a whole day making this chart for architects and so now you have to see it too

I wasted a whole day making this chart for architects and so now you have to see it too

interior design is my passion

interior design is my passion

Kate Wagneri made a website for myself (kate wagner)

i made a website for myself (kate wagner)

Top 5 Worst McMansions in SpaceHowdy folks! If you thought suburban sprawl couldn’t extend any...

Top 5 Worst McMansions in Space

Howdy folks! If you thought suburban sprawl couldn’t extend any further, encroaching and devouring everything in its path, you’re right! That’s why, in co-operation with a variety of shady Silicon Valley start-ups, property speculators and developers are now taking bold new steps in order to expand the iron grip of real estate by entering… the space market! The offerings have been slim, so far, but remain ever promising for readers of this website. Let’s take a look!

#5: 6341 Crater Drive, Moon

Hoping to cash in on a moon real estate boom, this lovely 6000 square foot “ranch” is located a mere 30 miles from the famous “Moon Landing” site. Tall ceilings abound, convenient for those who have to live in low gravity. Also includes granite countertops, and “bathrooms” to remind you of Earth’s luxuries. Only $500,000,000, HOA not included. 

#4: 443 Black Hole Lane, Jellyfish Nebula

Another sprawling rancher, this time drifting endlessly into the abyss somewhere near the Jellyfish Nebula. At 6349 square feet, there’s plenty of space for you to ponder the loneliness that is the universe and the ever-present fear that you may never see your family on Earth again. Before you change your mind, wait til you see that master bath, folks!

#3: 553 Discovery Place, Mars

This amazing 6 bedroom 11 bath Space Chateau is a great investment opportunity for those smart investors that want to cash in on the Mars craze and stay ahead of Elon Musk! Designed to blend into the harsh Mars terrain, this 7,530 sqft house is perfect for the land grabbing space colonizing enthusiast and faux royalty alike. 

#2: 11 Apollo Court, Moon

Did seeing Apollo 11 in IMAX get your moon juices flowing? Well do I have a house for you! If you like a good view, forget the hilly expanses of California, or the breezy seaside vibes of Florida - you can see it all from this elegant 7845 sqft Moon Estate featuring no-maintenance plastic landscaping, a 3-rover garage, and large, diverse windows allowing for nonstop views. This house is great for entertaining, but if someone knocks on your door DO NOT ANSWER IT and REPORT TO THE NEAREST AUTHORITIES. 

#1: 733 Starry Boulevard, Carina Nebula

This incredible 6 bedroom, 8 bathroom home features large, sweeping views of the ever-expanding universe in which all of us are unfortunately trapped like puny flies in a dish of olive oil. If you like elegant stonework, tall ceilings, and the tranquil silence afforded by the vacuum of space, than this Tudor European Estate complete with satellite is perfect for your discerning tastes. 

McMansion Hell would like to thank recent architecture school graduate Sean Maciel (@seanmaciel on Twitter) for creating locating via space real estate networks the images used in this post. 

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 Week, Crowdcast streaming, and bonus essays!

Not into recurring donations or bonus content? Consider the tip jar! Or,Check out the McMansion Hell Store ! 100% of the proceeds from the McMansion Hell store go to charity!

Copyright Disclaimer: All photographs are used in this post under fair use for the purposes of education, satire, and parody, consistent with 17 USC §107. Manipulated photos are considered derivative work and are Copyright © 2019 McMansion Hell. Please email kate@mcmansionhell.com before using these images on another site. (am v chill about this)

Discussion Thread: Day One of House Public Impeachment Hearings | William Taylor and George Kent - Live 10am EST

By /u/PoliticsModeratorBot

Today the House Intelligence Committee will hold public hearings in preparation for possible Impeachment proceedings against President Donald Trump. Expected to testify are William Taylor, the top diplomat in Ukraine, and George Kent, the Deputy Assistant Secretary of State for European and Eurasian affairs.

The hearings are scheduled to begin at 10:00 EST. You can watch live online on CSPAN or PBS or most major networks.

Reportedly, today's hearing will follow a unique format, and will look/sound a bit different to those of you that are familiar with watching House hearings.

The day will start with opening statements from House Intel Chair Adam Schiff, ranking member Devin Nunes, and both witnesses, William Taylor and George Kent.

Opening statements will be followed by two 45 minute long continuous sessions of questioning. The first will be led by Chair Adam Schiff, followed by Ranking Member Nunes. The unique aspect here is that both the majority and minority will have staff legal counsel present, with counsel expected to present many, if not most, of the questions. Chair Schiff and Ranking Member Nunes are free to interject their own questions (during their respective times) as they wish.

Following the two 45 minute sessions, each member of the Intel Committee will be afforded the standard 5 minute allotment of time for their own questions. The order will alternate between Dem/GOP members.

Today's hearing will conclude with closing statements by Chairman Schiff and Ranking Member Nunes, and is expected to come to a close around 4pm EST

submitted by /u/PoliticsModeratorBot to r/politics
[link] [comments]

More wired mechanics examples from Superliminal

By /u/Dlatrex

More wired mechanics examples from Superliminal submitted by /u/Dlatrex to r/gaming
[link] [comments]

Alexandria Ocasio-Cortez plays League! This was on her Instagram today!

By /u/Simmseh

She has upranked to Silver IV in Solo/Duo, pretty impressive, given how little time she has to play. I think it is good to see a popular politician such as herself sharing this with 4.1million followers, should definitely bring some attention the League of Legends. Apparently she was Bronze V last year, which means she's climbing the ladder faster than many of us.


submitted by /u/Simmseh to r/leagueoflegends
[link] [comments]

Volkswagen Beetle side fenders converted into motorcycles

By /u/Mateo03

Volkswagen Beetle side fenders converted into motorcycles submitted by /u/Mateo03 to r/Damnthatsinteresting
[link] [comments]

TIL that the actor who played Santa Claus in the Christmas M&M's commercial still makes between $5,000-$10,000 every single year from residuals.

By /u/derstherower

TIL that the actor who played Santa Claus in the Christmas M&M's commercial still makes between $5,000-$10,000 every single year from residuals. submitted by /u/derstherower to r/todayilearned
[link] [comments]

The use of lasers to blind the police in Chile’s riots

By /u/pioneiro_veio

The use of lasers to blind the police in Chile’s riots submitted by /u/pioneiro_veio to r/PublicFreakout
[link] [comments]


By /u/Master1718

Excellent submitted by /u/Master1718 to r/KeanuBeingAwesome
[link] [comments]

Protesters took down police drone using lasers

By /u/Master1718

Protesters took down police drone using lasers submitted by /u/Master1718 to r/BeAmazed
[link] [comments]

Tesla cites Brexit as Germany chosen over UK for European plant | Technology

By /u/Anonymous_53

submitted by /u/Anonymous_53 to r/news
[link] [comments]

Mark Zuckerberg says TikTok is a threat to democracy, but didn't say he spent 6 months trying to buy its predecessor

By /u/Fr1sk3r

submitted by /u/Fr1sk3r to r/technology
[link] [comments]


By /u/Amos_Baltimore

I am SPEED. submitted by /u/Amos_Baltimore to r/HighQualityGifs
[link] [comments]

The GOP attacked Ilhan Omar for calling Stephen Miller a "white nationalist." She says his leaked emails prove her right.

By /u/swingadmin

The GOP attacked Ilhan Omar for calling Stephen Miller a "white nationalist." She says his leaked emails prove her right. submitted by /u/swingadmin to r/politics
[link] [comments]

Typical idiot drivers in Richmond, BC

By /u/TheWeb1000

Typical idiot drivers in Richmond, BC submitted by /u/TheWeb1000 to r/IdiotsInCars
[link] [comments]

[WWE Backstage Spoilers] It finally happened...

By /u/FuzzyWuzzyMooMoo

submitted by /u/FuzzyWuzzyMooMoo to r/SquaredCircle
[link] [comments]

Pokémon Sword/Shield - Confirmed Models Are Re-Used from Nintendo 3ds Games

By /u/TicklishRocket

submitted by /u/TicklishRocket to r/NintendoSwitch
[link] [comments]

How The Semester Ends

By Remy Porter

Ginger recently finished an advanced degree, and during her work, she of course had to work as a TA for a number of classes. Computer science professors are, at least in theory, capable of programming, and thus can build automation around assignments- providing students with templates to highlight specific tools and techniques, or to automate the process of grading.

Dr. Buchler taught the computer graphics course, and the ultimate assignment was to build a simple 3D game. Buchler provided a pre-scaffolded project with a set of templates that could be filled in, so the students didn’t need to worry about a lot of the boilerplate. Beyond that, Buchler didn’t offer much guidance about how students should collaborate, so students did what came naturally: they set up git repos and shared code that way.

The students who used Git, which was essentially all of them, started contacting Ginger. “My code is broken!” “It worked, on my machine when I wrote it, but now it doesn’t! I haven’t changed anything!”

Obviously, there must be an issue with the professor’s template, but when Ginger mentioned this to Buchler, he dismissed the concern. “I’ve been using this template for years, and have never had a problem. The students must have errors in their code.”

Ginger worked closely with one of the student groups, and if there were errors in the code, she couldn’t see them. And what immediately leapt out to her was that code which worked would suddenly break- but it only seemed like it happened after a commit.

The core pattern was that the students would write a fragment of a shader, and then the project would merge their fragment with a surrounding template to create a full GLSL shader that could actually execute, akin to how Shader Toy injects some additional code around your key logic.

Now, when loading code into the template, Buchler had written something like this: String[] vscr = new Scanner(Paths.get(ShaderProgram.class.getResource(shader).toURI())).useDelimiter("\\Z").next().split("\r\n");

There was no real reason for the split, but Buchler wanted to use an array of lines instead of a blob of text. That was also the source of the problem.

The split would remove Windows line endings from the students’ code. For the students, who were frequently on Windows, this meant that when their shader got loaded, all the newlines would get stripped from their code.

This meant a simple shader, like:

void mainImage( out vec4 fragColor, in vec2 fragCoord )
    vec2 uv = fragCoord/iResolution.xy;
    vec3 col = abs(vec3(sin(uv.x * 50.)));
    fragColor = vec4(col,1.0);

would get mashed into: void mainImage( out vec4 fragColor, in vec2 fragCoord ){ vec2 uv = fragCoord/iResolution.xy; vec3 col = abs(vec3(sin(uv.x * 50.))); fragColor = vec4(col,1.0);}. Not elegant, but syntactically valid.

Of course, if the students used any #define directives, or included single-line comments, that could easily blow up their shaders. But that didn’t explain why, for many, the code worked until a commit.

Remember, Buchler’s system would mash the students’ shader code into his own template. His template was, at least in its current form, using Unix-style line endings- just \n, not \r\n. So the template wouldn’t have its line endings stripped out, at least not by default. Until the students committed the repo. At that point, the entire shader would be put on a single line, and Buchler's template did include some #define statements.

Git has a core.autorcrlf parameter. It makes sure that the version stored in the commits is using a Unix-style LF, but the version stored on your filesystem uses CRLF on Windows. It’s a change you’d never notice, as any text editor worth its salt is going to transparently handle whatever line-ending character its offered, but it emphatically breaks Buchler’s template.

Ginger showed the students how to update the template project to avoid this particular bug, and told Buchler what she’d found. “You could just remove the split and it’d be fine,” Ginger suggested.

“I’ll look into it, I guess,” Buchler said.

Students finished their projects, Ginger moved on, but near the end of the following semester, she started hearing students complaining: “I’m doing Buchler’s graphics class, and my code just stopped working for no reason.”

[TDWTF Survey Reminder] Got 5 minutes to tell your manager what you really think? Take the Developer Mentorship Survey and there just might be a free TDWTF mug in it for you.

CodeSOD: Assert Yourself

By Remy Porter

Chris V does compliance testing. This often means they trace through logic in code to ensure that very specific conditions about the code’s behavior and logic are met. This creates unusual situations, where they might have access to specific and relevant pieces of code, but not the entire codebase. If they spot something unusual, but not within the boundaries of their compliance tests, they just pass on by it.

One of the C++ code bases Chris had to go through featured this “defensive” pattern everywhere.

if (someConditionalStatement)  
    // do stuff  
    runtime_assert(false && "some condition was not met");  

Chris doesn't have access to runtime_assert's definition. It *is* possible to `&&` a boolean and a string together- you get a boolean result, though. So the `"some condition was not met"` message just vanishes, as if it weren't there. Literally, this is just runtime_assert(false). Which, excepting the extraneous string, almost makes sense, if you want the failed condition to trigger some exception/error pathway. Then there were these variations on the pattern:

if (someConditionalStatement)  
    // do stuff  

Which, again, essentially just means runtime_assert(false). And again, this almost makes sense. As Chris explains:

I mean, it works. It all works. It’s just a weird and unnecessary way to write it. …I get the feeling they have heard about error checking and defensive programming, but haven’t heard about exceptions and exception handling?

[TDWTF Survey Reminder] Take our Developer Mentorship Survey asking developers about their managers, what works, and what doesn't. Help out your fellow devs and to enter to win a TDWTF mug!

CodeSOD: One Way to Solve a Bug

By Remy Porter

Startups go through a number of phases, and one specific phase is the transition from "just get it done and worry about the consequences tomorrow" into "wait, maybe if we actually did some planning and put some process around what we do, we won't constantly be one step behind the current disaster."

And that's when they start to hire people who have more management experience, but are also technical enough that they can contribute to the product directly. At BK's company, the latest hire in that category is Sylvester.

Sylvester is the new team lead, and he comes from a more "enterprise" background, which means he's had a very difficult time getting up to speed, and is unwilling or uncomfortable to make decisions with limited information. And also, Sylvester might not be particularly good at the job.

BK noticed that Sylvester had a commit sitting in code review, and it had been sitting there for some time, so they took a look. One of the first things they spotted was a method called SolveBug, which made it clear they were in for a "treat".

void SolveBug (std::vector<BusinessEntity> container){ std::sort(container.begin(), container.end()); const auto it = std::unique(container.begin(), container.end()); if (it != container.end()) { container.erase(it); } }

So, one of the business rules about the vector of BusinessEntity objects is that the entries should be unique. BK skimmed this method, and without looking at it too deeply, and without knowing the definition of std::unique, made some assumptions based on the code. The std::unique function must return the first duplicate, and then we erase it.

That couldn't be right though, because what if there were multiple duplicates? So, BK did what Sylvester obviously didn't, and did a quick search. std::unique returns an iterator where consecutive duplicates are removed.

BK, being generous, assumed they were missing something, and asked Sylvester what that might be.

"Oh, thanks for spotting that! That's probably why it doesn't work."

Apparently, Sylvester had pushed code he knew was broken, and didn't mention it to anyone. He didn't ask anyone to take a look beyond submitting a code review. He didn't bother to check the documentation, and certainly didn't think about the code he was writing.

Perhaps "SolveBug" was less a description of what the method did, and more what Sylvester hoped the code review would do? In that case, the method was very accurately named.

[TDWTF Survey Reminder] Take our Developer Mentorship Survey asking developers about their managers, what works, and what doesn't. Help out your fellow devs and to enter to win a TDWTF mug!

Error'd: Watch the Skies!

By Mark Bowytz

"In light of the imminent UFO strike, I may need to reconsider my flight plans...or leaving my house in general," writes Pedro.


Howard wrote, "I guess, in Dell's eyes, it's their site and anything can be on sale if they say it is."


"Hmmmm...Do I really trust Google Play Music to manage my Google Play Music library?" Ryan S. writes.


Rob K. writes, "I'm guessing I should take advantage of the sale price before Dan gets back to his computer."


"Saying that the app isn't working correctly is a bit obvious in this case," writes Jerry.


Adrien wrote, "The exception L'opération a réussi (Operation succeeded) being thrown leads me to believe there is nothing wrong here and this application is simply intolerant of the French language."


[TDWTF Survey Reminder] Got 5 minutes to tell your manager what you really think? Take the Developer Mentorship Survey and there just might be a free TDWTF mug in it for you.

CodeSOD: Overlapping Complexity

By Alex Papadimoulis

After his boss left the company, Joel C was promoted to team lead. This meant that Joel was not only responsible for their rather large production codebase, but also for interviewing new potential team members. There are a ton of coding questions that one can ask in a technical interview, and Joel figured he should ask one that they actually solve in their application: given two unordered sets of timestamps, calculate how much overlap (if any) is between the two series.

If you think about it for a minute, it's really quite simple: first, find the minimum and maximum values for each set to get the start and end times (e.g. [01:08:01,01:09:55] and [01:04:11,01:09:42]). Then, subtract the later start time (01:08:01) from the earlier end time (01:09:42) to get the overlap (01:09:42 - 01:08:01 = 00:01:41). A non-positive result would indicate there's no overlap (such as 12:00:04 - 13:11:43), and in that case, it should probably just be zero. Or, in a single line of code:

return max(min(max(a), max(b)) - max(min(a), min(b)), 0)

Of course, something more spaced out might help with readability, but Joel saw a lot of candidates overthink the problem. They would sort the lists, create unneeded temporary variables, not understand that they really only need the first and last elements of the list, etc. In many of those cases, Joel judged candidates quite harshly; it's a simple problem and if this confuses them, how could they handle more complex problems?

A handful of candidates recognized the problem for how simple it was, but one went so far as to ask, "there are a ton of ways to solve this in code; here's my solution, but I'm really curious how you solved it?"

Joel wasn't really sure how his former boss solved the problem. After spelunking through the codebase, he found out:

def compute(dev_a, dev_b):
    labeled_timestamps = []
    for label, dev in ('a', dev_a), ('b', dev_b):
        for t in dev.timestamps:
            labeled_timestamps.append([t, label])

    last_label = None
    start_overlap = None
    end_overlap = None
    last_t = None
    for t, label in labeled_timestamps:
        if last_label is not None and last_label != label:
            if start_overlap is None:
                start_overlap = t
                end_overlap = last_t
        last_label = label
        last_t = t

    if end_overlap is None:
        end_overlap = start_overlap
    overlap_time = pd.Timedelta(end_overlap - start_overlap, 's')

"I have seen some overly complex answers," Joel wrote, "but this is a level of overthinking that is beyond impressive. If someone had given me this in an interview, I would probably have been left completely dumbfounded, and submitted this as a Tales from the Interview. Instead... I just shut down my computer and started my weekend drinking a little early."

[TDWTF Survey Reminder] Don't miss your chance to tell managers what you REALLY think about good (and WTF-worthy) dev mentorship. You might win a TDWTF mug for participating!

The Most Secure Option

By Remy Porter

“The auditors have finished examining our codebase.”

That was how Randy’s boss started the meeting, and she delivered the line like a doctor who just got the tests back, and is trying to break the news gently.

After someone in another department did the whole “I found a thumb drive in the parking lot, let me plug it into my work laptop!” thing, management realized that they hadn’t done any kind of security evaluation in years, and brought in a bunch of highly paid consultants to evaluate their practices. Part of that meant doing audits of their software portfolio for compliance with the new security standards.

Now, Randy’s boss was running a cross-functional meeting- developers, operations, and even a few support desk representatives, to review the audit results. Most of the hits they took on the audit were the kind of slipshod stuff that accrues over years of under-budgeted, over-specced projects. Passwords stored in source control. A few SQL injection vulns. But the one that seemed like an easy win was the fact that they didn’t use any SSL on their web applications.

“Oh, we should be able to fix that, easy,” Randy said.

“Oh, we should, should we?” Benny, the sysadmin said. He leaned over the table, with his hands clasped. “How many SSL certs have you provisoned?”

“Well, a bunch, I’ve-”

“Because I have, and it’s no walk in the park, and it’s very expensive.”

Randy blinked, and glanced over at his boss. She didn’t have anything to add.

“That’s… not true?” Randy said. “It’s not that expensive to buy a cert, but we can also go with LetsEncrypt, which is free.”

“Ah ha!” Benny said. “It’s very expensive to do it right. You can’t just use some service from the Internet. We’re here to talk about our security audit, and using LetsEncrypt is not possible. Anything hosted externally and accessible via the Internet poses a huge organizational risk. Free SSL from the Internet is an easy target for a hacker.”

“Right,” Randy’s boss said. “We’ll table this for now, but it looks like we probably won’t add SSL until we have a better sense of the costs.”

“My advice is that we don’t use SSL at all,” Benny said. “That will be more secure than what Randy’s proposing.”

The audit happened early this year. No one has yet formulated a plan to move to SSL.

[TDWTF Survey Reminder] Don't miss your chance to tell managers what you REALLY think about good (and WTF-worthy) dev mentorship. You might win a TDWTF mug for participating!

Representative Line: Time Dilation

By Remy Porter

A good variable name is clear and specific about what the variable does. But sometimes you can have a variable name that's perhaps a little too specific. Victoria found this representative line of Rust code:

let threeseconds = time::Duration::from_secs(60);

Time certainly can stretch when you're deep in debugging, and three minutes can feel like an hour. And as you cross that event horizon, you start asking yourself questions. It's easy to understand how this code came to be: they though they needed three seconds for some task, but actually needed 60. They'd already made the variable name, and didn't want to trace through changing it everywhere.

But that's not really an explanation. Victoria shares her questions:

I then started wondering "so how did that code come to be? What kind of problem required them to think they'd need three seconds, but then bump that value up to 60?". That went a bit further with "So, judging by this representative line, what would the rest of the code look like, how would it even work?". I still haven't figured that last part out.

Don't worry, Victoria, if you need more time to work on understanding it, I know a great programming trick to make more time…

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

CodeSOD: A Botched Escape

By Remy Porter

Nancy was recently handed a pile of "modern" PHP that weighs in at tens of thousands of lines of code.

This is how every query is executed:

function getFoo($bar) { $bar = my_escape($bar); $sql = " select * from foo where bar = '" . $bar . "' "; return do_query($sql); }

Yes, this is a SQL injection vulnerability. No, there is no part of the application which uses parameterized queries. But wait, they call my_escape. That must be safely escaping the input so it can be used as a query param safely, right?

function my_escape($data) { if ( !isset($data)) { return ''; } if ( is_numeric($data) ) { return $data; } if(empty(trim($data))) { return ''; } $non_displayables = array( '/%0[0-8bcef]/', // url encoded 00-08, 11, 12, 14, 15 '/%1[0-9a-f]/', // url encoded 16-31 '/[\x00-\x08]/', // 00-08 '/\x0b/', // 11 '/\x0c/', // 12 '/[\x0e-\x1f]/' // 14-31 ); foreach ( $non_displayables as $regex ) { $data = preg_replace( $regex, '', $data ); } $data = str_replace("'", "''", $data ); return $data; }

So, this strips off url encoded characters, as well as hex-values. It, ah, doesn't strip off any of the characters which you might want to strip off if you're trying to protect against SQL injection. These regexes are case sensitive, too, so while %0b will get stripped, %0B won't. Which is also irrelevant, because by the time you're getting to passing things into the database, they've already been percent-decoded.

For extra fun, because the regexes are applied in a loop, it's possible that the regex might remove more than intended, because the first regex might strip characters which results in something that's picked up by a later regex.

For example, "A%%001%0cfB" turns into "A%1fB" after the first pass, then "AB" after the second one. But a slightly different string, like "A%%100%1cfB" turns into "A%0fB".

Now, those are contrived examples, but it's an interesting illustration of poorly thought out code. Looking at this, my guess is that someone knew they needed to sanitize their database inputs, but didn't know exactly how. They saw a my_escape function in the codebase, and said to themselves, "Ah, I can escape my inputs!" without checking what my_escape actually did.

This code has been running in production for a few years. Nancy would like to change how it works, but it's not currently "an organizational priority" and constitutes a "high risk change to a stable system".

[TDWTF Survey Reminder] Got 5 minutes to tell your manager what you really think? Take the Developer Mentorship Survey and there just might be a free TDWTF mug in it for you.

Error'd: Airport via TCP

By Mark Bowytz

Peter G. writes, "Luggage from flight SQ978 arriving from Singapore on belt 12. Luggage from PQ968 arriving from Ko Samui on belt 6. Packets from VNC arriving from Kazakhstan on port 5900"


"HTML 503 errors can be annoying, but are they REALLY breaking news?" Rob H. wrote.


Joachim I. writes, "Azure Devops sure wants me to cancel something here. (So I just closed the browser and hoped for the best.)


"Kudos to whoever thought about future proofing their job application form!" Jeff C. writes.


"It's refreshing to see a rewards program that's so honest about the value of the points you earn," Paul V. wrote.


"Thanks to the Android SDK, I guess it's time to spring for a new SSD," wrote Akseli A.


[Advertisement] Ensure your software is built only once and then deployed consistently across environments, by packaging your applications and components. Learn how today!

What Lives Beyond the Blue Screen (2019)

By Alex Papadimoulis

As promised in the sneak peak, we have a very special Halloween feature planned for today! What Lives Beyond the Blue Screen is an animated story by Lorne Kates (voiced by Jack Rhysider), made in collaboration with our new friends at Human Readable Magazine:

An everyday programmer decides to clean up the mess of his company's infrastructure before the big merger only to accidentally run the wrong command on the wrong location. Join the adventure as they rush to fix the mistake before they bring down the entire company.

This will be you live-streamed premier, in just a few hours, at 1:00PM Eastern. Stay tuned!

About Human Readable Magazine

We’re able to bring this to you thanks to Panagiotis “Pek” Peikidis. In addition to having an even more Greek name than mine, Pek is embarking on a remarkably awesome – and a bit insane – journey. He’s launching Human Readable Magazine: an actual paper magazine (available digitally too) that will take developers on technical deep dives to expand and challenge their knowledge of programming every month.

It’s a kickstarter project that you should all go check out. Pek was inspired to start this after finding a lot of success with Morning Cup of Coding, a newsletter that shares programming articles from every field of programming.

Creating quality content isn’t easy, but from what I’ve seen from Issue 0 Preview, and the creativity in the upcoming Halloween collaboration, Pek is up for the challenge. With our support, we can help make Human Readable Magazine a fixture of the programming community and have a lot more fun collaborations in the future.

[Advertisement] Ensure your software is built only once and then deployed consistently across environments, by packaging your applications and components. Learn how today!

CodeSOD: Tern Down Service

By Remy Porter

In C, it’s not uncommon to define a macro like this one:

#define MIN(a,b) (a>b?b:a)

It’s useful to be able to quickly find the smallest of two numbers, and it’s useful to do that with something a bit more readable than a ternary.

Of course, if you need to expand this to larger sets of numbers, it gets tricky. For example, maybe you need to find the smallest of three numbers.

Agripina recently had to track down some strange behaviors in an IoT device, and found this stack of ternaries:

int lowestVal(int a, int b, int c){
    return a > b > c ? c : b ? b > c ? c : b : a;

Three question marks is the mark of a great ternary mangling. The complete lack of any parentheses to group the expression to provide any sense of the actual logical flow is also great.

It’s also entirely wrong.

This expression: a > b > c is a valid C expression, but it doesn’t do what the mathematician who wrote this may have expected. The > returns 0 if the comparison fails, and 1 if it’s true. Thus, if a = 10; b = 9; c = 2;, a > b results in 1, and 1 > 2 is also false, which results in 0.

This bug created all sorts of strange behaviors in the IoT firmware, and created a fair number of billable hours for Agripina in tracking down the source.

[Advertisement] Ensure your software is built only once and then deployed consistently across environments, by packaging your applications and components. Learn how today!

Once Bitten, Twice Tested

By Ellis Morning

Blake had recently been hired as a software tester, tasked with testing the company's product on the latest operating system, Windows 2000. After running through his battery of tests, he informed management that he hadn't encountered any issues, and the product was dubbed Windows 2000-ready. During the next several weeks, the product was smoothly deployed by customers—until an installer bug report came in.

"Did you test the desktop shortcut after installing on Windows 2000?" Blake's manager, Sammy, asked from the threshold of Blake's cube.

"Yeah, I'm sure I did," Blake replied.

"A customer emailed us to say that when he chooses to add the desktop shortcut while installing, it causes a Blue Screen of Death," Sammy explained. "It happens consistently for him. The only way he can install successfully is to not choose the desktop shortcut option, which he calls 'unacceptable from an IT security standpoint.'"

Blake frowned in confusion. "Security?"

"I know, it's weird," Sammy said. "I want to question him further on that point. In the meantime, I'd like for you to start looking into this."

The first step was to reproduce the problem in-house. Blake was sure he would fail; he was absolutely certain that he'd already tested what was allegedly crashing. His first move was to install the product on a fresh Windows 2000 box. He checked the "Add a desktop shortcut" option, and after a few moments, the installer completed with no errors. A shortcut to run the program now sat on the desktop. Double-clicking the icon opened the program flawlessly.

From there, Blake uninstalled and reinstalled the program. Yet again, no issues. Trying a different Windows 2000 PC was fruitless. Out of desperation, he even tried installing on Windows 98. In no case did a BSOD ever occur.

"I can't reproduce this bug," Blake told Sammy the next time the two were able to meet up in the latter's office. "The installer doesn't crash the system, and the desktop shortcut works fine. Is there something I'm missing?"

"Well, I just got some more info from the customer," Sammy said, with world-weariness bearing down upon him. "Did you try installing to the desktop?"

"Yes, I installed the desktop shortcut. Many, many times."

"No, not the shortcut. I mean, install to the desktop."

"To the desktop?" Blake repeated, frowning.

"The customer's corporate security policy considers program shortcuts untrustworthy. They fear they could be pointing to anything," Sammy explained. "To avoid any sort of issue along those lines, the customer is required to install all of his programs into separate folders on the desktop."

Blake's jaw fell. "What?!"

Sammy shrugged helplessly. "First they want to install shortcuts, now they don't trust shortcuts. I don't get it, either, but it doesn't matter. It should be possible to install our software into any valid folder without a BSOD. Go see if you can dupe this now."

Blake slinked back to his desk. Much to his chagrin, he was able to reproduce the crash. Upon further investigation, it was discovered that the installer could crash the OS if one tried to install to a new folder on the desktop or in the user's Documents folder. Blake received a scolding from Sammy for missing this the first time around.

It was a lesson well learned. In the years that followed, Blake strove to test every possible scenario, every fringe use case, every baffling type of input data that he could think of. Upon submitting his bug reports, he heard the occasional bemused comment from the developers: "Who in the real world would ever do that?"

Blake would merely chuckle to himself, remembering the desktop shortcut.

[TDWTF Survey Reminder] Don't miss your chance to tell managers what you REALLY think about good (and WTF-worthy) dev mentorship. You might win a TDWTF mug for participating!

CodeSOD: To Be Random Enough

By Remy Porter

A long time ago, when I was first learning about databases, one of the points brought up was the difference between a "natural key" and a "surrogate key". A natural key was a unique identifier which already existed in your dataset, and surrogate keys were those you made up- UUIDs or sequences or what have you.

As a best practice, even if you have a viable natural key, you should still use a surrogate key. There are exceptions, but it's usually preferable to employ a database key which you control to provide identity, especially one which has no meaning- because that means it'll never need to change values.

Adam H's co-worker never got this memo.

They needed to store data about vehicles. The particular data being stored, in this case, was also time series data. So they decided that their key would be a mashup of the timestamp and the vehicle's 6-digit license plate number.

There were a number of problems with this: not every record entered into this table was actually tied directly to a vehicle, so sometimes the license plate number was blank. The developer needed to avoid any key collisions, so they decided to randomly generate a value, which was hopefully "random enough".

public final class TransformationUtil { private TransformationUtil(){} //snip private static final Random rand = new Random(); public static String setUniqKey(LocationHistory locationHistory){ SimpleDateFormat date = new SimpleDateFormat("yyyyMMddhhmmssSSSSSS"); Calendar c = Calendar.getInstance(); String str = date.format(c.getTime()); if (locationHistory.getVehicleNumber() != null) { str = (str).trim().concat(locationHistory.getVehicleNumber().trim()); } else { String value = uniqKey(); str = (str).trim().concat(value.trim()); } if (str.length() > 30) { locationHistory.setUniqKey(str.substring(0, 30)); } else { locationHistory.setUniqKey(str); } } public static String uniqKey() String randomNumber; ArrayList numbers = new ArrayList(); for(int i = 0; i < 999999; i++) { numbers.add(i + 1); } Collections.shuffle(numbers); String randomNum2 = numbers.get(rand.nextInt(numbers.size())).toString(); if(randomNum2.length() ==2){randomNumber = "0000" + randomNum2;}else if(randomNum2.length() ==1){randomNumber = "00000" + randomNum2 ;}else if(randomNum2.length() ==3){randomNumber = "000" + randomNum2 ;}else if(randomNum2.length() ==4){randomNumber = "00" + randomNum2 ;} else if(randomNum2.length() ==5){randomNumber = "0" + randomNum2;}else{randomNumber = randomNum2;} return randomNumber; } }

setUniqKey is almost not terrible. Get a date, format the timestamp. If you have a vehicle number, whack it onto the end. If the result is longer than 30 characters (because not every vehicle number is 6 characters), just chop off the excess and hope that it's unique enough.

But if you don't have a vehicle number, you need to invent one randomly. There are a lot of ways to randomly generate numbers, and this program certainly uses one of them.

The uniqKey method fills an array with every number from 1 to 999999. It then shuffles that array. Then, it randomly picks a position out of the shuffled array. Finally, it pads the array using that delightful chain of if-statements to fill the length. In a choice explicitly made to drive me nuts, the ==1 condition comes after the ==2 condition, because of course it does.

A fair number of records getting inserted needed a randomly generated key. Given that this is an incredibly inefficient way to generate random numbers, this whole block didn't perform very well. The input data was coming from a JMS queue, and any time there was a run of no-vehicle-ID records, the queue would back up and cause a series of cascading failures in other components. Each time that happened, the ops team would "solve" it by spinning up a new VM with the component running on it. More and more instances of just this component appeared, trying to keep up with the load.

Adam suggested, "If you're not going to just use a UUID for a key, why not just switch to Random.nextInt?"

"That won't be random enough," the developer replied.

[Advertisement] ProGet supports your applications, Docker containers, and third-party packages, allowing you to enforce quality standards across all components. Download and see how!

Error'd: Errors on the Go!

By Mark Bowytz

"These adertisers are getting smarter. Picture ads of 'one weird trick doctors hate people are doing in Yourcity, USA' are on the outs. On the other hand...Mysterious blocks of JavaScript? You have my attention...," Angela A. writes.


Quentin wrote, "How am able to Board the plane 12 hours and 41 minutes after it has left? Where's that damn time travelling phone booth when I need it?"


"Wait...How exactly can you can define something when define is not defined?" Martin P. wrote.


Mike R. wrote, "Know what would be great? What if Google has some way to lock a field so it couldn’t be edited"


"I'm very excited to finally install... er, i... Z... wha?" George writes.


Bellons write, "Google Calendar wants to do something...I just need to have faith (or not) that I pick the right one."


[TDWTF Survey Reminder] Don't miss your chance to tell managers what you REALLY think about good (and WTF-worthy) dev mentorship. You might win a TDWTF mug for participating!

Announcements: Sneak Peak: What Lives Beyond the Blue Screen

By Alex Papadimoulis

I’m totally stoked for what we have brewing for Halloween. It’s called What Lives Beyond the Blue Screen, and we’ve got a fun sneak peak for you:

We’re able to bring this to you thanks to Panagiotis “Pek” Peikidis. In addition to having an even more Greek name than mine, Pek is embarking on a remarkably awesome – and a bit insane – journey. He’s launching Human Readable Magazine: an actual paper magazine (available digitally too) that will take developers on technical deep dives to expand and challenge their knowledge of programming every month.

It’s a kickstarter project that you should all go check out. Pek was inspired to start this after finding a lot of success with Morning Cup of Coding, a newsletter that shares programming articles from every field of programming.

Creating quality content isn’t easy, but from what I’ve seen from Issue 0 Preview, and the creativity in the upcoming Halloween collaboration, Pek is up for the challenge. With our support, we can help make Human Readable Magazine a fixture of the programming community and have a lot more fun collaborations in the future.

In the mean time, stay tuned… What Lives Beyond the Blue Screen is coming next week!

Return to the Vaucluse, 2019

By Jon North (noreply@blogger.com)

One of our first ports of call when we began regular visits to France over 25 years ago was to the southern Rhône valley, the south of the Drôme département (south that is, of our old twin town, Die).  This September we were back in the Vaucluse for a short overnight stay on my birthday.  The photo above is from the road approaching the Domaine de Coyeux, high above Beaumes de Venise, with Mont Ventoux in the distance.  Try as I might I could not convey the height and scale of this well-known obstacle in many Tours de France, but it is often there in views of the area.

When we first visited in the mid-1990s the only way to approach Coyeux was via an unmade road, snaking across the top of the Dentelles de Montmirail, itself already a worrying distance from civilisation.  We've visited the Domaine de Durban, on the road towards Coyeux, quite often over the years, but now that track is closed and the road to Coyeux snakes up the hillside like a Tour de France special, until you arrive on the high plateau with the lace-like rocks that give the Dentelles their name, at closer quarters.

On the way to the Domaine de Coyeux
When we first came in the 90s, Beaumes de Venise was well-known for its sweet muscat wines, as it still is, but in the past 20 years sweet wines have become less popular and the reds from this village have become increasingly good and, compared with the neighbouring Gigondas or Vacqueyras, let along Châteauneuf du Pape, very good value.  Coyeux is noted this year in the Guide Hachette for an excellent red, Praestans, which fulfilled our expectations when we tasted it.  We also fell for dry white and rosé wines from Muscat grapes - a very worthwhile visit with views to match.


All the white and rosé wines we tried at Coyeux were made from muscat petit grains grapes, the same as are used to make the fortified Muscat de Beaumes de Venise.  When we firt came, dry wines were only made when the harvest was plentiful enough.  Now, dry white wines are increasingly normal, and I was surprised to discover rosé made from the same grape (this is not really surprising - the skins are reddish though the juice is 'white', so leaving ths skins in contact with the juice for a short time makes a nice pale rosé).  Mary is always pleased to find dry muscat, and the Coyeux rosé and white were both excellent.  We also have more and more dry muscat around us in Lunel, and one of our best winemakers tells us he decreases the sugar content of even his sweet wines year by year as people's tastes change.

As we often do when travelling in France, we chose to stay in a Logis de France hotel - almost always with good restaurants attached.  This one in Sablet, the Domaine de Cabasse, lived up to the usual good standards and is as its name suggests also attached to a wine domaine.  However, with so many good wines around we didn't buy here this time - just drank some of their good red with our meal.  The pool was also a welcome attraction in the afternoon heat.

The hotel is among the vines midway between the small sleepy villages of Sablet and Séguret.  
As you emerge onto the little road, across the fields you can see two huge buildings typical of the caves coopératives you come across right across the south of France, but if possible even bigger.  This I guessed, rightly, was the Gravillas Coop which we were aiming for after our night in the hotel.  It has a good reputation, and a Rosé in particular which got outstanding marks in the latest Guide Hachette.  The previous afternoon we'd stopped in another small sleepy village, Violès, on the plain between the Rhône and the Dentelles.  There we visited a charming family-run domaine, the Bastide Saint Vincent, another Hachette recommendation, whose red Florentin is a splendid example of the newish 'Plan de Dieu' (plain of God, I guess) Côtes du Rhône Villages appellation.

 The story of our link to Violès also goes right back to our twinning visits 25 years ago.  At that time our local organic shop in Derbyshire had branched out into wines, and had a nice red Côtes du Rhône and we decided to see if we could find the producer.  At that time Violès was even more of a backwater than it is now - small, dusty and not really used to tourists, but we found the winemaker, bought some wine and had a meal in the little restaurant at the village crossroads.  The raising of quality and acquisition of the plan de Dieu tag has brought new fortune to Violès, which now has more commerce, several well-set-up winemakers and a beautiful new public library among other things.  All very enouraging

To finish here are a few photos of the area, taken on the top of the Dentelles but a little further south and west around the Domaine de Durban, with some better views of Mont Ventoux too

Our dog Camel

By noreply@blogger.com (Jon North)

Over 250 years the English poet Christopher Smart wrote the poem For I will consider my cat Jeffrey.  Now we think constantly 'for we will consider our dog Camel', the new friend at 74 rue de la Brechette following Evie's sad death last autumn.  Her replacement is several times her size!!

Last week we went to Figeac, 3-4 hours' drive west of Lunel, to collect our new companion, a 10-year-old male dog called Camel.  He had lived for 4 years in the refuge in the remote hilltop locality Nayrac a couple of km outside Figeac on the river Lot.  The refuge is operated (since the late 80s) by  MASAQ, the Mouvement Associatif pour la Sauvegarde des Animaux du Quercy, a very caring and committed group which seems to be struggling to cope with demand - the 100+ dogs have to be housed, fed and walked by volunteers and they are completely full up on the cat side, and the refuge has shelter and some limited facilities, but little warmth or protection for the many animals in the woodland setting surrounded by rubbish processing plants at the end of a long winding dead end road.

Camel is a placid, friendly animal, underweight and in need of more walks and more food, carefully controlled to allow for his rather shrunken stomach, and now just starting to get used to our warm dry house!  He was chipped and checked by their vet before we could collect him and sign the adoption papers, and given a thorough check by our own vet the day after he arrived.  But if he seems bemused to find himself in our home it isn't surprising - he'll still be getting used to being warm.

Figeac itself is a really nice little town with a really lovely medieval centre which we explored despite the annoying closure of the Tourist Office for staff training!  But going to the Mairie instead to get a town plan was a bonus, because the young woman at the desk turned out to be a volunteer at the refuge and of course knew one of their longest-staying residents!  She and we were very glad to say hello before we went to find him.

Here is an album of photos of Camel in his first few days with us.

Road trip

By noreply@blogger.com (Jon North)

Interrupting my enjoyable accounts of meetings with family and friends in England, a trawl around out 3500 km plus round trip to England from the S of France.

We decided to drive because we thought of taking French wine to our family.  In the process we kept some Burgundy for ourselves from our favourite Jacob vineyards - crémant, Chambolle Musigny and some white Hautes Côtes de Beaune matured in Acacia barrels which is less easily available so we were lucky to find it!  Sadly, on our return through France we could not find a chance to revisit Echevronne but we'll be back, no doubt.

Perhaps the highlights of the route and the roads we travelled were or will be the Millau viaduct which will more or less welcome us back into the Languedoc when we return home down the A75 tomorrow, and the quiet journey from north of London up the A5 towards Staffordshire as we started our visit in December.  the Narrow Boat pub on the Grand Union Canal has been an enjoyable stopping place over the years.  We returned south on the A5 but sadly the pub was not yet open for coffee as we passed.

But the most surprising pleasure is the moment on the M25 near Rickmansworth when it passes neatly under the Chalfont Viaduct - as the Atlasobscura website relates "Those impressive Edwardians thoughtfully left enough room between the arches of this grand 1906 railway viaduct for an eight-lane motorway to pass through".  I can't help thinking the motorway designers had to back off a considerable distance to line up the M25 through those excellent brick arches.

Our almost daily journeys from near Burton to Wirksworth, between the houses of our sons, gave us time to refine our route - the picturesque but windy one via Ashbourne was rapidly replaced by the smoother but still enjoyable route via the A38 and A50, quicker and less demanding!

We have learnt to pace ourselves, shorter stages with hotel stops, but still on these short winter days the end of each day is a challenge as streams of headlights approach us in the gathering darkenss as we attempt to decipher the directions to the next hotel.  And even welcome sunshine in France today presented problems as we negotiated ring roads and roundabouts.  But we enjoyed the sights we could spare time to see - Chartres cathedral against the skyline, and a sliver of crescent moon as we drove towards Orléans.

The car ferry is a gentle respite on the route, and the Channel Tunnel is so quickly over in a car that you scarcely remember it before you are on the road again.  But on short winter days perhaps the tunnel is a better bet, leaving more daylight hours to drive safely in.  Changing sides of the road no longer presents too many challenges - I always feel that the signage and road markings are clues enought to which side of the Channel and of the road you are currently on.  And we saw no gilets jaunes at all on the way up,though several stood by their roadside fires and did not bother us as we passed Dieppe, Evreux and Dreux on the way down.

An anniversary and other Christmas moments

By noreply@blogger.com (Jon North)

Our 40th wedding anniversary was in October, but since we could not meet the family then we arranged a meal together just after Christmas.  It was lovely to have all our sons and their families with us for an evening of Italian treats in Oakerthorpe, where the Peacock pub has been rebranded Pesto at the Peacock!

We shared our time over the festive period between the homes of Jeff & Fi and Sam and family, enjoying several exchanges of presents, walking around the Staffordshire countryside and taking occasional trips to shops in Burton and Ashbourne, as well as catching up on tv and sleep!

Jeff & Fi's cottage across the fields

Some Christmas moments at Marebrook

By noreply@blogger.com (Jon North)

More photos from our stay at Jeff & Fi's

Waiting for Christmas in Staffs and Derbys

By noreply@blogger.com (Jon North)

Our days leading up to Christmas this year have been spent with the usual mix of shopping, wrapping, watching telly and spending time with our family.  This is a little photo diary of our first few days in rural Staffordshire.



Christmas trip part 2 - to the Midlands

By noreply@blogger.com (Jon North)

NB photos of Staffs taken on an earlier winter visit
 I'm writing in the early morning of Saturday 22 Dec in a cosy cottage near Burton-on-Trent, home our son and daughter-in-law Jeff & Fi, and our temporary resting place in England.  We've driven nearly 1500 km to get here with amazingly little difficulty - not only avoiding hold-ups in France but making the journey from Kent to London and then on to Staffs smoothly on quiet roads.  All the more amazing on the brink of a holiday weekend when all reports are of heavy traffic and jams.  They all seem to have happened after we passed!

Our short stay in London with old friends Ruth & Claus was comfortable and warm in every sense.  We had a chance to wander in Highgate village and introduced two sets of friends from different parts of our lives over lunch - if there was a common thread beyond a general enjoyment of culture it was the appreciation of good wine: we'd brought with us wine Gaynor & Ed had bought in Bordeaux during our summer visit there together, and we enjoyed both good Bordeaux red and delicious Chablis with lunch.  I keep straying in this blog into the territory of the wine one!

Highgate scenes

So we set our yesterday from London, aiming for the A5.  This lust be one of the least diverted of the old Roman Roads in the country, once you get onto it north of St Albans.  Of course it has new bits like the Milton Keynes bypass that Romans would have found it hard to imagine (even without the concrete cows) but mostly it passes through delightful undulating rural landscapes all the way to Leicestershire where we turned off towards Burton.  On the way up we stopped for some lunch at a really good raodside pub, the Narrow Boat at Weedon (now we discovered with Motel-like rooms fringing the car park).  We visited this quite often on our trips to and from Derbyshire some years ago.  The grounds are right next to the Grand Union Canal and it's altogether a good place to visit.  We arrived at Jeff & Fi's at 3 pm and enjoyed a cosy evening with a blazing stove, good wine(!) including some excellent Aldi organic prosecco we'd discovered on our last visit and some beautiful pinot noir we'd brought from the Limoux vineyard of Jean-Louis Denois.  A good start to our holiday.

Christmas in England - arrival

By noreply@blogger.com (Jon North)

With the uncertainties of Brexit on the horizon, this seems like a more than usually important time to visit our family in England, and we are really looking forward to being with Jeff & Fi, Sam, Sas, Heather and Ben and also seeing Ed, Isla and Karen for a while.  Lots to look forward as I sit in our Folkestone hotel which was a nightmare to find in the wet and dark, but it all felt better after a drink in the bar!

The past two days started early, very early, as we drove up a dark and almost deserted A9 from Lunel to our overnight stop in Burgundy, not quite knowing if the gilets jaunes would add to the uncertainty of Brexit.  Weekend reports were not encouraging - we read of fires on and by motorways and toll booths, a whole section of the A7 from Avignon to Valence closed, numerous entrances and exits closed as our own local ones had been on and off for the past few weeks.  We started out full of anxiety, just hoping that after the weekend the demonstrators would all heed to colder damper weather and go home.  

All sorts of thoughts have crowded in on us as we've driven 1,000+ km up France.  We drove without seeing a single gilet jaune. Tant mieux, and of course there are fewer in the north than in the south, fewer in midweek than at weekends, fewer now than there were 2 months ago. But we were reminded that until recently a frequent electronic message on motorways here used to be 'respect the men in yellow’, and today it says something like ‘agents anticipés’. Does not trip off the tongue as the other used to, but no danger of mistaking workmen for protestors, at least in the wording of messages!  

One final thought about these demonstrations - we read in a local paper in Burgundy that local groups of gilets jaunes are hoping to form associations so that they can be eligible for grants from public authorities!!  So people who began by demonstrating against too high taxes are now hoping some taxation will be spent on their groups.  In fact, merssages are mixed - some want lower taxes; others want to preserve services which are being cut.  On top of that, some have destroyed lots of things, motorway toll booths and sometimes the roads themselves with fire.  Vinci (one of the motorway companies) reckons they will need to spend millions repairing things.  Not easy to square with keeping up tax-funded services.  But enough, we don't understand everything and no doubt there are important causes to be fought.  The rest of this will be, more pleasantly, concerned with our doings.

Our first port of call in Burgundy was our friends Jean-Michel and Christine Jacob, whose wine will accompany us to England and (some of it) back home.  It's always a pleasure to see them again, but their story really belongs in my wine blog where I've often written of them (here for example), so suffice it to say that we were warmly received and delighted with the wines we found and could take away, as we hope our family and friends will be!  We had a good simple lunch in Beaune, a pleasure to revisit this lovely town, and then sought our our hotel.

lunch in Beaune - Mary appears twice thanks to the mirror next to our table!
The hill of Corton from our hotel terrace
We'd chosen a Logis hotel in Ladoix Serrigny, on the south-eastern flank of the famed Hill of Corton (origin of grand crû wines which we did not seek out this time, both red and, unusually north of Beaune, white (Corton Charemagne).  It was a simple but comfy overnight stop and we set out at leisure for the north today.  The roads were quiet, the weather mostly dry and often bright, and the middle stretch in particular as we approached Troyes across the Fôret d'Orient was full of the amazing variations of colour and texture of winter scenery, branches, fields and hedgerows.  The last stretch past Reims and on up to the coast is long and less interesting to look at, but we made the Tunnel hours ahead of the time we'd planned and so crossed into wet Kent and our first night on English soil, looking forward to seeing people as we travel north tomorrow and after.

September wine fairs

By Jon North (noreply@blogger.com)

The French 'rentrée' is also the start of an interesting period for wine enthusiasts - the season of wine fairs in supermarkets.  In all, these span nearly 6 weeks, and these days the wines are not only good value but also carefully selected.  As with medal competitions, you always have to bear in mind that makers who already have a good market for their wines need not participate, but with the aid of review articles you can usually buy good wines at good prices.  Since the best bargains are usually snapped up early, the secret is to arrive at the supermarket at opening time on day 1. 

I did this several times in September, partly for our wine tasting circle here in Lunel and partly to find wines as presents.  The wines I bought are listed below, but first a few notes on the different places I visited and on some of my choices.  I was aided by the comprehensive article in the Revue in August, which highlighted a dozen or so top picks from each chain.

The earliest wine fairs are in the cut-price supermarkets - Lidl, Aldi, Netto and Leader Price.  One could add BioCoop but their wine fair sas so chaotic that they could not even agree on a start date, so lost out as I arrived early on the first day of each.  That’s what you have to do to snap up the best bargains.  Lidl is the most impressive, with three aisles dedicated to a huge range of French and a few foreign wines.  As you can see, I found plenty of choice even without the usual array of Bordeaux reds.  Rhône reds and a nice Touraine white were my picks here.

For the rest, the budget stores ranged from the chaotic Netto (lucky to find any of the wines listed beforehand) to the interesting but slightly disorganised Leader Price and the very nicely organised Aldi, whose range I’ll explore more next year.  Although the major supermarkets’ fairs start later in September, or into October, I managed to find one of my star buys in Intermarché and (as I have done often in previous years) some good buys in Leclerc.

Two personal stories link to my wine fair visits this year.  The first is a red from the flat lands between Orange and the Dentelles de Montmirail in the southern Rhône, from the village of Violès.  When we first discovered this it followed a purchase from the organic shop Beanos in Matlock Bath, which we used a lot during our time in Derbyshire.  At that time Violès was on the bottome rung of the Côtes du Rhône, a sleepy village en route to more celebrated places like Vacqueyras, Gigondas and Beaumes de Venise.  Since then the village has acquired Côtes du Rhône Villages status itself, and the Tour des Abbesses we found in Inter was one of the best reds we’ve come across recently for  everyday drinking.  I seek it out when I visit Intermarché stores in the Cevennes, but I doubt it will be sin stock for much longer.

Second, one of the highlights of my visit to Aldi was the Bonnezeaux from a well-known producer, Château de Fesles.  The sweet chenin blanc wines from this area (the Layon valley south of Angers) are exceptional and long-lasting, one of the few white appellations outside exalted Burgundies to keep more than a few years.  But is is for this very reason that makers divest themselves of wines 15 years old or more.  We first discovered this in the 1990s when we bought 1979 Bonnezeaux from the very same producer from 3D wines, who introduced us to some of our favourite makers elsewhere.  Because these wines last so long, makers hold onto stocks but in the end have to sell them to make room in their cellars, and we profit.  This Bonnezeaux was not a great wine, but a delicious wine to drink now all the same, and it will keep a few years yet.

By the way, a late purchase not on my list below is a Savennières, another Anjou wine but this time dry but equally longlasting.  Sadly the bottle we bought from Leclerc will not be tested for longevity because we finished it between us at lunchtime today, but there is another lurking and I’ll be getting back to Leclerc in the vain hope that there may still be some left - utterly delicious.

Here is my list of purchases, 7 whites first, the rest red.

Saint Véran Louis Dailly 2017 Leader Price 8.04 €
Macon Villages Cave d'Azé 2017 Netto 4.99 €
Touraine Sauvignon Caves Gilles Gobin 2017 Lidl 3.99 €
Menetou Salon Patient Cottat 2017 Intermarché 9.95 €
Sancerre Les Fossiles, dom Roblin 2017 Intermarché 13.75 €
Alsace Riesling Rittimann Celliers de Romarin 2016 Aldi 5.99 €
Bonnezeaux Château de Fesles (50 cl) 2001 Aldi 13.99 €
CdR Villages Dom de Tavans 2017 Leader Price 5.87 €
Cahors Malbec du Clos 2015 Leader Price 5.33 €
J L Baldès
Saint Joseph Dom de Blacieux 2017 Lidl 9.99 €
Vacqueyras Terroir des Dentelles 2016 Lidl 6.99 €
SCA Rhonéa, Beaumes de Venise
Juliénas Collin-Bourisset 2017 Lidl 5.99 €
Vinsobres Dom Croze-Brunet 2016 Lidl 5.49 €
Côtes du Rhône Vill. Dom la Tour des Abbesses, Plan de Dieu 2017 Intermarché 4.49 €
Gaillac Gd réserve de Labastide de Lévis 2016 Aldi 3.99 €

Visiting the Val du Séran

By Jon North (noreply@blogger.com)

We come to the Ain almost every year to play and sing music at Val du Séran, a huge converted farm building in the lovely countryside between the Bugey area and the upper Rhône.  It's quite isolated, surrounded by green hills with some of the cows that produce milk for Comté cheese, and with more distant views of the pre-Alpine mountains.  But apart from the stimulating guidance of our host Stéphane and the marvellous cooking of his wife Chantal, we always enjoy the wines they choose to accompany our evening meals, usually showing a sure touch  in matching food and wine.

This year, for example we've had a Bordeaux Clairet accompanying tarragon chicken.  We came across this on our trip to Bordeaux earlier this year - a light-coloured red wine (like a dark rosé) usually made from merlot grapes.  Then, a Californian cabernet sauvignon full of sweet vanilla fruit in a style which is definitely not French, a really good match with a scented but mild beef curry; a smooth Fitou (from the area south of Narbonne, not far from us) with a veal and ginger dish; a beautiful red Côte du Rhône  with barbecued rissoles made from a Croatian recipe; and a Fleurie (one of the Beaujolais crûs, usually regarded as relatively light and floral) with a pork mignon served with a haricot purée.  A couple more nights of this before we return to our own less diverse choices at home.

When we come to this area, we also enjoy the local wines, particularly the white Roussette de Savoie and Seyssel, made from local grape varieties Altesse and Molette.  These are lively flavourful wines which work well as apéritifs, as Mary proves most evenings after a full day of cello playing.  AT Stéphane's recommendation we visit the maker Bernard Aimé in the village of Corbonod near the town of Seyssel itelf and close to the river Rhône which is very picturesque in this area.

We have good lunches here of salads, cheese and fruit, but (unlike our home habit) no alcohol at lunchtime so that the music is not marred by sleepiness or lack of attention!  But the evenings are a time to relax and feast, as you can see!

Living with pain

By noreply@blogger.com (Jon North)

The past year for me has seen a slow ratcheting up of pain from sciatica.  Before that I would not have believed its all-consuming force.  Even so, I am well aware that I am lucky not to have worse, and the exercise of trying to stay positive is both constructive and interesting.  When we arrived in France Mary spent months with severe tendinitis in a shoulder which she would otherwise have used to bow her cello - upsetting and frustrating but ultimately thank goodness cured.  Since then we have both had joint pain, and sod's law says that at our age this is usually in a place linked to your most creative and important activity.

Treating pain is a complex obstacle course full of blind alleys and treatments which have worked for other people, enthusiastically advocated, but they seem to have no effect when you try them yourself.  Ultimately painkillers are OK, but they kill more than the pain you are trying to treat, and if they do not upset the digestive system or attack the stomach lining they are more or less addictive.  I take them anyway, and they work at least for periods of time.  'Alternative' treatments work if you believe in them, and I tend not to which makes me a poor patient!

With the sciatica I have also been through the gamut of steroid treatments which are very good for a day or three, then just stop working, back to agonising mornings.  Surgery is something I've had with one knee replacement, with mixed results though I can walk - it is like having a posh new hinge on a door, but someone forgot to oil it properly.  Since sciatica involves eroded discs in the spine it is another level of complexity and risk altogether, and I'll go some distance to avoid it despite our appreciation of the talents of Supervet Noel Fitzpatrick.  The animals he treats are after all much less heavy than I am!

But exercise and physical treatment are another matter.  I enjoy cycling, and riding my bike around our lovely flat town or using my exercise bike at home are both constant parts of my life.  The pain goes down, and either I can read and listen to music, or enjoy passing scenery, whhile I finish a session or ride with less.

I've just got back from my latest session with a physiotherapist.  I have had several of these over the past 5 years or so, before and after knee surgery, and my expectations were low.  I'm not the only person, patient or doctor, who recognises the description of being left hitched to a machine (pulley, electrodes, whatever) for 20 minutes while your therapist attends to 2 or 3 other clients.  An hour in a treatment room with only 10 minutes' direct treatment is not uncommon.

I'm not writing to moan about bad examples of physiotherapists because this time I think I have finally found a good one.  A young man who spent 29 mins of the allotted half hour with me, pushed and pulled me both to check my limits and push them a bit, and most importantly left me with exercises I should be doing several times a day at home.  To be fair to the last man he proposed something similar, but not very well explained.  I know now what stretching I need to do and how often, and I'll do it even though my rubber mat on the floor is less convenient and comfortable than his therapy couch.

I'll see him regularly over the next 6 weeks or so.  But in the end the answer is going to be in my own hands, or legs maybe - profiting from my enjoyment of cycling outdoors and in, putting together the advice of my GP, the rheumatologist, an osteopath who tweaked my vertebrae once, and my new physiotherapist that the best treatment is going to be more exercise.  And overcoming my innate laziness to get down on the floor and do the spinal stretches every day.

Incidentally, I was puzzled about the link between the term rheumatology, all things connected with rheumatism, arthritish and pains generally in joints and muscles, and the original French/Latin root rhume meaning cold or sniffles.  Apparently ancient medicine regarded these painful conditions as linked to watery humours - who knew?  The Oxford Dictionary certainly did and does!

At the same time I remember all the time that other people (family, friends and those I meet around the place) have more serious difficulties.  I was reminded of this again this morning seeing others arriving at the physio centre as I left to ride my bike home in the sunshine.


By noreply@blogger.com (Jon North)

Well here I am again, the inconstant blogger.  I have more time to write just now, and more time to read, so this will be about reading, and specifically in praise of the Kindle.  I've nothing against other brands but I'm not the BBC so need not display impartiality and I have little experience of other electronic readers.

I am a librarian and booklover, so of course I understand and share many people's feelings that Real Books are still of value.  Some would say they are far better - Mary usually reads them, and I often do, but often I turn to my Kindle and here's why.

First of all, I read in bed.  A heavy book can be difficult to manage, and if like me you often read when your partner is asleep, a Kindle is light enough to hold in one hand and its inbuilt light is a boon.

Secondly, and I appreciate this as a librarian, you can search text.  As I get older I often lose track of the names of people and places, and find it helpful to check back to the first or a previous reference.  Who was that?  When did the place crop up or what did the person do?  On a Kindle I can check quickly back and resume reading.

Thirdly, in my frequent need to read in a foreign language (my French is improving, but slowly) if I come across a word I don't remember or have never seen before I can quickly check its meaning through the built-in dictionary.  This is a real boon, and there is a way of noting newly discovered words in a vocabulary builder which, after a while, is a good read on its own!

Fourthly I get my daily paper first thing in the morning.  Paper copies are among the most famously cluttering things in many households I have known, often piled high in garages and spare rooms when their owners cannot bear to throw them out 'in case', but they are scarcely ever re-read after a day or two.  The online papers are not there for ever but for a couple of weeks you can search, then clip and store things that interest you.

People who cling fiercely to books and never read electronic text talk of the feel and form of a real book.  I share some of this feeling, especially having worked with older out of print books, but I realise that these become fragile and should finally be conserved and consulted via scanned copies or they will be damaged beyond repair.

I don't think I shall ever stop liking having books around, but they take space and collect dust - logically a Kindle is more environmentally friendly option, and it's amazing to think that there can be scores, hundreds, of books available in one small device, more easily stored and downloaded at will.  And as travelling with heavy books is ever harder, a single device with months of good reading in it is a welcome asset.

Thinking back to our holiday in the Caucasus

By noreply@blogger.com (Jon North)

I have been wondering, thinking more or less non-stop, and dreaming as well, how to round up our extraordinary fortnight beyond the Black Sea and on the boundary between Europe and Asia.  We went knowing so little, and we have found out so much about these extraordinary small countries in the mountainous triangle between the Russian, Turkish and Iranian great powers.

We visited Armenia and Georgia, for only a week each, and could hardly have contemplated visiting Azerbaijan which is the third of the trio because its relations with Armenia are so poor.  Indeed, on a trip north and wesst around Armenia we were advised to avoid the road near the western border in case of snipers.  Since our return we have reflected as much on the shared history of the countries we visited as on the differences which struck us most forcibly during our visit.

It was only as we started to read good guidebooks (we'd especially recommend the Bradt Guide to Armenia by Deirdre Holding, and the Georgia companion by Tim Burford (Bradt also) is not bad either), and then discovered a wonderful history and contemporary survey The Caucasus: an introduction by Thomas de Waal, that we began to understand the interwoven complexities of this fascinating area.

The Genocide Memorial in Yerevan
Armenia, our first port of call and now a landlocked country of only 3+ million people, was perhaps historically the most significant, having for centuries stretched from the eastern Mediterranean through Turkey across almost the whole of the area now divided between Armenia, Georgia and Azerbaijan.  Its current identity is marked by loss - loss of territory to the Turks (who now claim the sacred Mount Ararat once the centre of the Armenian highlands from which the ethnic group originates), loss of people to the awful genocide of the early 20th century, and loss of stability in the face of war (still smouldering with Azerbaijan over the disputed territory of Nagorny Karabach) and of natural disaster in the shape of earthquakes, since the area is on a geological fault line.   One town, Spitak, the size of Lunel was almost destroyed in 1988 and most of its inhabitants killed.  The damage was still all too evident, with temporary homes in containers and railway carriages, as we travelled through the area.

Our second week in Georgia was primarily to meet again our friends Leo and Marika, whom we'd hosted in Wirksworth in the early 2000s.  We added organised tours to fill our time during the week when they had to work.  We had a quaint but comfortable hotel in the old town of Tblisi, whence we could walk around the centre and visit museums and churches, and even attend a marionette show in the charming puppet theatre (in Georgian but with English surtitles, a very entertaining folk tale that ended up with the principal characters in Paris!).
Pirosmani's Doctor on a donkey

Karen Hakobyan's instruments
Highlights of our visit included artistic visits to the beautiful small museum in Yerevan dedicated to the well-known film director Sergei Parjanov - we loved it and went back to take in more detail before leaving Armenia - and the beautiful small gallery of the artist Niko Pirosmani in Signagi.  We also met Karen Hakobyan, a maker of traditional musical instruments including the duduk, in Yerevan - a real inspiration, and I have an alto shvi, a traditional fipple flute, as a lasting memento.  The instruments are made of stained apricot wood, the traditional material.

The separate identities of the two countries were really only crystallised under Tsarist and particularly Soviet influence, one effect of which was to precipitate huge population shifts to create 3 ethnically distinct countries (it would have been diffficult if not impossible to visit Azerbaijan even if we had had time).  I read that at one time in the 19th century almost no ethnic Armenians lived in present-day Armenia, huge numbers residing in what is now Iran and many also living in Georgia (our Armenian driver Ashot, for example, was brought up in Tblisi).

But communist rule (and particularly the longs shadows of Stalin and Beria) served to sow distrust between ethnic groups which separated like oil and water.  Armenia now has a population 98% ethnically Armenian, and although Tblisi has a more cosmopolitan feel (with a mosque where Shia and Sunni worship together and Christian churches of all the various traditions), there is a feeling of bravado and of Georgian national pride as strong in its way as the Armenian one.

The distrust, and the story of the south Caucasus, revolves round ethnic and cultural minorities, not only in Nagorny Kharabakh where de facto Armenian control has left a seemingly permanent impasse between the opposed positions of Azerbaijan and Armenia that have resisted repeated international conferences all over the world and which makes any reconciliation between Armenia and Turkey even more difficult than the genocide left it, but in the north of Georgia where two autonomous regions, Abkhazia and South Ossetia,, have been set up with Russian support.  The history of these two areas is long and complicated, but it has left most Georgians with a deep distrust of Russia and a strong preference for territorial integrity.  This in turn means they support Azerbaijan in claiming back Nagorny Kharabakh which sets Georgia at odds with Armenia, although luckily the antipathy is not extgreme so you can still travel as we did from one to the other, and Armenian commerce has access to the Black sea through the southern province of Georgia where there is still a high Armenian population that has resisted ethnic cleansing.

Traditional bread-making in Garni, Armenia
Two final things for now.  First food and drink.  We had excellent food throughout, with lots of fresh fruits, vegetables and salads particularly in Armenia and some lovely soups in Georgia as well as the ubiquitous and stomach-lining khachapuri, variations on warm flat bread filled with cheese, one delicious variant of which has an egg lightly poached on top.  The Armenian wine industry is less developed than the Georgian but both use indigenous grape varieities to good effect, particulalry the red Areni (centred round a village of that name in the south) in Armenia and some good dry whites in Georgia.  But Georgia also prides itself on good sweet red and white wines made from late-picked grapes.  And then there is Armenian brandy, reputedly Churchill's favourite tipple, and the ubiquitous vodka which testifies to the strength of the Soviet influence.

Drink at the Botanic Gardens, Tblisi
Roadside food stall in Tblisi old town
Wine tasting at Château Mukhrani west of Tblisi
Second, Stalin.  An odd note to finish on, maybe, and our Georgian friends doubted if we really needed to visit the museum in Gori which he himself established.  The little town still retains his statue in hte centre, and his childhoold house is preserved under a kind of huge bus shelter.  He adopted the last Tsar's railway carriage to get around, more or less without modification.  But we were helped by a suitably irreverent English-speaking guide, himself a native of Gori.  Above all this was a reminder (in a world where Brexit and Trump remind us how near the surface divisive extremism can be) that the fragile free countries we visited are there partly as a result of Stalin who, for better or worse, permitted the development of separate states with separate identities, and partly despite the cruel bloodshed that has surrounded them throughout their history and virtually until the present.

View over Tblisi to the mountains north-west of the city
Perhaps the most powerful influences that have shaped them and allowed them to survive and develop, though, are the mountains - the High Caucasus to the north which so hampered easy Russian access to the southern countries, the mountains between Turkey and Armenia which while sacred to the latter are also a brake on easy passage, and the mountains within the countries which have allowed separatist enclaves to survive.  It also makes for lovely scenery for us tourists, even if there is a risk of the early snow we ran into twice in our fortnight.

The larger Mount Ararat with Khor Virap monastery in the foreground
Mount Ararat from the 7th century circular cathedral of Zvartnots south of Yerevan

A week in Georgia

By noreply@blogger.com (Jon North)

 I had hoped to write this sooner, but getting back home I had to catch up on life in France, so this has been the first chance I've had to publish this post about our second week away.

It was of course the original reason for our Caucasus trip - to visit the couple of Georgian friends Leo and Marika whom we had hosted while Leo was a postgraduate architecture student in Nottingham.  But they both have to work, so having spent a weekend with them we joined up with the guide Eva (also seen here) and driver Ilya for a few days' tours to places outside the capital.  The weather turned wet and cold until our last day, which spoiled a lot of views, but we still saw a lot.

Our hotel in the Old Town was comfortable and convenient for walking around the tourist centre of Tblisi, which we did often during our week's stay.  The travel agent had arranged daytime trips during the week, but over the weekend Leo drove us east to an area, Khakheti, which produces most of the country's wine.  We visited monasteries and a town wine festival, and also a gallery including works by Pirosmani, one of the country's most popular modern artists who liked his wine as you can see).



We spent the week, while Marika and Leo were at work, exploring the area west of Tblisi, including the old capital of Georgia and its cathedral, a monatery overlooking a lake and a snowy mountain pass, then later the château Mukhari, a winery of some quality.

Probably the outstanding visit of the week was to Mtskheta, the old capital of Georgia, which is just west of Tblisi at the confluence of 2 rivers.  The 6th century Jvari monastery is on a promontory overlooking the rivers, and the 11th century cathedral of Mtskheta just below.  Both were impressive - photos to finish this brief post, and more to come as I reflect on the complex, intertwined history and culture of the two countries we visited over this memorable fortnight.


A week in Armenia 14-20 October 2016

By noreply@blogger.com (Jon North)

We'd thought of visiting our friends in Georgia for a few years, and Mary finally made the arrangements this summer as we celebrate 40 years together.  She found a travel agent in Montpellier which does Asian tours including an Armenian trip with an extension into Georgia, and since the season is nearly over they offered us an individual fortnight's holiday for 2.  This week we were in Armenia, and next we'll be in Georgia whence we fly home to France.

So this is a bit about our first week.  The best story is told through photos, but although I can easily put these on Facebook from this tablet, getting them into a blog will be much easier once I'm home with my laptop.  For now, some verbal impressions.  We travelled to Yerevan via Vienna, arriving in the early hours of Friday last.  Our guide Marietta and driver Ashot met us at the airport and have accompanied daily with friendly and professional care - they usually leave us evenings to recover, but this evening they've invited us for a farewell meal before they both accompany us to the airport at 5 tomorrow morning.

We have spent most of the time based in Yerevan, a sprawling mixture of Soviet blocks, shacks, building sites and splendid modern plazas and developments, home to around a million people, with very busy roads, and few bikes or motor bikes.  Roads outside the capital, and even back roads in Yerevan, are mostly in a poor state, and Ashot has needed all his skill to keep us out of most of the potholes in his Mercedes minibus.

Marietta, who is proud of her French, is even prouder of her country and people.  In fact, many people we met were anxious to get our opinion and approval of Armenia.  We had little real knowledge of it before we came, and only found a really good guidebook (in the Bradt guides series - http://www.bradtguides.com/destinations/europe/armenia.html) after our arrival, but we rapidly realised that this small nation with its quirky and unique alphabet derives its intense national pride from its history, up to the present day, of defining itself in the melting pot of the Caucasus, between the powerful political jaws of Russia and Turkey and as a Christian country under pressure from Muslim neighbours.

We have visited Christian heritage in many monasteries and saw incredible and ancient remains including countless lovely carvings, and we witnessed briefly the Sunday mass and beautiful singing at the cathedral.  We discovered local traditions - musical instruments like the doudouk, bread making - and extraordinary artists like Sergei Paradjanov.  We have been to wine and brandy tastings and learnt about local grape varieties.  And we have eaten good food, based hugely around fresh fruit and veg and salads and cooked vegetables prepared in countless ways, interesting local cheeses, creams and yoghurts, plus nice meat especially in stuffings for vine leaves.  And drunk a lot of good coffee.

We have ventured out of Yerevan to do all this on day excursions, mostly on day excursions but once on a 2-day trip via the huge lake Sevan north near the Azeri and Georgian borders, a journey plagued by rain then snow which forced us to alter our route, all of which Ashot handled well despite dropping temperatures.  On that trip we were reminded of the latest catastrophic earthquake in the north-west - Armenia lies on a tectonic fault-line.  Tragedies near the epicentre were heightened by poor Soviet-era building standards so that whole buildings collapsed killing thousands.

Such tragedies, and wars, pale into insignificance beside the 1915 genocide which has occupied our minds increasingly towards the end of our visit.  Wikipedia and the official genocide memorial website give much valuable information but nothing quite prepares you for the terrible graphic reality of the museum exhibition witnessing to the enforced death of over a million Armenians expelled from their homes and neighbourhoods.

I could go on but it will suffice to finish with our own testimony to a friendly and hospitable people despite, perhaps partly because of the tragedies and economic hardship they have suffered and despite the difficulties many still face.  We are happy to do our small part to make this place and these people better-known.

Why is the NHS listening to the siren voices of the vape manufacturers? | Victoria Coren Mitchell

By Victoria Coren Mitchell

The calls to make e-cigarettes free on prescription are outrageous when an actual cure for smoking is available

Public Health England has called for e-cigarettes to be made available on the NHS. This makes me so angry that I want to have a fag, although the last one I had was on 27 September 2014.

Ah well. I’ll settle for eating another packet of Minstrels and typing furiously.

Continue reading...

The checkout free shop is a wonderful idea, a machine will never judge you | Victoria Coren Mitchell

By Victoria Coren Mitchell

When we no longer have to impress the cashier – or fellow shoppers – we can buy what we like

Are you frightened of the rising machines? I try not to be. Machines are the future and being horrified by the future is so terribly ageing. Banging on about the misery of automated switchboards, the insecurity of online banking or the impersonality of email puts 20 years on you immediately, like racism or natural light. I try to avoid such things.

So, for me, it’s all “Good news, my local post office has shut down!”, “Ooh, you need a ‘registered account’ to buy cinema tickets, I couldn’t be happier!” and “Hurray! A leaked NHS England report says 111 calls will soon be diverted to a ‘diagnosis app’ instead of a person!”

Continue reading...

I did lose a pair of trousers once but they weren’t worth £1m, Boris | Victoria Coren Mitchell

By Victoria Coren Mitchell

The bankrupt tennis star’s admission that he has mislaid his trophies resonates with all of us who know we put that thing somewhere…

A s I sat with Boris Becker in the Riviera sunshine, each of us clutching a cigarette in one hand and a doughnut in the other, I thought: “This is my kind of sportsman.”

I didn’t know Boris Becker very well but I liked him enormously. Clearly, we both enjoyed the taste of a sugary butt on a spring afternoon. Also, we both loved a hand of cards; we were in Monte Carlo for a €10,000 poker tournament. I always found him approachable, friendly, unpretentious and nice to be around.

Continue reading...

Comparing unlike with unlike – it’s Whitehall’s secret new parlour game | Victoria Coren Mitchell

By Victoria Coren Mitchell

If the culture minister says that ambassadors should be paid more than BBC editors, we should next ask him how to choose between Victoria Beckham and a leopard

Well done Peston On Sunday, last week, for having three interview guests and triggering major news stories with each of them. That’s an amazing hit rate.

First guest Jeremy Corbyn hit the headlines for suggesting that the UK doesn’t really have a special relationship with America. Third guest Miriam Margolyes said “fuck” live on air. And the middle guest, shiny new culture secretary Matt Hancock, said that editors at the BBC should not be paid more than ambassadors.

Continue reading...

Molly tries to shuffle the pack | Victoria Coren Mitchell

By Victoria Coren Mitchell

The more things change the more they stay the same – even in a film about a strong woman

Can Hollywood fix itself? Is that already happening? Let’s go to the cinema together and find out.

It’ll have to be my local Everyman – a genteel chain where they transmit a lot of productions live from the National Theatre and sell yoghurt-coated nuts instead of Minstrels. Might not be your cup of tea. On the plus side, you can also get a cup of tea. It has to be that venue, because the trip has already happened.

Continue reading...

My Christmas present to you

By Victoria Coren Mitchell

Hate gift guides? Here’s an alternative to all those that insult you with dull ideas

The gift guides are out again! Regular readers will know how infuriated I am by those Christmas gift guides. Pages and pages of newsprint, all given over to the advice that we should consider buying our relatives a pair of socks or a bottle of wine.

Adding insult to insult, they invariably divide these “ideas” into relatives (“A lipstick for your wife! A book for your mum! A bottle of wine for Grandpa!”) just to make sure that nobody shops beyond the boundaries of age and gender stereotype. Not only must we buy the same old stuff every year, we must make the same old assumptions. Women love clothes. Kids love sweets. Men love golf calendars.

Continue reading...

Ed Sheeran versus the super-idiots | Victoria Coren Mitchell

By Victoria Coren Mitchell

Attacking the singer’s charity efforts takes a rare type of stupidity. But guess what...

According to a Dropbox survey published last week, most people believe that “only 68% of their work colleagues” are capable of the job.

This is a staggering figure. Why so high? Nobody’s capable of the job. Nobody’s capable of anything.

Related: Ed Sheeran Comic Relief film branded 'poverty porn' by aid watchdog

Continue reading...

Michael Gove, where did our love go? | Victoria Coren Mitchell

By Victoria Coren Mitchell

The environment secretary has shown a flash of his old character but I can’t forgive his betrayal

Did you wake up on Thursday morning expecting to feel a wave of affection for Michael Gove? I didn’t. I’m not sure anyone did. Possibly not even Mrs Gove, who wrote a very interesting joke in her Daily Mail column the day before.

“Kevin Spacey and Harvey Weinstein are reportedly languishing in rehab at an upmarket sex addiction clinic in Arizona,” it began. “No sex for eight weeks, apparently – although quite why they needed to fly to the desert for that is beyond me. Most of us find getting married does the trick.”

Continue reading...

Why are the police copping flak? | Victoria Coren Mitchell

By Victoria Coren Mitchell

Don’t damn officers for a Halloween prank – law and order should show it has bit of heart

It is possible that I have many things in common with Fenland police. You can’t do Only Connect for as long as I have without knowing that one thing can always be linked to another. Four things can be a challenge, but a simple pair, such as Fenland police and me… off the top of my head: we both like to wear blue, we’ve both dealt with a lot of drunks and neither of us has managed to stamp out hare-coursing in the county of Cambridgeshire.

And here’s another: we both tweeted pictures of ourselves dressed up for Halloween.

Continue reading...

Casinos gamble on their credibility | Victoria Coren Mitchell

By Victoria Coren Mitchell

If you’re too smart for gaming houses they’ll find a way to stop you - but more fool them

It is rare to see Phil Ivey, the greatest poker player of our time, losing seriously. This man is a genius. He can get inside other people’s heads.

The first time I played poker against him, I think he found me a little unsettling. People do, the first time. In Phil’s case, I don’t think it’s just that I was female – which is what throws most people – but that I was female and making jokes.

Continue reading...

Faster, higher, twerkier? | Victoria Coren Mitchell

By Victoria Coren Mitchell

Why stop at pole dancing at the Olympics? Let’s have groping and mud wrestling as well

The news that pole dancing has been formally recognised as a sport – and will now be considered for possible inclusion in the Olympics – fills me with delight.

Regular readers may be surprised. You might imagine I would feel weary and suspicious at this development. You might imagine I’d roll my eyes and ask: “What next? A simultaneous men’s event – how many bills can you shove in her bra as she writhes?”

Continue reading...

I’m really not a petrolhead... | Victoria Coren Mitchell

By Victoria Coren Mitchell

... but the thought of driverless cars and the surrender of freedom fill me with gloom

God bless the women of Saudi Arabia and their excitement about a royal decree allowing them to hold driving licences at last.

As we sit in traffic jams, fuming about inexplicable delays and unending roadworks, terrible radio playlists, the utter monotony and hell of it all, we should think of our sisters in the desert who see only the freedom, power and joy.

Continue reading...

Putting Granny online? No thanks| Victoria Coren Mitchell

By Victoria Coren Mitchell

I’m all for doing something for old people. But don’t ask me to put family snaps on the web

Today is National Grandparents’ Day. AgeUK is asking people to tweet, Instagram, hashtag (and other words your granny would not have understood) a photograph of their beloved ancestors, marked #grandpics, with a suggested donation of £5 with every photograph.

They asked me directly to do this. I said no. F*** em, I said.

Continue reading...

Oh, do let’s be beastly to the Nazis | Victoria Coren Mitchell

By Victoria Coren Mitchell

Nobody thinks Paul Hollywood is an actual Nazi; we should let him dress how he likes

A Nazi goes into a pub.

Hang on… that’s not a Nazi! It’s the well-known baker and TV personality Paul Hollywood!

Continue reading...

High street betting must clean up its act | Victoria Coren Mitchell

By Victoria Coren Mitchell

My column about the evils of fixed-odd betting terminals brought almost universal agreement but a few voiced their dissent. Let me answer my critics

Since my column last week about fixed-odds betting terminals, I’ve been getting hundreds of messages a day. Ninety-five percent of them agree with my view that these high-stakes modern slot machines should be restricted. I don’t think I’ve ever written a column that encountered more assent – or less dissent – apart from the one about “funeral crashers” who skulked around misleading the bereaved in hope of free booze. Not many people came out in support of those guys.

But FOBT machines are equal to the funeral crashers in their rapacious appetites, and inspired almost as little praise. The unanimity of the response was heartening and baffling at the same time: left-wingers and right-wingers, Labour MPs and Tory MPs, betting-shop workers, betting-shop punters and people who have never been in a betting shop; old and young, the addicts and the free; all united in agreement that the machines should be capped.

Continue reading...

Weekly Update 164

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

It's a late, early in the day, hazy, bush-firey Aussie weekly update with a whole bunch of various bits and pieces of interest from throughout the week. The references below will give you a sense of how much I've jammed into this week so I won't repeat it all here

HSTS From Top to Bottom or GTFO

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

We're pretty much at a "secure by default" internet these days, at least that's the assumption with most websites, particularly so in the financial sector. About 80% of all web pages are loaded over an HTTPS connection, browsers are increasingly naggy when anything isn't HTTPS and it's never been cheaper

Weekly Update 163

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

It's been a pretty full week this one with a couple of talks in Sydney followed by another in Melbourne. Then, to top it all off, getting sick hasn't helped and oh boy did this one hurt. Good news is that even just a few hours after recording this video

Weekly Update 162

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Ah, impending summer on the Gold Coast! It's that time of year when you can just start to sense those warm beach days and it's absolutely my favourite time of year here. Which means... it's time to head off to other events again. Fortunately it's all domestic this time as

Weekly Update 161

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

It's my first conference back in Australia since probably about May and I'm experiencing a rare luxury - not flying! I'm sticking to driving some big distances just to get a break from the tyranny that is check-in, security and airport lounges. Seriously, it was beginning to do my head

Weekly Update 160

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Australia! Geez it's nice to sit amongst the gum trees and listen to the birds, even if it's right in the middle of some fairly miserable weather. I'll continue to be here for the foreseeable future too, at least in one state or another. But being back here hasn't stopped

Weekly Update 159

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Well, this will be the last weekly update done overseas for some time as I count down the return to beaches, sunshine and fantastic coffee (yes, I'm confident saying that even whilst in Italy!) It's been a non-stop trip with an attempt of a bit of downtime at the end

Weekly Update 158

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

It's been a bit of intense country-hopping since the last update so this one is a consolidated "this week in tweets" version. I actually found it kind of interesting going back through the noteworthy incidents of the week in lieu of having original content of my own, see what you

Weekly Update 157

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Hungary! And that's about as much intro as I'm going to do on that because this is going out super later and I'm writing this at the end of a very long day. Only other thing I'll mention is the audio - the Instamic failed to record again so it's

Banks, Arbitrary Password Restrictions and Why They Don't Matter

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Allow me to be controversial for a moment: arbitrary password restrictions on banks such as short max lengths and disallowed characters don't matter. Also, allow me to argue with myself for a moment: banks shouldn't have these restrictions in place anyway.

I want to put forward cases for both arguments

Weekly Update 156

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Turns out it's actually a sunny day in Oslo today, although it's the last one I'll see here for quite some time before heading off to Denmark then other European things for the remainder of this trip. I'm talking a little about those events (all listed on my events page

Weekly Update 155

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

From the emerging spring to the impending autumn, I'm back in Oslo at the beginning of another series of European events that'll take me across Norway, Denmark, Hungary and Switzerland. This week's update comes from under the glow of a warm outdoor heater at ridiculous o'clock as my sleep cycle

Weekly Update 154

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

How's that for a setting in this week's video? 🌴 First day of spring here which aligned with a father's day on the water:

Back on business as

Weekly Update 153

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

Australia! Sunshine, good coffee and back in the water on the tail end of "winter". I'm pretty late doing this week's video as the time has disappeared rather quickly and I'm making the most of it before the next round of events. Be that as it may, there's a bunch

Weekly Update 152

By Troy Hunt

Presently sponsored by: IVPN. Mass surveillance is a reality. A VPN can't solve this issue, but it's a great first step. Use one that puts principle before profit.

I made it out of Vegas! That was a rather intense 8 days and if I'm honest, returning to the relative tranquillity of Oslo has been lovely (not to mention the massive uptick in coffee quality). But just as the US to Europe jet lag passes, it's time to head

Election 2019: sector bodies and housing charities unveil pleas to incoming government

By James Wilmore

Trade bodies and charities have kicked off their general election lobbying efforts with pleas to build more social housing, reform the benefit system and end homelessness. 

Regulatory judgements: London council becomes latest authority to breach Home Standard

By Jack Simpson and Lucie Heath

A London council has become the latest local authority to breach the Home Standard after the regulator identified failures in relation to fire safety, gas safety and asbestos management.

St Mungo’s chief executive to step down next year

By Lucie Heath

The chief executive of St Mungo’s has announced plans to step down. It comes one week after an internal review confirmed the charity had shared homeless people’s data with the Home Office.

Kensington MP calls for apology over rival’s ‘libellous’ Grenfell cladding claim

By Peter Apps

The Labour candidate for Kensington has warned her Liberal Democrat rival that she would considering suing if he doesn’t apologise for a claim that she was involved in discussions about cladding Grenfell Tower.

Short on time? Wednesday’s housing news in five minutes

By James Wilmore

A round-up of the top stories this morning from Inside Housing and elsewhere

If politicians want to solve the housing crisis this is what they must promise

By Kate Henderson

Building new affordable homes, making buildings safe and fixing the welfare system should be the major priorities for politicians as we approach the general election, writes Kate Henderson

Clarion becomes first UK housing association to secure sustainable housing label

By Lucie Heath

Clarion has become the first housing association in the UK to be approved for a newly created sustainable housing label, which aims to help affordable housing providers attract capital from impact investors.

The social housing network: how Facebook is changing the relationship between social landlords and tenants

By Alex Turner

Facebook groups have given tenants a new way of ramping up pressure on landlords to improve performance. But does this mean the relationship has to be adversarial? Alex Turner finds out

One in 10 associations believe regulator could do more to tackle breaches

By James Wilmore

One in 10 social landlords regulated by the Regulator of Social Housing (RSH) believe the body could be tougher on those that breach standards.

Large London association becomes latest to leave sector pension scheme

By James Wilmore

Metropolitan Thames Valley has become the latest major housing association to quit the sector’s Social Housing Pension Scheme (SHPS). 

Grenfell contractor wins £100m contract to redevelop London estate

By James Wilmore

A London council has officially announced the selection of Rydon for a £100m estate regeneration scheme, days after the secretary of state said it should no longer bid for public works. 

Councils named as Hackitt early adopters

By Nathaniel Barker

The government has invited a selection of local authorities to become ‘early adopters’ of recommendations proposed in the Hackitt Review of building safety.

Short on time? Tuesday’s housing news in five minutes

By Jack Simpson

A round-up of the top stories this morning from Inside Housing and elsewhere

Floods force housing association to evacuate staff and close office

By James Wilmore

Staff remain shut out of the Sheffield office of a housing association after they were forced to evacuate because of floods that have swept parts of England.

Housing associations can help put an end to the scandal of veteran homelessness

By Ed Tytherleigh

Too many veterans are struggling with housing issues and make up 3% of the street homeless population. The housing sector can act to change this, writes Ed Tytherleigh

General election 2019: What is Labour's four-day working week plan?

Labour says it would introduce a shorter working week, but the Conservatives say it would "cripple the NHS".

Arsene Wenger: Fifa appoints former Arsenal manager to senior role

Former Arsenal boss Arsene Wenger agrees to become Fifa's new chief of global football development.

England flooding: Fishlake residents 'could be homeless for weeks'

Boris Johnson is heckled on a visit to South Yorkshire as 200 Army personnel join the relief effort.

Royal Mail wins bid to halt Christmas postal strikes

The postal union says a decision by the High Court to block industrial action is an "utter outrage".

Thijssen in intensive care after heavy crash at Ghent Six Day

Belgium's Gerben Thijssen is in intensive care after being injured in a heavy crash on the first night of racing at the Ghent Six Day.

TalkTalk keeps results under wraps citing 'advanced negotiations' over FibreNation biz

By Kat Hall

Has it found an investor in £1.5bn venture to build 3 million FTTP connections?

TalkTalk has today delayed its financial results due to "advanced negotiations with interested parties regarding its FibreNation business".…

Sutton will not return to tribunal after storming out

Ex-British Cycling technical director and Team Sky head coach Shane Sutton will not return to give evidence at Dr Richard Freeman's medical tribunal after storming out on Tuesday.

What is a 'national emergency' - and can it help flood victims?

It has caused a political row but can declaring an emergency help victims of flooding?

Silva banned and fined for Mendy tweet despite 'not intending' offence

Manchester City forward Bernardo Silva is suspended for one first-team match and fined £50,000 for his tweet relating to team-mate Benjamin Mendy.

Toy sales slump as shops chase Christmas cheer

Parents have cut back on impulse buys and face the threat of shortages of festive favourites, analysts say.

I am railing: Sir Rod Stewart reveals his epic model railway city

He has released 13 studio albums and been on 19 tours since he started building it 23 years ago.

Thanks, Brexit. Tesla boss Elon Musk reveals Berlin as location for Euro Gigafactory

By Jude Karabus

Was UK even really in the running?

'Leccy car baron and space botherer Elon Musk has unveiled a surprising pick of Berlin for the company's European "Gigafactory 4", quickly following up by blabbing to car mag Auto Express that "Brexit had made it too risky to put a Gigafactory in the UK."…

'Berlin rocks,' says Elon Musk as he chooses European factory

Elon Musk tells AutoExpress Brexit made the UK "too risky" for his first major European factory.

General election 2019: Labour vows to outspend Tories on the NHS

The party says it would tax the "wealthiest" to cut hospital waiting times if it wins the election.

Venice floods: Climate change behind highest tide in 50 years, says mayor

A state of disaster is declared as the Italian city is hit with a high tide of more than 1.87m.

5 Reasons It’s Financial Ruin If You’re Not Monitoring Your Online Business

By Joep Piscaer

Poor digital experience can kill your business. 57% of shoppers have left a slow e-commerce site and then bought from a similar retailer; 23% of shoppers subsequently never returned to the site, according to Yottaa. So even if you provide a positive customer experience nine out of 10 times, the one time you don’t could […]

The post 5 Reasons It’s Financial Ruin If You’re Not Monitoring Your Online Business appeared first on Pingdom Royal.

Datasette 0.31

Datasette 0.31

Released today: this version adds compatibility with Python 3.8 and breaks compatibility with Python 3.5. Since Glitch support Python 3.7.3 now I decided I could finally give up on 3.5. This means Datasette can use f-strings now, but more importantly it opens up the opportunity to start taking advantage of Starlette, which makes all kinds of interesting new ASGI-based plugins much easier to build.

My Python Development Environment, 2020 Edition

My Python Development Environment, 2020 Edition

Jacob Kaplan-Moss shares what works for him as a Python environment coming into 2020: pyenv, poetry, and pipx. I'm not a frequent user of any of those tools - it definitely looks like I should be.

Via @jacobian

Weeknotes: Python 3.7 on Glitch, datasette-render-markdown

Streaks is really working well for me. I’m at 12 days of commits to Datasette, 16 posting a daily Niche Museum, 19 of actually reviewing my email inbox and 14 of guitar practice. I rewarded myself for that last one by purchasing an actual classical (as opposed to acoustic) guitar.


One downside: since my aim is to land a commit to Datasette master every day, I’m incentivised to land small changes. I have a bunch of much larger Datasette projects in the works - I think my goal for the next week should be to land one of those. Contenders include:

I’m going to redefine my daily goal to include pushing in-progress work to Datasette branches in an attempt to escape that false incentive.

New datasette-csvs using Python 3.7 on Glitch

The main reason I’ve been strict about keeping Datasette compatible with Python 3.5 is that it was the only version supported by Glitch, and Glitch has become my favourite tool for getting people up and running with Datasette quickly.

There’s been a long running Glitch support thread requesting an upgrade, and last week it finally bore fruit. Projects on Glitch now get python3 pointing to Python 3.7.5 instead!

This actually broke my datasette-csvs project at first, because for some reason under Python 3.7 the Pandas dependency used by csvs-to-sqlite started taking up too much space from the 200MB Glitch instance quota. I ended up working around this by switching over to using my sqlite-utils CLI tool instead, which has much lighter dependencies.

I’ve shared the new code for my Glitch project in the datasette-csvs repo on GitHub.

The one thing missing from sqlite-utils insert my.db mytable myfile.csv --csv right now is the ability to run it against multiple files at once - something csvs-to-sqlite handles really well. I ended up finally learning how to use while in bash and wrote the following install.sh shell script:

$ pip3 install -U -r requirements.txt --user && \
  mkdir -p .data && \
  rm .data/data.db || true && \
  for f in *.csv
        sqlite-utils insert .data/data.db ${f%.*} $f --csv

${f%.*} is the bash incantation for stripping off the file extension - so the above evaluates to this for each of the CSV files it finds in the root directory:

$ sqlite-utils insert .data/data.db trees trees.csv --csv

github-to-sqlite releases

I released github-to-sqlite 0.6 with a new sub-command:

$ github-to-sqlite releases github.db simonw/datasette

It grabs all of the releases for a repository using the GitHub releases API.

I’m using this for my personal Dogsheep instance, but I’m also planning to use this for the forthcoming Datasette website - I want to pull together all of the releases of all of the Datasette Ecosystem of projects in one place.

I decided to exercise my new bash while skills and write a script to run by cron once an hour which fetches all of my repos (from both my simonw account and my dogsheep GitHub organization) and then fetches their releases.

Since I don’t want to fetch releases for all 257 of my personal GitHub repos - just the repos which relate to Datasette - I started applying a new datasette-io topic (for datasette.io, my planned website domain) to the repos that I want to pull releases from.

Then I came up with this shell script monstrosity:

# Fetch repos for simonw and dogsheep
github-to-sqlite repos github.db simonw dogsheep -a auth.json

# Fetch releases for the repos tagged 'datasette-io'
sqlite-utils github.db "
select full_name from repos where rowid in (
    select repos.rowid from repos, json_each(repos.topics) j
    where j.value = 'datasette-io'
)" --csv --no-headers | while read repo;
    do github-to-sqlite releases \
            github.db $(echo $repo | tr -d '\r') \
            -a auth.json;
        sleep 2;

Here’s an example of the database this produces, running on Cloud Run: https://github-to-sqlite-releases-j7hipcg4aq-uc.a.run.app

I’m using the ability of sqlite-utils to run a SQL query and return the results as CSV, but without the header row. Then I pipe the results through a while loop and use them to call the github-to-sqlite releases command against each repo.

I ran into a weird bug which turned out to be caused by the CSV output using \r\n which was fed into github-to-sqlite releases as simonw/datasette\r - I fixed that using $(echo $repo | tr -d '\r').


Now that I have a releases database table with all of the releases of my various packages I want to be able to browse them in one place. I fired up Datasette and realized that the most interesting information is in the body column, which contains markdown.

So I built a plugin for the render_cell plugin hook which safely renders markdown data as HTML. Here’s the full implementation of the plugin:

import bleach
import markdown
from datasette import hookimpl
import jinja2

    "a", "abbr", "acronym", "b", "blockquote", "code", "em",
    "i", "li", "ol", "strong", "ul", "pre", "p", "h1","h2",
    "h3", "h4", "h5", "h6",

def render_cell(value, column):
    if not isinstance(value, str):
        return None
    # Only convert to markdown if table ends in _markdown
    if not column.endswith("_markdown"):
        return None
    # Render it!
    html = bleach.linkify(
            markdown.markdown(value, output_format="html5"),
    return jinja2.Markup(html)

This first release of the plugin just looks for column names that end in _markdown and renders those. So the following SQL query does what I need:

  json_object("label", repos.full_name, "href", repos.html_url) as repo,
  ) as release,
  substr(releases.published_at, 0, 11) as date,
  releases.body as body_markdown,
  join repos on repos.id = releases.repo
order by
  releases.published_at desc

In aliases releases.body to body_markdown to trigger the markdown rendering, and uses json_object(...) to cause datasette-json-html to render some links.

You can see the results here.

Releases SQL results

More museums

I added another 7 museums to www.niche-museums.com.



Jacob Kaplan-Moss just released the second Dogsheep tool that wasn't written by me (after goodreads-to-sqlite by Tobias Kunze) - this one imports your Pinterest bookmarks. The repo includes a really clean minimal example of how to use GitHub actions to run tests and release packages to PyPI.

Via @jacobian

The first ever commit to Sentry

The first ever commit to Sentry

This is fascinating: the first 70 lines of code that started the Sentry error tracking project. It's a straight-forward Django process_exception() middleware method that collects the traceback and the exception class and saves them to a database. The trick of using the md5 hash of the traceback message to de-dupe errors has been there from the start, and remains one of my favourite things about the design of Sentry.

Via David Cramer

Automate the Boring Stuff with Python: Working with PDF and Word Documents

Automate the Boring Stuff with Python: Working with PDF and Word Documents

I stumbled across this while trying to extract some data from a PDF file (the kind of file with actual text in it as opposed to dodgy scanned images) and it worked perfectly: PyPDF2.PdfFileReader(open("file.pdf", "rb")).getPage(0).extractText()

Web Application Monitoring Best Practices During Peak Online Shopping

By Faria Akram

Seasonality in E-Commerce Comes in Many Forms Many e-commerce sites deal with seasonality. Trends such as meteorological seasons, or annual events like Christmas, Cyber Monday, Thanksgiving, and more, increase the demand substantially, creating massive sales opportunities at specific peak moments throughout the year. A fair percentage (up to about 30%) of annual revenue can come […]

The post Web Application Monitoring Best Practices During Peak Online Shopping appeared first on Pingdom Royal.

Weeknotes: More releases, more museums

Lots of small releases this week.


I released two bug fix releases for Datasette - 0.30.1 and 0.30.2. Changelog here. My Dogsheep personal analytics project means I'm using Datasette for my own data analysis every day, which inspires me to fix small but annoying bugs much more aggressively.

I've also set myself a Streak goal to land a commit to Datasette every day.

I landed a tiny new feature to master yesterday: a ?column__notin=x,y,z filter, working as an inverse of the existing ?column__in=x,y,z filter. See issue #614 for details.

More Niche Museums

I've been keeping up my streak of adding at least one new museum to www.niche-museums.com every day. This week I added the Pirates Museum in Antananarivo, Madagascar, the David Rumsey Map Center at Stanford, Galerie de Paléontologie et d’Anatomie comparée in Paris, DEVIL-ish Little Things in Vancouver, Washington, Mardi Gras World in New Orleans, Environmental Volunteers EcoCenter in Palo Alto, the Evergreen Aviation & Space Museum (home of the Spruce Goose!) in McMinnville Oregon and Autoservicio Condorito in Mendoza.

Here's that list of new museums with my photos of them (images rendered using datasette-json-html).


I released a new tiny CLI tool for manipulating SQLite databases. sqlite-transform lets you run transformation functions against the values in a specific column of a database. It currently has three sub-commands:

Here's how to use it to wrap the values in a specific column, including importing the textwrap module from the Python standard library:

$ sqlite-transform lambda my.db mytable mycolumn \
    --code='"\n".join(textwrap.wrap(value, 10))' \

Other releases


I've been having a lot of fun creating new features for my personal Dogsheep analytics site. Many of these take the form of simple HTML added to the private homepage. Most recently I added the ability to search through the people who follow me on Twitter (an evolution of this technique from last year). That feature is entirely implemented as the following HTML form:

  <form action="/twitter/users" method="GET">
      <input type="hidden" name="_where" value="id in (select follower_id from following where followed_id = 12497)">
      <input name="_search" type="search" placeholder="Search my Twitter followers"> <input type="submit" value="Search">

More tree data

I exported all 3.85 million 311 calls from the San Francisco data portal into a database, then extracted out the 80,000 calls that mention trees and loaded them into a separate Datasette instance. You can play with that here - it was the inspiration for creating the sqlite-transform tool because I needed a way to clean up the datetime columns.



Really useful minimal example of a Binder project. Click the button to launch a Jupyter notebook in Binder that can take screenshots of URLs using Selenium-controlled headless Firefox. The binder/ folder uses an apt.txt file to install Firefox, requirements.txt to get some Python dependencies and a postBuild Python script to download the Gecko Selenium driver.

Via Tony Hirst

Cloud Run Button: Click-to-deploy your git repos to Google Cloud

Cloud Run Button: Click-to-deploy your git repos to Google Cloud

Google Cloud Run now has its own version of the Heroku deploy button: you can add a button to a GitHub repository which, when clicked, will provide an interface for deploying your repo to the user's own Google Cloud account using Cloud Run.

Via Joe Gregorio



I released a new CLI tool today: sqlite-transform, which lets you run "transformations" against a SQLite database. I built it out of frustration of constantly running into CSV files that use horrible American date formatting - the "sqlite-transform parsedatetime my.db mytable col1" command runs dateutil's parser against those columns and replaces them with a nice, sortable ISO formatted timestamp. I've also added a "sqlite-transform lambda" command that lets you specify Python code directly on the command-line that should be used to transform every value in a specified column.

Tour d'Orwell: No. 1 South End Road

In yet one more George Orwell-themed outing, No. 1 South End Road in South Hampstead in north London is the former location of the bookshop that George Orwell worked at from 1934-1935.

He would write rather touchingly about his experiences in an essay titled Bookshop Memories where he, inter alia, described it as a place patronised by those who…

… would be a nuisance anywhere, but have special opportunities in a bookshop.

And in a further comment that has modern day echoes in Netflix, iPlayer and friends:

In a lending library you see people's real tastes, not their pretended ones.

I was meeting with fellow Blairite — Eric…! — to whom I was finally able to gift a copy of Burmese Days that I had acquired in Southwold, the Suffolk village in which he wrote it.

In a nod to Orwell's multiculturalism today the bookshop is now a (Belgian) «Le Pain Quotidien» and big glass windows ensure it is no longer a "gloomy cave of a place." I had a fairly passable and somewhat ironic shakshuka, something that Orwell himself might have sampled whilst residing in Marrakech...

Why you should use `python -m pip`

Why you should use `python -m pip`

Brett Cannon explains why he prefers "python -m pip install..." to "pip install..." - it ensures you always know exactly which Python interpreter environment you are installing packages for. He also makes the case for always installing into a virtual environment, created using "python -m venv".

Via @brettsky

Free software activities in October 2019

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

Reproducible builds

Whilst anyone can inspect the source code of free software for malicious flaws almost all software is distributed pre-compiled to end users.

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

The initiative is proud to be a member project of the Software Freedom Conservancy, a not-for-profit 501(c)(3) charity focused on ethical technology and user freedom.

Conservancy acts as a corporate umbrella, allowing projects to operate as non-profit initiatives without managing their own corporate structure. If you like the work of the Conservancy or the Reproducible Builds project, please consider becoming an official supporter.

This month, I:


diffoscope is our in-depth and content-aware diff utility that can locate and diagnose reproducibility issues. This month, I made the following changes:


I filed two patches against the r-base package for not respecting the nocheck and nodoc build profiles respectfully (#942867 & #942870) as well as filing a bug against python3-pluggy for missing a dependency on python3-importlib-metadata (#943320).


Debian LTS

This month I have worked 18 hours on Debian Long Term Support (LTS) and 12 hours on its sister Extended LTS project.

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

FTP Team

As a Debian FTP assistant I ACCEPTed 25 packages: backintime, celery-batches, eslint, golang-github-containers-image, gtk-d, jsbundle-web-interfaces, networkx, node-eslint-plugin-eslint-plugin, node-eslint-plugin-node, node-eslint-scope, node-eslint-visitor-keys, node-esquery, node-file-entry-cache, node-flatted, node-functional-red-black-tree, node-ignore, node-leche, node-mock-fs, node-proxyquire, numpy, openvswitch, puppet-module-voxpupuli-collectd, pyrsistent, python-dbussy & z3.

I additionally filed 5 RC bugs against packages that had potentially-incomplete debian/copyright files against backintime, celery-batches, networkx, openvswitch & z3.

Nike won’t sell directly to Amazon anymore


The NYPD kept an illegal database of juvenile fingerprints for years


16-inch MacBook Pro


The 16-Inch MacBook Pro


How internet ads work


The Perl Master Plan: How to Put Perl Back on Top


Jerry (YC S17) Is Hiring Senior Software Developers (Toronto)


Google plans to partner with banks to offer checking accounts


The Problem with Diamonds Is They Keep Getting Cheaper


Show HN: Can a neural network predict if your HN post title will get up votes?


Book Review: The Body Keeps the Score


Developing open-source FPGA tools


OpenSwiftUI – An Open Source Re-Implementation of SwiftUI


OpenBSD: Why and How (2016)


More Intel speculative execution vulnerabilities


Montgomery Brewster's 'None of the Above' would walk this election.

By Jackart (noreply@blogger.com)

It's actually quite liberating to follow politics without a team to shout for. I remain a Conservative by inclination. I like free markets, economic liberalism and so forth even if the Conservative manifesto doesn't seem to all that much, Tories, if not their leadership, are mainly for these things. I am also a social liberal, I remain committed to an open and tolerant society. However the Liberal Democrats risk becoming the Church of England does Politics, being stuffed with the kind of dry, shabby inadequate who can't quite get over his (self) loathing of homosexuality. I dislike May. I think she's a narrow-minded provincial bigot who's been promoted way, way above her level of competence. She is however the best of the two candidates for Prime Minister. 

Let's not pretend Corbyn was doing other than palling around with the IRA in the 1980s because the glamour of "anti-imperialist" terrorists excited him. He has always supported whoever was fighting the UK at the time, and doesn't deserve to be an MP, let alone to reverse those letters. Labour's clown-car economics is only marginally less risible than the Tories offer, this time round. The difference is Labour actually believe their silliness, and they're led by a traitor. 

If you live in Scotland, this election is about independence. If you live in NI, then this election is about the tribal headcount. If you live elsewhere this election is whether you want an incompetent nanny-state provincial Tory or an antediluvian Socialist to deliver Brexit. It's a shabby, and dispiriting affair. If you can't work out how to vote, you can always vote for Montgomery Brewster. None of the above is appealing. But if you feel you MUST vote, then I have prepared a handy flow-chart to help you.

If you despise politicians, you get despicable politicians.
This shabby parade of also-rans from which we have to choose on today (without any actual choice on the main, nay only, issue of the day) is the logic of calling decent, capable people like Blair, Cameron and Major "war criminals" and "Traitors", for decades. It pollutes the language for when you actually get some of these things on the offer.
No worthwhile people will put up with the scrutiny and abuse heaped daily on politicians. So you get the kind of bore for whom the scrutiny isn't an issue. They've never done anything interesting in the their lives. At least David Cameron dropped some E and went to a rave or two as a youth. What does Theresa May, who spent her twenties complaining about the promotion of lesbianism in schools, know of fun? As for Corbyn, he looks like the kind of man for whom a perfect saturday night is treatise on Marx (so long as it contains nothing he doesn't already know and agree with) with some lovely mineral water. He is the Labour man Orwell warned you about.

I'll be voting Tory. Why? My local headbanging Leadsomite hard-brexiter has stood down after his colossal act of vandalism, to be replaced by a man with whom I seem to agree.
My expectations are of a  Tory majority around 75, on a low turnout, and they will have half a dozen seats in Scotland.  The Liberal Democrats will take Vauxhall and Twickenham, losing in Sheffield Hallam (the "were you up for...?" moment as Clegg loses his seat), but holding Orkney and Shetland against the SNP, remaining about where they are now overall. Or that's where my betting is at the moment.
What do I want to see happen? I'd like to see May remain PM but in a hung parliament, reliant on Northern Irish politicians for her majority because let's face it, she deserves nothing better.
A rubbish show all round but at least I can enjoy it, whoever loses.

Whales are more Important to Climate change than Donald Trump.

By Jackart (noreply@blogger.com)

Donald Trump has pulled the USA out of the Paris Climate accord. And I don't think this matters all that much. For a start, the USA's emissions are falling. Mostly this is because coal is being replaced by Natural Gas, but also because people are driving less, in smaller vehicles with ever more efficient engines. The motors driving the west's steady fall in carbon emissions are economic and technological, not political.

Next to the steady decline in carbon emissions from the west, is set the Vast increase in emissions in recent decades from Asia. But this represents billions of people using no net carbon energy, tending crops using animal muscle and burning biomass (and occasionally starving to death) Just a few decades ago, to my meeting an indian chap on Holiday in Stockholm with his family and chatting about cricket while we tried to decipher the train times. The rise of the middle class in India and China is a huge flowering of human potential, even if it comes with soluble environmental problems.

Anyway, the level of Co2 in the atmosphere is rising, and this is changing the climate. Reducing emissions is a noble aim, but it must not get in the way of developing economies' economic growth. Fortunately, the solution is already with us. Renewable technology is improving. Cars are getting more efficient, and perhaps moving away from fossil fuel (at least directly). And this process will happen in india and China more quickly than in the west beacaue adopting what will be soon proven and cheap technology will enable them to miss whole generations of poluting technologies.

Which brings us to the great cetaceans. The southern ocean is the world's biggest habitat, with the world's shortest food chain, at the top of which sits the largest animal that has ever existed on earth. Phytoplancton bloom, and are eaten by zooplankton, which are eaten by fish larvae and Krill, which are eaten buy just about everything else. The biggest eaters of Krill are the baleen whales which turn five tons of Krill into Iron-rich shit every day. Sperm whales meanwhile are diving to the abysal deep turning several tons of squid into Iron-rich scat, moving nutrients from the deep to the surface. The limiting nutrient at the bottom of the food-chain is iron, so whale faeces fertilise the ocean, and enable more phytoplanckton to grow which absorb Co2 from  the air, much of which falls to the bottom of the ocean as marine snow, and eventually become rock.

But we killed the whales, and when we stopped doing so, they didn't recover as quickly as we hoped. We didn't just kill the Apex predators, in doing so, humanity reduced the Southern ocean's ecosystem's capacity to create life, and absorb Carbon. The southerm ocean may have settled at a lower equilibrium of Iron circulation. The Atlantic on the other hand, which gets tons of Iron from the african deserts every time the wind blows, has seen whale stocks recover better.

Which is why I want to see more research into Iron seeding the ocean, which may give a leg up to Balaenoptera musculus, as well as possibly solving climate change. Climate change is a problem. But while Trump's petulent gesture doesn't help us solve it, nor does it make the problem any harder. Politicians simply matter less than a whale taking a dump.

Why the Blue Passport Matters.

By Jackart (noreply@blogger.com)

People have spent the day on Twitter saying "why does the colour of a passport matter"? While the Daily Express is cheering the return of the Blue Passport to the rafters. For most people capable of abstract thought, this is a mystifying detail, the importance of which to their opponents is utterly baffling. Of course, I am a remain "ultra". But I did swim in the same intellectual Milieu as the Brexity-Trumpkins for decades and know many serious Brexiters personally. Having spend decades rationalising the EU-obsessed madness of the Tory right as a harmless eccentricity that they don't really mean, I do have, with hindsight, some understanding what these creatures think.

Why does the passport matter?

For the Tory Brexiter, the underlying issue is Sovereignty. They object violently, strenuously and on principle to ANYTHING that comes "above" the Crown in Parliament. The jurisdiction of the ECJ is for them, an insult to the courts and other institutions of the UK. The idea is offensive that any law-making organisation, especially one that Jacques Delors told the trades unions is basically for stopping the Tories Torying, could be "supreme" over parliament.

Of course the ECJ mainly deals in trade disputes and represents an international court to settle international issues and ensure consistent interpretation of EU law. It isn't "making the law of the land" and nor is it a "supreme" court in a meaningful way as far as the average citizen is concerned because it doesn't deal with those issues. If you're up in front of the Magistrate for punching a rotter, you're not going to be able to appeal all the way to the ECJ. Criminal law stops with the nation. Appeals of bad people going up to the European court of Human Rights on seemingly spurious grounds get funnelled into this narrative (shhh, I know), so the impression is obtained that "Crazy Euro-Judges" are "over-ruling parliament", and demanding prisoners can vote or should be allowed hacksaws to avoid trampling on "Human Rights" or whatever the tabloid outrage du jour may be. This then reinforces the narrative that the EU is "anti-democratic" and "makes all our laws". And once you have this narrative, flawed as it is, it's jolly easy to amass an awful lot of corroborating "evidence" because the Tabloids spent 30 years deliberately feeding it.

Sovereignty vs Influence; there is a trade-off. The UK, broadly, wrote the Financial services legislation for the entire continent. In return, the Continent got access to the only truly global city in Europe. The French did this for farming and got the CAP, while the Germans got the Eurozone's interest rates and got to destroy Southern Europe. The EU which contains (rather like the UK and trade negotiators) no-one who CAN write decent financial services legislation legislation, because most of those people are British. Thanks to Brexit, the quality of the legislation on financial services will go down, both in the UK which will be compelled to have regulatory equivalence to keep banks' access to the single market and the EU. The UK will have become a rule-taker rather than a rule maker. I fail to see how this reclaims "Sovereignty". The organisational source of the legislation will remain unchanged, but we loose any ability to influence, let alone write it. Multiply this catastrophe across an economy and you see why the "sovereignty" argument against EU law is, on any rational basis, stupid.

The parliament, the very existence of which takes on the aspect of a supranational government in waiting, rather than a simple means to have democratic oversight of an organisation which employs fewer people than Manchester city council, distributes about 1% of GDP and writes trade law. This unwarranted grandiosity once again suits both the Brussels apparatchiks, and the simian oiks of UKIP whom the British public sent to Brussels as a mark of the National contempt for the institution. The parliament is, to my mind is a risible little potempkin affair, barely worth considering,

So there's the error. Back to the passport.

The International Civil Aviation Organisation sets the dimensions, so the writing was on the wall for the old British hardback passport, fabulous though it was, it didn't really fit in the back pocket of your trousers.  However once you believe that the EU tentacles are slowly creeping into institutions to turn you into a province of the "EUSSR", then you start to see this everywhere. The EU is foolish to seek the trappings of a national Government before they had built a demos, and absent any desire for it from the people. Symbols matter. The UK doesn't have an ID card. So when Brits talk about nationality they might say "Australian passport-holder" rather than "Australian citizen". I am not sure if any other nationalities use this formulation. The passport is slightly more than a document. No? Try losing one abroad.

The EU resolution on Passports is here. For anyone who thinks the EU "made" the UK have a Maroon passport, here's EU Croatia's. .

The EU suggested the Colour be harmonised and the words "European Union" be put First. At the top. Above the crown, First. Symbolising, perhaps inadvertently that the EU was more important than the nations. And there you have it. And no-one working on it thought to object. Changing the colour of the passport was a key symbolic gesture that irritated many people, and reinforced an utterly false narrative, to no end or benefit to anyone. There is simply no need for European Union passports to be uniformly coloured. It merely satisfies the bureaucrats' desire for order. And it is my belief that it is this symbolic bureaucratic exercise in territory marking by the EU that revealed, and still reveals, a fundamental disconnect between the Brussels Panjandrums, the people of the EU and the British in particular. The Eurocrats want a Federal Europe with the EU as a Government. The Nations, broadly supported by their governments don't, and have resisted any attempt.

The EU hasn't made Britain less "sovereign". All EU law, necessary to trade with as little friction as possible, is of the type that by whom it is written doesn't matter. With trading standards does it really matter WHAT they are, just that they're as universal and consistently applied? I don't need to tell you that it was never illegal to display prices of potatoes in Lbs and Oz, just that you HAD to display the price in KG and g too, in case any Frenchmen walking through the market didn't know how many Lbs are in a KG. I don't care who writes the regulations for the import of Duck eggs, just that it's done.

But there it is. The Brexiters shooting with the accuracy of a semi-trained recruit who's just dropped LSD at every figment of their fevered imagination, egged on by equally deluded fantasists who still think they're creating a Federal United States of Europe. These two groups of lunatics needed each other. And so, the passport, with 'European Union' at the top was barely noticed on the continent, but seemed to some Brits as evidence the EU was after their democracy, their identity and their Freedom. However stupid this belief is, a Blue passport could've been delivered cheaply as a quick Tabloid-Friendly win for Cameron and such was the narrow margin, it would have probably been enough.

Rosencrantz and Guildenstern are Dead.

By Jackart (noreply@blogger.com)

Wednesday saw my 40th Birthday, and to celebrate I went to see Tom Stoppard's brilliant Rosencrantz and Guildenstern are Dead at the Old Vic with a Chum. While Daniel Radcliffe & Joshua Maguire lead, the show is stolen by a magisterial performance by David Haig as The Player, a sort of luvvie-pimp-cum-impresario who holds the whole play, in its absurdity, together.

The play is Hamlet, seen from the point of view of two minor characters, Rosencrantz and Guildenstern, old friends of Hamlet's. The hapless pair spend the play wondering what they're doing and why, having been recalled to Elsinore by Claudius to find out why Hamlet's being such a dick, moping about and talking gibberish to himself ("to be, or not to be..." etc). They are eventually betrayed by their friend, who suspects them of working for his uncle which they are, sort of.

The play is therefore a meditation on the futility of existence, and the limitations of people's personal agency. Most people get on with their lives, as bit parts in a greater drama, not really sure as to the direction of events, or even of the past. After all, what have Rosencrantz and Guildenstern got to go on, but what can be gleaned from a few words of Shakespeare's, as metaphor for everyone's flawed and self-serving memory. Any interrogator or detective will tell you about the reliability of eye-witnesses and the difficulty of establishing the truth.

From everyone's point of view then, even when we're at the centre of events, most of the action is happening offstage. There will have been some point at which you could have said "no", but you missed it. Then you die.

If you can get tickets, do so.

Minimum Wages, Immigration, Culture and Education.

By Jackart (noreply@blogger.com)

Net migration to the UK has run at hundreds of thousands a year for decades, of which about a quarter since 2004 has been "A8 countries", Poland, the Baltic states, Czech Republic, Slovakia, Slovenia and Hungary, another quarter from 'Core EU' and the rest from non-EU countries, mainly India, Pakistan and West Africa. 13% of the population of the UK was born overseas, of whom over 2/3rds are non-EU migrants. This is an unprecedented migration to the rich world from the poor, and It's not clear from this EU migration is the underlying problem. The Poles will integrate fast, and leave imprints on the culture like a higher incidence of catholicism, bigos (a stew of meat and Sauerkraut) and some hard-to-spell surnames. They're often better educated than the natives, and work harder.

In general the view I've taken over the years is that minimum wages are a bad thing, arguing that they are mainly paid for by the people who otherwise wouldn't get a job at all. Only a job can lead to a better job, and if people are unemployed for a long time, they often become unemployable. So by this logic, keeping unemployment down should in the long-run be better for the poorest.

But, there is a trade off. When I grew up, late '80s and '90s, I cannot recall seeing cars washed by hand. When my father wasn't exploiting child labour by getting me and my brother to do a rubbish, half-arsed job for which we expected to be paid handsomely, we went to see the "blue Dougals" at the petrol station. The UK as a wealthy country, had substituted Capital for Labour, and cars were washed by big machines at every petrol station. But a team of a dozen hard-working and cheerful eastern Europeans can set up a car-wash, do inside and out for very little capital outlay - a jet washer, and some sponges, so when the EU accession countries citizens moved to seek work, this is what many did. The car wash machines were gradually removed and replaced by people. This is the opposite of progress.

Let's take a step back and look at the big picture.

Europe's wealth, it's vitality, its progress didn't spring from European individual or cultural superiority. It started when half the population was wiped out by Yersinia pestis in the 14th Century. There was a certain amount of luck - the same event increased the power of the landowner in Rice states and in pre-feudal societies farther East, but in Northwestern Europe, this created a shortage of Labour, and the peasants rose up a generation afterwards to demand higher wages from their lords. When this happened in Italy, the energy was put into sculpture of the nude male form, and was called "the Renaissance". When wages rise, it makes sense to build machines rather than employ labour, which has a virtuous feedback loop: skilled people running the machines drive up production, and become richer, which creates an incentive for further innovation. More widespread desire for, and access to education is grease in the wheels of this, the motor of progress that led to the industrial revolution.

The opening up of America, a nation with a perpetual and long-lasting shortage of labour not only added another motor to that European culture of innovation which grew up after the Black Death, but also absorbed the excess labour of Europe. While there is a labour shortage, immigration can be managed, though immigrants in large numbers have nowhere, ever been welcomed by the people they move to. Even when the people are kith and kin, the 'Scots Irish' (in reality, families originally from Northern England and the Scottish Borders) were moved on by the Germans and English who'd already settled the East coast. They ended up in Appalachia.

It's clear, then in the short run and in aggregate, wages aren't "driven down" by migration in a market economy. Part of that, in modern times may be due to the minimum wage, which protects some of the people most vulnerable to substitution, but also the 'lump of Labour fallacy'. Immigrants, especially young workers with families bring demand as well as supply and these things more-or-less balance. They aren't "taking our jobs" but they are changing the nature of jobs available. And the vast supply of excess labour from the subcontinent, africa and the poorer bits of Europe is not exactly an incentive to invest in productivity-enhancing machines, as the car-wash example shows. The mass immigration from the poor world has the potential to stall the western motor of innovation and may contribute to wages not rising as far as they might, especially for the lowest skilled workers.

The UK has a problem with productivity. UK employers have got good at employing the excess Labour of a serious chunk of the world, UK wages have been flat for a decade, and these things are linked. So the Chancellor is hiking the minimum wage in the hope of good headlines, and to incentivise investment to drive productivity. So. What effect will this have on immigration. Will it draw more migrants to the UK hoping for higher wages, like European immigration to the USA, or will it price low-skilled immigration out of the Labour market and allow the motor of progress to continue?

Splits that used to be geographic - some countries were rich, and others poor and the movement between the two was rare, is moving to one where there are still two countries, it's just the divide is social, educational, and cultural. You have a global, liberal, free market culture, which values education and novelty. And you have national, 'c' conservatives who just want their own culture, don't care about education all that much, won't move to find a job, and expect to be looked after who stay put and resent incomers. And the latter are disproportionately annoyed about foreigners moving into "Their" neighbourhoods while it's the former who have more to fear in the short term from highly skilled competition, minimum wages see to that. And if minimum wages rise far enough, low skilled workers will not be able to get jobs and they will stop coming to the UK. The problem is, the lowest skilled people are often native. The cost of a raised minimum wage will be borne by those least able to cope.

If we are to avoid society fracturing permanently into Morlocks and Eloi we do need to manage migration, to keep that motor humming. We cannot let the world come at will. But there was no need to pull up the drawbridge against EU migrants who always looked like collateral damage to me.

It's not all about economic self-interest, nor is it wholly naked in-group preference (what educated, open minded people call "bigotry"). It is the interplay between the two. Ultimately the stagnation of UK wages over the last 10 years isn't due to migration, but the recovery from a balance-sheet recession of 2007-9. It's the feeling of ennui caused by a decade of stagnation which has caused the anti-immigration nonsense, the rather blameless Poles have just become a Piñata and for a population that was persuaded to lash out at the EU when they really wanted to lash out at "the Muslims". The tragedy is all this happened just as we were getting back to normal.

Nicola and Theresa. Phwooar.

By Jackart (noreply@blogger.com)

The Daily Mail's headline "Legs-it" about Scottish First Minister and British Prime Minister Theresa May's shapely legs was pathetic. But remember, the Mail is written by women, for women, and women judge each other, all the time, harshly and vindictively. Judged especially harshly are women more accomplished or better looking than the average Daily Mail reader.

To call this "sexism" is to miss the point. This isn't about women being held down by sexist male tittle tattle. Clearly, two of the most powerful people in the country haven't been held down in any meaningful way. Any executive head of Government is fair game for any and all criticism. What these women have done is rise above the level at which society normally seeks to protect women from abuse.

Male politicians are made fun of for their appearance and clothing all the time. It's the sea men swim in. Whether it's Donald Trump's expensive, but ill-fitting suits and too-long ties like he's stepped out of a 1980s pop video caricature of a businessman, or Cameron's forehead, or the fact that middle-aged men are always assumed to be repulsive, this abuse is normal.  The ridicule a male politician faces when he's seen in public wearing anything other than a blue suit is extraordinary. From Tony Blair wearing a clean barbour, to William Hague's baseball cap or Cameron's beachwear, there's a reason male politicians dress identically. When women's clothing (far more interesting by the way, than the sober suits of most male politicians) is commented on, it enables a personal brand to be created that much easier. Theresa May's shoes are like Margaret Thatcher's handbag. True, women do have to think harder about their clothing - too much leg, cleavage etc... and you immediately invite scorn (of other women, mainly), but the fact the female wardrobe stands out against the endless blue/grey suits and red or blue ties of the male is as much an opportunity as it is a minefield.

Any comment about May's shoes, for example is part of her deliberately curated brand, and shoe-designers are falling over themselves to get their products onto her feet. This isn't sexist. Women like shoes, and there's no reason why Theresa May shouldn't have fun with them.

Lower down the pecking order there's a taboo against men commenting negatively on a woman's appearance, lest you hurt the poor dear's feelings. Yes male 'locker room' banter will discuss who's attractive, but it's rude to do so in front of women and by and large, gentlemen don't. Women don't typically have these conversations about men in earshot of men either, but describing men as "revolting" or "creepy" is so normal as to be unworthy of comment, and completely unnoticed. May and Sturgeon have risen above this social protection, and are subject to the same rules of engagement as men are. i.e that if we have feelings, tough.

These women are grown-ups doing important jobs. If you think the Mail's light-hearted front page is an insult to them, you're an idiot. Of course Sarah Vine who wrote the thing, knows exactly the response it would get, howls of idiot outrage from the usual suspects on Twitter, and from Sturgeon herself. This allows the paper to swat the complaints aside with contempt. This signals to their readership that the Mail is on their side against the bien-pensant left with their idiotic & totalitarian outrage about human trivialities. May by rising above it, does the same. The Mail is one of the Best-selling papers in the UK, and one of the world's most visited "news" (ish) websites. Who won that exchange?

The po-mo left, obsessed with identity politics, used to being able to bully dissenting opinion down STILL hasn't got the new rules of the game. Someone's pointed out the Emperor's naked, but he's still acting like he's in charge and hasn't noticed the mood's changed. Yet.

Completely unrelated, but thank you to the Anonymous commenter who wrote this. It cheered me up.

On Class, Culture and the New Politics

By Jackart (noreply@blogger.com)

The two tribes of politics, broadly the Tory and Labour parties divided over the 20th Century principally on the matter of economics. Simplifying: Tories preferred market solutions to state planning, and preferred lower taxes and less generous state spending.
The Labour party, which when it abandoned clause IV, surrendered on the economic question, not coincidentally a few years after the Berlin wall came down.
As a result, the great battles since then have been essentially cultural. Gay rights, racial integration etc. The confusion stems from there being no consensus within the Tory or Labour tribes on these issues. Plenty of Tories are happily socially liberal, many of the Labour tribe are socially conservative, especially when you look at voters rather than representatives.
Which brings us to the tribal division of Britain: class. The middle class: liberal, internationalist, universalists; vs a working class: authoritarian, insular and particular world view. The former is comfortable with diversity and immigration. The latter isn't. The former's kids live a long way from home, and move for work, the latters kids live in the same town and expect the work to come to them. The former don't speak to their neighbours, the latter care what their neighbours do and think. These labels are correlated roughly with, but independent of, economic status. It's possible to be middle class, in a local-authority home living on benefits, and working class, earning seven figures and living in a manor house. (Though it's likely these people's kids will change tribes)
There are elements of these cultures in all major parties in the UK, but the rest of us rarely communicate with people from the other tribe. The people you have round for dinner will most probably be from your tribe. Half the country holds its knife like a pen, yet none have sat round my table. When the two tribes meet, it's awkward. Those difficult bottom-sniffing conversations seeking common ground are easy to conclude when two members of the same tribe meet, and difficult when you meet the other half.
There have always been working class Tories, because much of the working class is as comfortable with the certainties of heirarchy as a shire Tory, and doesn't much care for this freedom and opportunity nonsense, preferring a better boss instead. And it's interesting to watch the Tories dangle the protectionism and insularity the working class has long demanded. Middle class labour fabians and the working class methodists have always sat uncomfortably together. Brexit has shattered that coalition, the labour party has been handed to the idiot socialists and will die, unless somehow moderates can oust corbyn before 2020.
Which brings us to the Tory coalition. The high-Tory have promised the old certainties back to the white working class. Meanwhile, middle-class liberals who make up most of the parliamentary party are distinctly uncomfortable with much of what is being done in Brexit's name, but will stick with the Tories, because they offer the promise of power, and however dreadful Brexit is, Jeremy Corbyn is worse. A new coalition is being forged between the Tory squirearchy, and the Working class based on nationalism, social conservatism and heirarchy, directly taking Labour's core vote. This is why UKIP, a working class movement that thinks it *is* the conservative party, apes the style of a country gent. The working class have always got on well with the Gentry, sharing sociailly conservative values. Both despise the middle class.
Brexit split the country down a line more on class values, split the country and handed it to the socially authoritarian party. Whether this is the new politics, with the Tories moving from being the middle-class party to the working class party, as the Republicans did after the war in the USA, or whether the middle-class will wrest back control over both parties in time waits to be seen.
I suspect unless May softens her tone, and thows some bones to the liberals, her coalition will only survive until there's a credible opposition. A more appropriate division of politics would be a ConservaKIP'ish alliance of WWC and high-tory squires, vs LibLabCon middle-class liberals. Therea May seems to be actively seeking it.
Over the Channel, Emmanuel Macron and Marine Le Pen exemplify this split. The candidates of the parties of left, Socialists; and right, RPR are likely to be eliminated in the first round. Macron is likely to win comfortably. His movement 'En Marche!' was only formed a year ago. There's a lesson for British liberals there.

Tories have profoundly damaged the UK. You Should Join the Tories.

By Jackart (noreply@blogger.com)

2016 happened because decent people don't join political parties, leaving the business of Government to socially inadequate, physically repellent gits with an axe to grind*. In normal circumstances, this makes politics easier for genuinely impressive people to progress through the flotsam of monomaniacs. To be a Grown-up in the Tory Party 1997-2010 was to be able to consider an issue beyond the EU. For Labour it's all about not dreaming of Strike Action by "the workers". Thus the Liberal Centre consolidated a hold on the country, but became complacent to the poison seeping into parties even as the Smug centrist consensus made everyone fat and rich.
There has been a steady, and persistent hollowing out of the political parties. Labour used to be allied to a Trades Union movement that delivered services - health insurance, education and so forth to its members. The Trades Unions of Pre-War Britain where an overwhelming force for good. Atlee's welfare state nationalised all the good the Trades Unions used to do, and so corrupted both the principle of welfare (now far, far from Beveridge's original vision of low, universal payments like Child benefit, topped up with contributory elements) and the Trades unions which became a mere tub-thumper for more state spending. This left the Labour party with the sole purpose of defending a welfare settlement that is not under threat, and a Trades Union movement whose purpose had been nationalised so simply became resistant to all and any reform which might make the system as is function better; unions a mere vested interest of public-sector workers. This isn't a place where people capable of holding more than one idea at a time feel comfortable, and so the Labour party was colonised by people who think not shaving is a political act.
This malodorous and poorly groomed cancer has destroyed the Labour party. It's over, there's no point being in Labour unless you're a Identity politics obsessed Corbynite who laments the end of the Soviet Union. 
Labour, 2010-Present
The Tories at least had the sense to try to vomit the most toxic of their nutters into a bucket marked UKIP, a bucket the dog is unfortunately returning to. The Conservative party my Grandfather joined (from CPGB, as it happens, Labour even back then were cliquey dick-heads) used to be a forum for the upper middle class (and anyone who aspired to join them) to meet, mate and do business. But the horrible young Tories of the '80s, and the Euro-nutters of the '90s meant that by 1997, the Tories were only really suitable for people who were prepared to discuss "Europe" endlessly in ever-more foaming tones, persuading themselves that the EU is a historic enemy like Napoleon, the Kaisar, Hitler or the USSR. To their credit, the Tory Leadership has long known what to do. All David Cameron ever asked of his party was to "stop banging on about Europe". They couldn't stop picking at the scab, and the result is a catastrophe that has already crashed the Pound, weakened the UK (perhaps fatally) and may yet cause a political crisis in Europe and embolden Putin to start rebuilding the USSR.
Tories, 1997-2010
The more say over policy and leadership given to the membership, the more the membership has dwindled (unless, like Labour, the membership criteria are designed to invite entryism for the purposes of choosing a leader - by people who've been quietly loyal to the Bennite project for decades). Giving members a say in who leads the party is absurd. Who the prime minister is, should be a matter for MPs, and MPs alone. It is they who must give the Prime Minister a majority and internal party democracy risks, well, exactly what has happened to Labour. 
However, that Rubicon has been crossed. Party members now expect a vote on the Leader. The question is what to do about this, and the answer is to choose to be a member of a party at all times, hold your nose if necessary. Do NOT identify with the party, but consider which is best placed to advance your objectives. At the moment, the foul bigots, monomaniacs and morons of UKIP are being re-absorbed from a position where they can do little harm beyond foaming at the mouth and masturbating to Daily Express editorials, to one where they can choose the next prime minister, and Mrs May isn't a healthy specimen. The ex-'KIPpers chance may come to choose their PM sooner than expected.
I'm often asked "How come you're still a Tory?"  
Were the Liberal Democrats stronger, I'd be considering them, but I don't trust them on electoral reform (about which they're as silly as Tories are about Europe). But as the Lib-Dems are so far from power, I don't see the tactical benefit of leaving the Tories in a huff, and I broadly agree with the Tories on everything except Brexit. What I'm worried about is the 'KIPpers who're returning to the fold. Unless you want a foul, divisive and ignorant Brexit headbanger to replace May in 2023 or so (Gove for example), Join the Tories, because thanks to Labour's meltdown, Tories and Tories alone will choose the next PM. All not joining a party does is strengthen those (*we) weirdos who still do. Labour moderates, disgusted by Corbyn should cross the floor to the Tories or Liberal democrats, instead of flouncing off to the V&A and opening the way for UKIPish Brexit-o-twats to fight and win a by-elections under Tory colours. Were Tristram hunt now a Tory, not only we could soften this brexit idiocy but also signal just how broad a church the Tories are. 40% of Tory members voted Remain. The tribe that needs to understand the value of a bit of entryism is the liberal centre, who need to abandon any loyalty to their Parties and go to where the power is. The Liberal Centre is complacent because they have for so long occupied the ground sought by all parties, they've not really had to compromise. 
At the moment the business of Government is, and will be for the foreseeable future, a Tory-only affair. That need not look like Nigel Farage, but it will, if Remainers abandon the Tories entirely.

The End of A 'Belle Époque'. 1991-2016.

By Jackart (noreply@blogger.com)

The interlocking webs of policy which 'politics' seeks to knit are complicated. Whole books can be written on how two individual policies interact. PhDs in Economics are awarded for small snapshots of the whole cloth. Most people don't have the time to keep abreast of developments or read sufficient history to understand why some policies are bad. Thus, people use heuristics - rules of thumb - to make decisions  about that which they aren't expert. "Is this person trustworthy" is a key issue, and we tend to overweight the opinion of those near us. "He is my brother, and I say he's ok" says a friend, you are more likely to believe a mutual friend, than the opinion of a stranger on the same issue.

In the evolutionary past, such a question was a matter of life and death. People only really had to trust those with whom they shared a close genetic relationship. Since the development of agriculture, we've been steadily widening that circle of trust. The wider you spread that circle of trust, the richer your society will be. Even before it had a name, Free market economics allowed people to become blacksmiths, knowing others have water, food, shelter and so forth covered in return. More specialisation, greater productivity, means greater wealth.

Eventually, this requires trust in people we've not met. Towns' food supplies require that farmers unknown and distant supply the basics of existence. Nowadays, It's unlikely the west could quickly supply all available plenty currently manufactured in China. Nor could China supply quickly the complex components and tools shipped from Japan, Europe and USA. Both China, and "the west" are richer from the exchange. And yet, we still don't trust "globalisation".

Most persistent fallacies in political economics are the result of simple policies that appeal to some base heuristics, but which when applied to the larger and wider society, fail catastrophically. Thus egalitarianism in one form or another pops up every 3 generations or so and succeeds in making everyone equal, but some more equal than others, and even more, dead. Then nationalism comes along, and says it's all [another, arbitrarily defined group of humans with slightly different modes of speech] fault, leading to more waste and piles of corpses. And even when the results aren't catastrophic, we seek out the views of those who agree with us on say, Nationalism to inform our opinion on, say, whether or not people are responsible for climate change.

Which political tribes stumble into being right or wrong on any given issue appears arbitrary, because no-one's asking for the evidence before they decide on the policy. Instead of asking "what's right", we're asking what's popular (amongst the coalition of tribes that voted for me) right now. That an opponent comes out with an identical policy, for different reasons is reason enough to oppose something, forgetting completely prior support for it. After all, whatever [another political tribe] thinks must be wrong, right.

The Labour party opposes ID cards. The Labour party has always opposed ID cards. The Tory party is for the Free market and was never in favour of the Corn Laws. We have always been at war with Eastasia. Perhaps if we could think for ourselves rather than just accepting tribal dogma, we'd get better governance. But none of us have the time. So "Democracy" is merely a means to give temporary permission to one coalition of tribes to push through dogmas over many issues, until either the population notices, or the coalition of tribes breaks up, and the electorate takes a punt on the other tribe's prejudices for a bit, and then gets on with whatever they were doing before.

Society ultimately advances by eliminating prejudices it's acceptable to hold thus widening the circle of trust, and increasing riches. By falling back on ancient heuristics to answer the wrong question ("who's fault?" is the wrong question) 2016 democracy has delivered the worst political outcomes on a broad front, as a result of which, we are poorer, and more likely to start fighting as a result of the collapse in political trust we have seen over this year. The post Cold-War 'Belle Époque', which saw half of humanity, 3 billion people, lifted out of poverty, is over.

Idiots cheer.

Boston Dynamics and The Late Sir Terry Pratchett

By Jackart (noreply@blogger.com)

Everyone knows how driverless cars will work: they will be like ordinary cars, except you read a book rather than acting as pilot. And so, people's understanding of what a technology can do is clouded by what the old technology it replaces does. Which means people without imagination, Head of IBM Thomas Watson, for example, say things like
"There may be a world market for maybe five computers"
and get it wrong. In 1943, computers were used for cryptography, and that's it. (At least he knew what a "computer" was, which few did back then). Predictions are hard, especially about the future. But it's probably worth noting here that the famous World Wide What? front page of The Sun, was in fact rather a good a spoof, by The Sun.

Boston Dynamics makes robots.


Who needs Robots? Well, like computers or the internet or driverless cars, the technology is coming. And it will change people's behaviour in many, unpredictable ways. For example, mobile phones were conceived as portable analogues for the phone on your desk or in your hall. SMS text messaging was added as an afterthought, but became THE dominant means of communication. Calling someone is now rude, often you text first to see if a call would be convenient. Who (apart from mums) leaves voicemail messages any more? Few predicted that change in our behaviour. The smartphone is now ubiquitous, and is more about accessing the internet than calling friends, but wasn't imagined before the internet, Except by Douglas Adams (and John Brunner of whom I'd not heard until I discussed the issue on Twitter). Driverless cars will be as close to the car, as the car is to a buggy and four. And robots, when they become ubiquitous, will be unlike anything we've considered.

I look at Boston Dynamics Robots, the big dog is conceived as a load carrying mule for soldiers on rough terrain, and I think of The Luggage, Rincewind's inscrutable companion on the discworld. I suspect everyone will one day have a robot the size of a dog to carry daily necessaries, following them round. You could send your luggage to someone else, by smartphone app to pick something up. Your luggage could take your shopping home and collect it from the store for you. Large luggages could be sent on ahead with bags. Small luggages could replace handbags and briefcases. The labour and time saving would be vast, spawning whole new areas of employment, servicing and modifying your faithful electronic companion and providing for the opportunities they create to effectively be in two places at once. Freed from the ownership of motor vehicles by the fact we'll be taking taxis everywhere, our Robot luggage will perhaps become the next status symbol around which society is built, replacing the car.

Like cars, I suspect the battery technology will be the limiting step, and like cars, I suspect the fuel cell will be the answer. Small fuel cells will one day power your smart phone too.

But think about the opportunities for people from smart phone. There are tens of thousands of app designers round the world now, a job that had barely been considered as recently as 2007, when the first iPhone was released, and that is similar to how the jobs which will be taken by the robots, will be replaced. That is why people who fear of a "post-jobs" future were wrong in 1816 and are still wrong 200 years later. The world's only limitless resource is human ingenuity.

Anway. I for one welcome our new robot overlords, and this guy should totally be locked up.


Fidel Castro is Dead. (Some of) his Legacy will Live on

By Jackart (noreply@blogger.com)

Let's be clear, Castro was a murderous bastard who impoverished his country, and whose views on homosexuality and on the importance of brevity in speeches were nothing short of horrifying. It's true, Cubans do have access to better healthcare than many countries of equivalent GDP per capita, and if I had to choose a Communist hell-hole to live in, it'd probably be Castro's Cuba. But the Cuban healthcare system is not the fantasy of western dewey-eyed left-wingers, and Cubans often are excluded from what excellence there is, as it's one of the few means the country has of generating hard currency earnings. Rich foreigners get the best doctors, and more are exported to other successful "progressive" regimes like Venezuela.

"But he was an anti-imperialist". So why were cuban troops in Africa in support of the USSR, which was by any measure or definition an Empire? Anti-Imperialsim is just the justification leftists give for knee-jerk anti-Americanism. And the flood of people risking death to reach the USA should tell you all you need to know about the relative merits of America's and Cuba's system.

Contrasting the attitudes of the USA to Castro, to their attitude to equally murderous bastards like Pinochet misses the point. The US embargo on Cuba is one of the legacies of the Cold war, kept bubbling by the politics of Florida, home to so many Cuban-Americans. There is no Doubt that the US blocade has impoverished Cubans, and that with the fall in the Berlin wall and the collapse of the USSR, such an embargo was no longer justified. However politics are what they are. Fidel Castro's death provides an opportunity for further thawing in relations.

The USA supported "our son of a bitch" all over the world, turning a blind-eye to horrific human rights abuses, though often (albeit less often than we should) working behind the scenes to try and mitigate the worst behaviour. Thatcher is rarely credited with preventing the execution of Nelson Mandela, but she consistently urged Mandela's release, even as she argued against sanctions and branding the ANC "Terrorists". This is one reason why the cold-war piles of dead of Nasty fascist bastards are usually lower than those of nasty communist bastards. I also think the point made by CS Lewis holds. Right wing dictators rarely pretend to be GOOD, making their appeal more on effectiveness.
"The robber baron's cruelty may sometimes sleep, his cupidity may at some point be satiated; but those who torment us for our own good will torment us without end for they do so with the approval of their own conscience."
And one by one, following the collapse of Communism, the support from the USA and its allies for these disgusting regimes was withdrawn. Apartheid South Africa, much of South and Central America saw right authoritarian regimes fall. Genuine democracies were often created in the rubble. The USA didn't support dictators because the USA is an imperialist power, but because it IS a power, and with that comes responsibility. They judged at the time the alternative, Communism, was worse, and represented a genuine existential threat to the USA and its core allies.

This is why for example the USA and its allies mostly support the Regime in the Kingdom of Saudi Arabia. The Saudi regime is repellent, but given the probable alternatives wouldn't be nice, liberal, democratic-minded progressives, they'd be salafist nutcases who'd have access to billions of dollars of oil revenues and the legitimacy of being the Guardians of the Two Mosques. The House of Saud is all that stands between the West and a plausible salafist caliphate with sufficient legitimacy and money to one day threaten the west. We'd rather do business with nice, stable democracies under the rule of law. But seeing as we cannot do to every country on earth what we did to Germany in the late 40s and 50s, we make the best of the options given.

Castro appeared to be a true beleiver in Socialism, so he refused to recognise his philosophy had failed, and his island limped on, a socialist throwback in the age of globalisation. The current poverty of Cuba is partly America's doing, but mostly due to decisions made by Castro himself, policies which set him and the Cuban people at odds with the regional hegemon, in persuit of an evil idealogy. Fidel Castro was on the wrong side of history, and his people suffered because of his stubborness. Now he's dead, it's Cubans turn to make the most of the positive legacy - Cubans are the best-educated poor people on earth, and the mighty economy of the USA is right on their doorstep. There is going to be a lot of money to be made there, and this time, for the first time, Cubans will share in it.

Hail, Trump! God-Emperor of the Alt.Right

By Jackart (noreply@blogger.com)

And Let's be honest, he's ghastly and despite brown-nosing by Nigel Farage, he's no friend of the UK's, because he doesn't value anything the UK brings to the table. Rumour has it, he asked Farage to intervene in an offshore windfarm decision affecting his Scottish interests, which suggests he doesn't understand the concept of 'conflicts of interests' when in elected office.

This further suggests Trump will attempt to use the office of President to enrich himself, rather than doing so after leaving office, as is accepted. All this is rather feudal; the office holder as gold-giver, distributing patronage and receiving tribute. He's an entertainer and showman, which hails to an even older tradition of politics: that of Imperial Rome, where emperors used state coffers to enrich themselves and their clients,while keeping the mob quiet with bread and circuses.

Donald J. Trump is psychologically unsuited to office in a mature democracy. He is thin-skinned, autocratic, insecure, ignorant, and completely without any understanding of the levers of power he now wields. Much like (later caricatures of?) Nero, Commodus or Caligula.

Despite (or perhaps because of) this, the adolescent losers of Alt.Right see Trump as a God-Emperor (no, really they do. Video surfaced today of people making Roman Salutes, saying "Hail Trump", and distribute Memes based on Games Workshop's futuristic figure-based tabletop wargame, Warhammer 40,000 where humanity is defended from Chaos by a psychic God Emperor). If Trump is Imperator, then the Secret Service is a Praetorian Guard. And how did the Praetorian serve Commodus, to pick one example?

Trump might, were he capable of reading a book, muse on the fact he's surrounded by armed men sworn to uphold the Constitution of the United States of America, and defend it from Enemies DOMESTIC and foreign. Thankfully, the USA is a mature democracy. Where once armed men acted as kingmaker, courts now do. For the simple reason Ignorance is no defence, and the fact that Trump's loathing of 'Washington' is fully reciprocated, I find it unlikely that Trump will survive his term alive and unimpeached. Unfortunately I cannot find odds on a Trump impeachment before 2020. Perhaps it's a racing certainty.

Sexism and the Loss Aversion Heuristic

By Jackart (noreply@blogger.com)

Men are physically stronger than women, respond quicker to physical training, and suffer less injury under physical stress. Men are more robust, suffer less morbidity than women in almost all phases of life. Obviously these things exist in a normal distribution, but men's distributions are typically platykurtic - there are more men in the tails of the distribution than women. Thus, even where the means are near identical, such as intelligence, you'd expect to see more male geniuses, and imbeciles among men than women, who're more concentrated around the mean. Feel like taking issue with any of these statements? Then you might as well be a creationist.

Men are more accepting of risk, and will prioritise pay over flexibility. So you'd expect men to make up the majority of soldiers and miners and race car drivers. It also means you'd expect to see more men make up corporate boards, everything being equal. More men are more drawn to the cut and thrust of business, and are more likely to prioritise work over other commitments. Women value stability and flexibility more highly than men. This means women, on average don't choose to make the effort necessary to climb the greasy pole. Women (sensibly, in my view as I have done the same) are more likely to think other things more important.

Thus, the brute fanny-counting of media analysis of sexism and the "gender pay gap" ignores female choices and attributes, thus denigrating both women and men for the choices they make. Women for their part see their contribution to society in caring professions such as medicine (more doctors are now women, as well as nurses) and teaching denigrated because these women aren't seeking to be at the top of BAE systems, or whatever. Likewise men, when they see women are going to hired so they form 50% of the workforce of a mining company feel devalued for their skills and attributes because the only way BHP Billiton could make 50% of its employees women is by discriminating against the larger number of men who will apply to drive a bloody great truck miles from nowhere in a bloody great hole in the ground in the middle of a bloody great desert surrounded by nothingness, and live in towns whose bars serve tinnies through wire grilles, and where kicking each others' heads in represents the primary saturday night entertainment.

But worse, by forcing women into traditionally working class men's jobs, you further alienate and disorientate a bit of society which already feels put upon, neglected, belittled and scorned. This is why they voted for Brexit in the UK, and in the USA, will vote for Trump. Working class men are lashing out, because their raison d'etre, to provide for their offspring, has been nationalised, and no other opportunity for them has been provided and they as individuals have too often been thrown on the scrap heap, derided as workshy deadbeats. The working class used to have pride in providing for their family and often doing dangerous, dirty jobs to do so. Opportunity isn't "equal access to university", for which working class men is a middle-class rite of passage, but decent jobs that will allow them to support their family, but which is blocked by the petty credentialism that values paper qualifications over experience and dumb diligence over inspiration.

That loss of pride is agonising. And people mourn loss far more than they celebrate gain. The aim of this post-modern obsession with equality of outcome therefore might as well be to make men despise themselves and women feel inadequate for the inclinations their biology and society has fitted them. Men become 2nd rate women, and women become 2nd rate men. By all means allow everyone to seek their own path, but to imagine men and women will sort 50/50 everywhere is totalitarian in its foolishness and cruelty.

The EU Deserves what's coming.

By Jackart (noreply@blogger.com)

One of the main reasons to oppose brexit is that the UK doesn't benefit from being "out" should the EU collapse. A disorderly break-up of the EU would damage the UK, independently of our status in or out. (any comment saying "it's better to bail early" will be deleted as a failure of comprehension read the post, please, it's that argument I'm dealing with). Indeed preventing a disorderly collapse should be the UK's priority. And when we were in, a disorderly collapse was unlikely. The UK kept the lid on Brussels insanity. Not only has Brexit given free rein to some of the very worst people in the UK, it also removes a brake on the insane Federasts  of Brussels.

Far from Remainers "talking the UK down", Brexiters have been doing so for decades - talking down the UK's influence in the EU to the extent we're actually thinking of walking out of the UK's proudest creation: the single market. It is now a shibboleth that the UK has "no influence in the EU", whereas the UK drove the single market, kept half the continent out of the poisonous grip of the Euro and pioneered enlargement to the east following the end of the cold war. The UK drove Russian sanctions to this day. The UK was one of the Big three and on many issues, more influential than France. The UK largely writes EU financial regulation for example (as is meet and proper).

But the EU over-reached. Voters, especially in the UK resented the EU's usurpation of the trappings of National sovereignty far more than the reality of "the laws made in Brussels" which was really just code for an underlying vision they (and I) don't like. And what is true of the UK is true of France and the Netherlands and everywhere else. Remainers like to mock the Be.Leaver's joy over the anticipated return of the blue passport. I however have long resented the words "European Union" above (ABOVE!) the crown on the front. It's like the bureaucrats are trying to rub the British People's nose in it. It's a symbol of something burning in the EU's core, which the average voter neither desires, nor trusts.

The ridiculous and unnecessary potemkin parliament with its farcical shuttle from Brussels to Strasbourg focusses the voters minds on the EU, without giving them any outlet to do anything about it. The EU looms much larger than it ought as a result of the charade of Euro elections. Democracy without a demos is pointless - what commonality do Socialist members from spain and the UK have?:

The EU was flawed, Thanks to the UK some of its worst excesses - the Euro for example were limited to countries that really wanted it. And now without a powerful country holding the reins and steering away from "ever closer union" the Brake that was put on at Maastrict and beyond will be removed. The EU will integrate itself to death, there will be chaos when the voters of Europe can take the tin-eared arrogance of Brussels no more. There was no need for all those millions of lives to be attenuated during that process. While leave voters will say "I told you so", a better analogy would be jumping out of a moving car suffering broken bones and extensive skin abrasions, but saying "it would have been worse" because the lunatic who grabbed the wheel when you bailed steered it directly into a tree.

Spending 1% of GDP to write trade and some business law could much more easily be done intragovernmentally, with a humble and small central bureaucracy. There is no need for "Presidents" and parliaments which lead to grandiose visions; visions which slam painfully, like the Euro, into the unyielding wall of reality. Unobtrusively aligning business regulation and deepening economic integration is necessary. A parliament, a flag, an anthem and a head of "state" are not. The EU has paid the price for this arrogant and pompous grandiosity.

Both the EU and UK are and will be significantly worse off as a result of Brexit. And now, just as Brexit is a bad idea that will be tested, so too will European integration. Both Brussels panjandrums and the brexiters fed off each others' fantasies. Both needed to believe integration was happening, even if it wasn't. Ultimately, the costs will become apparent to the UK pretty rapidly. The EU will suffer much more slowly. It's almost like co-operation is a non-zero-sum game, or something.

On Populism: What do we do? vs Who do we blame?

By Jackart (noreply@blogger.com)

If you ask the wrong question, the answers will not work.

"Populism" is, like pornography, hard to define, but you know it when you see it. Wikipedia defines it thus
"a political ideology that holds that virtuous citizens are mistreated by a small circle of elites, who can be overthrown if the people recognize the danger and work together. Populism depicts elites as trampling on the rights, values, and voice of the legitimate people"
It's clear Farage's lauding of a victory for "mediocre ordinary, decent scum people" he was speaking in this vein. But I don't think this captures the essence of populism. Mainstream politicians "Managerialists" in the Populists' vernacular ask "how do we solve this problem". You can be a capitalist, or a socialist, believing in different answers, but at least you agree on the question. Populists aren't asking this question, but instead "who do we blame?". The answer given by Momentum and UKIP may differ: Bosses vs Immigrants, Capitalists vs the EU but the question is the same.

There's also the populists view that MPs rather than being representatives paid to exercise judgement, are delegates paid to vote on someone else's behalf. In this, Paul Mason and Douglas Carswell are in agreement. But this is simply mob rule and behind it is a fear that legislators may Go Native, if they're allowed thanks to the corrosive influence of "[insert boogeyman]" in their long-running campaign to keep the "real" people down. But perhaps legislators know best; they have exposure and access to what passes for facts in this field, and are paid to study it, maybe there's something in the idea of representative democracy after all.

It's always easier to imagine you're the victim of an elite conspiracy, subject to "discrimination" on the grounds of class or race, or at risk from being "flooded" by immigrants, than it is to answer the question "what to I do?". Whether you're running your own life, or that of a nation, what to do is hard, and one of the stresses of modern life is the extent to which people are free, which means they have to make choices. No longer can you just follow dad into the Factory. Because many suffer from crippling loss aversion, these choices are scary, which is why stupid people yearn to be led. They look for leaders who offer answers which fit their prior prejudices and make sense of a complicated world. Corbyn and Farage have made careers finding and stroking a tribe's prejudices, soothing their people's indignation against a world they feel is against them.

The reason populism is so toxic to political discourse is that in apportioning blame, they create a slipway for the launching of vastly damaging ideas. "It's all the EU's fault" leads to Brexit*. "It's all the Fat Cats' fault" and you have a country that looks like Venezuela. If you start blaming immigrants or minorities, well we saw where that went in the last century. It's also why the Brexiteers ran from office at the moment of victory. Delivery isn't in the populists' skillset. The permanent masturbatory pleasures of opposition are what they crave, always losing so they can keep telling their people the game's rigged against them. If they win, then all those inadequate people will have to start making choices and they feel completely lost again. Much easier to simmer in resentment against an immovable object which allows you to blame it, rather than yourself for your failings.

*This isn't a place for a debate on the merits or otherwise of Brexit. Any comments on that subject will be deleted.

One of the reasons for the Populist's success (please note the "one of" at the start of this sentence) is Russia on the internet. The internet allows people to form much denser ideological defences against reality. And into the internet, there is a wounded superpower, pouring poison, poison which people use as ammunition in the defence of their ideological redoubt. Putin's toxic little propaganda swamps like RT and Sputnik are manufacturing and promoting stories which appeal to the populist mindset. Notice how Racists will share RT stories about Immigrants raping white women while members of the Green party will share horror stories about fracking from the same source. Some of these stories will be true. But many are manufactured, exaggerated and twisted specifically to support any party or idea that causes problems to the democratic governments of the west. This is not a random process. It is directed and controlled by the intelligence agency which has captured Russia. Maskirovka raised to a governing principle.

One of the reasons for the UK's relative success as a nation is that up until now, we have been mostly immune from the allure of the populist demagogue. We simply don't have it in us to put too much belief in one man, whether as protagonist or antagonist. Let's hope Brexit is a flash in the pan, and not part of a widespread descent of mature democracies into populist demagoguery. We'll know in 12 months whether democracy can survive or whether, thanks to Trump, Farage and Le Pen, we're going back to pogroms and a summer "campaigning season".

Please let's stop listening to Putin' useful idiots pedalling fallacious simplicity, and start listening to fallible and all-too-human experts again. At least the experts are asking the right question.

Just how fast is too fast when it comes to web requests?

There's meta, and then there's meta about meta.

An anonymous reader wrote in with some feedback about a broken post (since fixed, thanks!) ... and then immediately wrote in with something else that's so amusing I figured it needed to be shared:

Your "Feedback saved. Thanks!" message popped up so quickly that I doubt a network request was sent. I have enabled monitoring now I'm submitting this test message.

Upon showing this to a friend, he suggested I make it say how long it took to be a bit more convincing, and that's when I realized I had no idea how long it took to run. So, I did just that a few minutes ago, and here it is:

Feedback saved in 274ms

Now I know: it's about 220-275 milliseconds for me.

What figures into that?

First, I'm on my laptop with a wireless link in a relatively congested area. It's also a link back to a commodity Internet connection that's shared with streaming HD video (re-watching Eureka episodes, naturally).

It's a link in the SF Bay Area, and the server is in Texas, so it has to get out there and back. That's at least 50 milliseconds right there when measured by a boring old ping, and it varies quite a bit.

Then there's the matter of bringing up the TCP connection which has a three-way handshake, and then TLS has to come up over that since I'm doing this over https. Apache has to read it, figure out where to send it, and kick off the CGI handler, which is just a tiny C++ binary.

That handler parses through the environment to make sure it's a POST request, then grovels around in stdin to figure out what the POST body looks like, and assuming everything looks okay, it opens a connection to the (local) database over a Unix domain socket. A single INSERT drops the comment into a table, and once that comes back, it sends just enough stuff to stdout to make Apache throw back a 200.

Back in the browser, it gets kicked into the success handler for the AJAX call, where it does the math and prints the result.

Of course, my initial implementation was using a naive "x = new Date" approach, which uses wall time, so any shenanigans on the part of the system clock could have screwed it up. It turns out that there's something called window.performance.now() which seems decently supported, and provides something approaching monotonic time. So, now it's on that instead.

So, here's a free tip: if you are measuring durations with wall times, stop now. Find a way to use a monotonic clock, instead. Otherwise, you will have problems the next time something messes with your wall time, like a NTP step, someone running ntpdate, or a non-smeared leap second.

Back to the problem at hand though, apparently 250 ms was too fast to be seen as having done something? Are people really that used to web stuff being that slow and laggy? That's terrible.

Late amendment: I decided to try it over http.. and got 130 msec. Clearly, all of those round trips for TLS add up.

Heat loss from big corporate projects

Years ago, I wrote about something I had learned in "corporate America". It was called the "buckets of money" situation. It refers to how sufficiently large companies might move costs around. Team A might decide to stop providing some service, which saves them money, but then team B has to ramp up and deal with it, which then costs them more money. A might be doing better, but B is doing worse, and so it's a wash for the company itself. No real money has been saved.

That was five years ago. Since then, I've learned some more things. Specifically, not only do you have the aforementioned problem of just moving costs around and not necessarily getting a win, you also have a new problem: heat loss. This is where the very act of moving things around costs energy, and just like heat loss in the real world of science, it escapes from the system. This is something you can't get back once you spend it.

To bring back the old analogy, let's say instead of buckets of money, we have tanks of water. Both of them have 50 units (gallons, liters, whatever you like) of water in them at the moment. Together, they provide 100 units of service to the customer.

One day, someone at the water company decides they want to move it around. Maybe they want to make their tank weigh less. Who knows. But they adjust the balance and now their tank only holds 25 units, while the other one picks up the slack at 75 units. Together, they still hold the same 100 units for the customers, but what actually happened?

The process of changing the system to have a new balancing point took work. It involved investments of engineer time, design work, tech writers and documentation changes, and all kinds of other "meta" stuff. That is in addition to the actual cost of pumping the water from one tank to the other. This is something that would come up any time the system is rebalanced, and once spent, you can't get it back.

In the tech world, this might be what happens when the hardware provider says that you are now going to have half the disk space in next year's machines. Instead, they will have network storage available. This saves a lot of money on hardware, but now the software people have to adapt. They wind up designing some kind of more efficient scheme to fit onto the smaller machines, and in the end, the system runs, and outwardly, it looks the same.

However, a lot of engineers had to spend a lot of time to rebalance the system that way. Someone had to notice the problem and call time out, then someone had to analyze disk space usage to find out how bad it would be, and then come up with a way around it. Then other folks had to code it up, test it, roll it out, and switch everything else onto it. The time spent doing that was time not spent doing other things. That's time and energy the engineers and company as a whole never gets back.

This is why I warn people about a change to a system which is only supposed to move things around but which by itself does not introduce any particular advantages. If there's no obvious win from the proposed environment, then it's not actually a "wash" as some might say. It's really a net loss of energy and opportunities because of the work required to convert from the old system to the new.

There is one more insidious part of projects like these: they create work for people. Those people can work their tails off and deliver this stuff which does the same service outwardly but with a different balancing point. Nothing improves for the customers or even the system administrators. It might even get worse in some dimensions. But, it kept them busy, and let them show off, and they can take that all the way to the bank by way of a performance review system that optimizes for Shiny New Things.

Some would say this has already happened.

Control systems, yes, but we have to learn to crawl first

Yesterday's post about elastic service scaling and some of the problems I've seen with it has generated some responses already. I want to speak to some of them here.

A few folks mentioned PID controllers. Now, I'm not a Real Engineer, merely one of these computer-wrangling pretenders, but I am actually familiar with those things. I've worked at multiple places that get lots of mileage out of them. For example, one such service makes the very most of the CPU time on their machines, recognizing that a cycle idled is a cycle wasted.

If they have enough CPU time to go around, they will turn on all of the fancier features in their ranking software. This ensures you get served the very best ads, memes, cat pictures, updates from family members, portraits of just-served plates of food, and all of that other good stuff. Why do they do it? Because it makes them money -- lots and lots of money.

When load gets too high, perhaps because a lot of user traffic is arriving, they automatically scale back on those features. This happens on a per-process basis, and doesn't require a whole lot of coordination. The individual aggregation points and/or leaf nodes can figure this out for themselves a whole lot faster, and do. The quality of choices drops a little, and the CPU utilization drops back a bit, but they handle the load.

I also know about hysteresis. I usually use an example of a thermostat for that one, particularly the neat old ones with the bimetallic strips for triggering behaviors. If you've never played with one of those, you owe it to yourself to track one down. Just twist it around and enjoy the solid THWOCK every time it decides to change states. Then crack it open and see how simple it is.

I've also run across phase-locked loops (PLLs), particularly back when I was doing lots of Software Defined Radio stuff (like on the old scanner project).

The problem is that you can't just introduce stuff like this in an environment where people think that Python web services are the best way to run everything. I'm talking about thundering herds the likes of which we haven't seen since Microsoft trounced Linux in the web server benchmarks 20-plus years ago.

Why? Because people have gotten away with running at a relatively high level. They can throw machines (and SO much money) at the problems, and they will mostly get away with it. Who cares if you have a box that can only do four concurrent requests at a time? Who cares if there's no notion of timing out requests that sit on a queue instead of executing them, knowing the client is going to bail on you, or maybe already has?

What's strace? What's a syscall? Why do we need 1000 of these things? If you can afford it, you never really ask these questions. You just carry on and worry about something else instead.

This is what happens when you have a tremendously complex environment and only scattered educational resources that you have to piece together over multiple decades in order to even start approaching something resembling stable systems.

This is where stuff like my posts come in. My goal is to make sure everything I've picked up over the years from books, Usenet, trial and error, friends, coworkers, random script kiddies, and so forth makes it online somehow. Lots of people have fed info to me, and this is my way of keeping it moving.

We have a tremendously complex industry. Reject the notion of being THE ONE and just accept that nobody is going to know everything. That's why we build teams. That's why we spread the knowledge around.

This control system knowledge is certainly good, but the key is realizing that not everyone is ready to make use of it right now. They'll get there. This is how we all get there.

Taking too much slack out of the rubber band

Of late, I keep hearing more and more about elastic this and elastic that. People use it in order to "right-size" their services, and only run the number of instances, pods, or whatever... that their service needs at that moment. They do this instead of the old situation which is where you sized for the most traffic you could need to handle, added some safety margin, and then just didn't use all of it all of the time.

There are problems with this, though. Just like the situation of heat loss when you move things around, there are costs you introduce when something becomes elastically-sized. You have to be able to get accurate signals of when a "scale up" is needed, and then you have to be able to actually deliver on that scaling before you overrun your existing capacity.

The more penny-pinching you do up front by running it close to the line (and needing to "scale up" all the time) , the more dollars you'll probably lose in the back end from when it can't happen fast enough.

Here's a very real scenario.

Let's say you have your business, and it relies on a whole bunch of services running all over the place. Maybe you've been tracking the shiny thing of the month, and so are currently embroiled in the micro services thing. Whatever. However you got here, you're here now. You're doing lots of work in tiny increments, and you are highly reliant on responsively scaling in time to handle incoming load spikes.

Now let's say something breaks. Maybe one of your vendors breaks one of those critical 20 services you depend on. This nukes an entire service on your side, and that in turn drives a wedge into the machine that is your business. The entire thing shudders to a stop, and people start running around trying to fix it. Then when they realize it's the vendor, they start yelling at THEM, trying to get them to fix it.

Meanwhile, this local service has no work to do, and it's just chilling out. It's getting requests, sure, but it's throwing them away. Nothing makes it past this particular boulder, since it's an essential part of the rest of the process.

What else is happening? Well, further down the "flow" for the business pipeline, other services have seen their request rate dry up. Since nothing is getting past the big boulder service, the things downstream have nothing to do. Their CPU utilization goes down to almost nothing.

You know what happens next, right? The downscaler kicks in, and a bunch of those instances disappear. After all, they aren't busy, and they don't need to exist, so let's get rid of them and save some money!

Of course, at some point, the vendor fixes their brokenness, and then the local service gets restarted by the ops team (because it can't self-heal, naturally), and traffic starts flowing deeper into the business. Well, it's still prime time, and guess what? All of the later bits have scaled down to record-low levels, like "everyone on Earth was abducted by aliens and stopped using the service" levels. They are just NOT ready to handle the incoming load. Worse still, they can't even deal with part of it, since the actual situation of having too much load breaks them so badly that they can't even pick off a few requests and throw the rest away.

The net result is that couple of initial requests get through for a couple of seconds, then everything else grinds to a halt again as the first scaled-down service is hit by the swarm of locusts. The CPU shoots up, and this kicks off a scaling event -- assuming, of course, that nothing is preventing it from scaling back up because "you just scaled down a few minutes ago". This up-scaling is not a quick thing, and it may be on the order of minutes, or tens of minutes, before it's back where it needs to be.

Of course, with that service restored, the NEXT one down the line starts getting traffic, and it's also down-scaled, and... yeah. You get the idea. It goes on like this until you run out of things to boil, everything else is scaled back up to where it was before (or more, to handle the queued requests), and can survive.

This turned a short vendor-driven outage into a much, much longer locally-driven one.

What do you do about this? How about a big red button, for starters. If anything crazy happens, hit it, and don't let existing instances/pods/jobs/allocs/whatever get reaped. Maybe you'll need them later. Of course, that means you need a human at the conn forever, and that's not great. Maybe you could have some kind of auto-trigger for it.

For another thing, how about knowing approximately what the traffic is supposed to look like for that time of day, on that day of the week and/or year? Then, don't down-scale past that by default?

Or, how about some kind of second-order thing on the rate of decrease, such that it's not just a "divide this by that and that's what we do right now" number? Put some kind of sliding window on it. Of course, that just turns an instant outage into one that only happens after you've been down for a while and are already looking really bad in the press, so watch out for that, too.

Finally, if your business prints money, you could just always have the right number of $whatevers running, and just accept that they won't be as busy all of the time. It's not like you have your own duck curve, right? Look at it another way: when you're running below capacity, you're hopefully running faster. Faster services make for happier users, because people are impatient.

Capacity engineering is no joke.

November 11, 2019: This post has an update.

Hayes AT

By noreply@blogger.com (RevK)

A long long time ago, in galaxy far far away (no, scratch that bit), a standard evolved for talking to modems, well, specifically Hayes modems, but it was widely adopted.

It works over a serial link by sending commands starting AT for (attention). Now, I am pretty sure they were reasonably consistent, back in the day, but like many things this standard has evolved and been bastardised.

We now have things like this SIM800 module, which is basically a mobile phone in a can, with no display or keypad. It talks on a serial bus and talks Hayes AT commands, but as modified by various GSM bodies.

Now, some AT commands are consistent. You send AT and some options, and get some data followed by OK. Good.

There is a reasonably consistent format for commands and settings and queries, mostly. There are then AT+ functions which are used for a lot of the mobile stuff.

But it is far from consistent. The AT+CIPSEND, after the > sends "SEND OK" not "SENT OK" or "OK", and AT+CIPSHUT sends "SHUT OK". Why are these not just "OK" like the rest? I am also pretty sure I had one case of a response with no OK (but cannot find it now).

Then we have the asynchronous messages from the device. Most start with a +, like "+CREG: 0,1", so can be recognised if you are expecting another response. But some are just text like "SMS Ready". These smack of debug messages left in the code.

Half the interface was clearly designed for a person sat at a terminal typing stuff, and the other half was designed for talking to a machine!

But when you get to some of the higher level functions, like establishing a UDP "connection", it gets even more special. For a start, you look for "CONNECT OK" not simply "OK", and mostly at that point it seems to avoid sending asynchronous messages (though I cannot be sure). Some still can be sent, like "+PDP: DEACT" when it loses the connection. What you do get though, with no prompt, header, or indication of length is the raw binary content of any UDP packets you receive on the connection. So send a packet containing "+PDP: DEACT" and I'll think the connection has dropped!

What would have been sensible would have been a line something like "+DATA=N" and then N bytes of data, or some such, but no, it is simply the raw UDP packet.

Then we have some interesting little bugs and discrepancies. One that took a while to work but was that the length of UDP data I can send is limited. Not to 65535 which is what IP limits to, but to 1472 which is the available UDP in a 1500 byte IPv4 packet. Except it is not. It is actually 1460, any more says "ERROR". Oh, and it won't allow me to send a zero length UDP packet - no idea why, and as NAT is often used this is something I may want to send as a keep alive. I ended up having to send one byte.

But there is an even more special feature. When you receive a UDP packet, as I say, it arrives as the raw binary data via serial. I am relieved to see no mangling of any bytes, which is good. Except it truncates the last byte of the message. Yep, I have to send an extra dummy byte on my packets to the device. WTF?

I could save myself from a lot of this by coding PPP, pretending to dial on an old style modem and talking PPP which the device fakes and converts to packet data. This is a serious consideration, to be honest.

However, after a lot of messing about, my GPS trackers are sending (and receiving, when needed) tracking data over UDP over mobile - yay!

Transit of Mercury

For some reason the water in my pool is green and there's a weird film on the surface #nofilter

Microphones with tattle lights and passive wearables

Sometimes, I look at the confluence of technology and culture and wonder where it will take us. I see problems which could crop up, and solutions which might be demanded by an enraged public. Think of when that one iOS app scarfed down everyone's address books, and that started the whole thing of finer-grained permissions and pop-ups instead of them "just having access".

This particular half-baked idea comes from considering the situation with these "home assistant" (HomePod, Alexa, whatvever) boxes that are sitting around listening for trigger words. Since this always happens in software, it's not much of a stretch to imagine it being co-opted to do evil.

It's not enough to just have a "tattle" LED in-line with the mic hardware, though, since it might come and go too quickly for you to see. No, this particular wacky idea involves a lot more subtlety and nuance.

Imagine if there was a bit of hardware wired up to the mic, such that when energized by the host system, it had to "charge up" before the mic was connected to the input lines. While it was "charging", some kind of light might appear, or it might play a sound (through a local squeaker thing, not the main software-controlled speaker), or both. Then, once it got up to the right level, the mic would be switched into the circuit, and it would indicate this for anyone who happened to be watching.

At some point, the device would decide it was done listening, and would de-assert the audio input. The hardware would then "discharge" in such a way that a different "tattle" LED stayed on for some number of seconds. This way, you'd know that this thing had been on and had been listening to you at some point in recent history. The whole point is to thwart attempts to "pulse" the sensor to spy on a room without lighting up the LED (as you could probably otherwise do).

So naturally, this is where people start going "but if the mic is off until the software triggers it, how do you trigger the device remotely", and they'd be right. "Hey Siri" can't work if there's no mic. For that, I propose something even less-baked (quarter-baked idea?) which involves some fun and games with RF energy.

There are passive devices which behave a certain way and resonate in the presence of a RF field. They're used for anti-theft applications. Start with that. Then recall the whole iPhone 4 "antennagate" thing, where us silly meatbags kept holding the device and bridged the antennas (in the outer metal band) in weird ways and screwed up the signal. Now recall that everyone using one of these home assistant devices is likely to have at least one 2.4 and/or 5 GHz transmitter for their wifi networks.

Glue all of that together, and you might just be able to create a totally passive "wearable" that behaves one way normally and behaves another way when touched or bridged by a tap, or a squeeze. It wouldn't have a battery and wouldn't do anything beyond a certain range, but it would be fine for triggering stuff around the house.

Are there giant problems to be solved here? Of course. Do I think it'll happen? I do. I think eventually, someone will put all of this together. Maybe there'll be some kind of "mic standard" where manufacturers commit to only wiring their microphones up through this kind of tattle device, and then enterprising YouTubers can tear them down and verify its behavior to keep them honest.

If this happens, cut me in on the action, ok?

Recombination And Reionization

These signals seem to be pre-star-formation but post-Malone.

Voting Referendum

The weirdest quirk of the Borda count is that Jean-Charles de Borda automatically gets one point; luckily this has no consequences except in cases of extremely low turnout.

Episode 87. Ok, it's time to get Reactive!

It's that Streaming-new-deal that has been taken over the web world, Reactive! You've heard about it, and maybe even tried to learn it a couple of times but find it confusing? Well, be confused no more since on this episode Bob and I explore the basic foundations of Reactive (and explain what is that makes is so confusing to begin with)

But that's not all. We also dive on why is such a "hot" technology and why is the recommended approach on new microservices, even so, we also explore its drawbacks and why we shouldn't rip everything apart to make "reactive" things.

Lastly we start exploring one of the "reactive" frameworks with Spring WebFlux, and explore how to "think" about Reactive (and came with the marble track analogy). In all, this episode will shed light on a topic that has been hard to understand, but on which, if done correctly can bring a very large performance gain!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo
Don't forget to SUBSCRIBE to our cool NewsCast! Java Off Heap

Do you like the episodes? Want more? Help us out! Buy us a beer!

And Follow us! @javapubhouse and @fguime and @bobpaulin


Software Updates

Everything is a cloud application; the ping times just vary a lot.

Sorcerer's apprentice mode and busting ghosts

Some years ago, I picked up the term "Sorcerer's Apprentice Mode" from a coworker. It's a clever reference to a scene in Disney's Fantasia where things come to life and start making a real mess all by themselves. I usually use it now to refer to automatons which go out of control and do something that no reasonable person would do in real life. This story is one such example.

It's just some random tech company with a bunch of employees and Linux boxes. They use LDAP and/or Active Directory to track everyone. As far as the Linux boxes are concerned, it's all LDAP. You don't really exist in /etc/passwd, but instead show up by way of some NSS magic that fills in whenever someone tries to look you up. Run "id"? NSS. ssh in? NSS. See usernames in ls? You get the idea.

Nearly every engineer has at least one workstation type box somewhere, and since it's just a normal Linux machine, they can set up cron jobs, run things in screen or tmux, or otherwise leave stuff running without them being there. This includes after they quit, or worse, are fired. This could be very bad.

This company had someone thinking ahead, and so some now-unknown person came up with a tool to deal with this problem. They created their own little privileged cron job that would wake up every couple of minutes to look for processes owned by people who didn't work for the company any more. This way, if you set up something to mine bitcoins, or otherwise do nasty things after you left, it would be killed over and over again. Eventually, your machine would be reinstalled and it'd all die, but this thing filled in the gap.

On the surface, this sounded great. Former workers would be prevented from running things after they were no longer attached to the company. For the most part, it was great. It did its job.

Then, one day, someone or something screwed up LDAP and "fired" everyone. Every single employee disappeared from LDAP in one way or another. This made life very interesting because your user records needed to exist for you to ssh in, or sudo, or basically do anything involving creating a new shell. The people trying to fix the problem had to make do with whatever they already had open.

So there they were, working the problem, trying to find out what the heck had happened to LDAP... and then they were ALL LOGGED OUT. Every single connection was closed, and nobody could get back in again.

What happened? The cleanup job fired.

None of them were employees any more according to the available data, so it went to town and wiped out every process it found. All of those shells and sshds were gone moments later.

Nice, right?

The solution, incidentally, was to use a "canary user" to see if LDAP itself and the data conveyed by it were both plausible and worth honoring. The idea was that if they disappear, things are too screwed up to possibly allow killing processes. Initially, I had trouble coming up with one of these and so used a certain founder's account, figuring if they vanished for real, the company had bigger problems to solve.

Fortunately, someone else knew that someone had created a LDAP-only test account which would never exist in /etc/passwd or similar, and it would tell me exactly what I needed to know. It was used as the canary user, and the fix was shipped.

Some months later, somehow, the LDAP db was changed to "fire" everyone again. Remembering what happened before, a bunch of people cried out: "stop the cleanup thing before it fires!" ... but then they found it had been fixed and breathed a sigh of relief. Then they got busy fixing the actual problem.

The canary user did its job and nothing bad happened that time.

GPS trackers

By noreply@blogger.com (RevK)

I am playing around with GPS trackers (I'll post more on hardware for this later). This is for commercial vehicles, not anything covert, and I am not going to even touch on GDPR in this post :-)

Reducing the number of points

One of the challenges is managing how often we sample location, and if/how we reduce the number of points. There are a number of reasons to do this:-

Local Storage

One reason to reduce the number of points stored is where the tracker is storing the points - either for download later or for transmission when mobile coverage comes back, etc. The local storage of a small embedded device is likely to be limited. The GPS module I am using has several ways to do this (I have yet to work out how to do other than simple interval). Storing every second, which it will happily do, runs out of space in a few hours.


Transmitting the data over a mobile network has costs. Yes, there are SIM packages with unlimited data, but if you have a fleet of hundreds of vehicles you can do better than each of them on a package for tens of pounds a month and unlimited data. There are packages with much lower monthly costs but data usage costs, and there are foreign SIM packages with roaming for better coverage and higher data costs. Reducing the data transmission can get the costs down to pence a month. This means not only reducing the number of points but finding ways to reduce the overhead of transmission of the data itself.

My plan is to pack data in to an encrypted UDP packet, with a simple resend packet sent back if the data has not arrived at the expected time. I.e. an entirely NAK based protocol so that normally it is one packet in one direction, probably every 10 minutes or so. This means really low mobile data usage.

Database storage

Reducing the number of points also helps with back-end storage. Hundreds of vehicles tracked every second means a lot of data. Simply increasing the interval loses useful data so you ideally need a smarter way to reduce the data.


Perhaps a small point, with computers and networks being so fast, but reducing the number of points sent to a browser to display a route can make things much more responsive.

Where to reduce points

At present I have code to reduce the points when pulling from a database and sending to a browser, with an option to also delete the removed points from the database. But ideally you want to do this in the tracker itself - that way you have all of the benefits for local storage and transmission as well.

This also creates an extra advantage - if you have a means to reduce data points effectively you can start by collecting much more data in the tracker. The GPS modules I am using can do 1/10 second fixes, so why not start with this, and reduce points from there.

How to reduce points

I pondered how to do this, and came upon with something based on removing points within a certain distance. I then found there is a standard algorithm which is basically very similar to what I came up with. The Ramer Douglas Peucker algorithm.

It recursively takes a set of points. If all intermediate points are within a specified margin of the straight line between start and end, then those intermediate points are removed. If not, the one furthest away is kept and the point from start to this, and from this to end, are recursively processed. The end result is a path of straight lines where all the removed points must have been within the specified margin of that line.

This works well, and removes points on long straight roads but keeps points driving around a roundabout!

Even setting a margin as small as 1m massively reduces the number of points, and what is even better is that you can start with say 10 times as many points (e.g. 1/10 second fixes) and still end up with similar final number - just that the points you select are more precise (i.e. the exact edge of a turn, not just nearest second).

Of course I won't have a full set of points in the tracker, I'll have to work on time periods, like 10 minutes, collect data, and then apply the algorithm. This means there will be points based purely on time as the end points for the chunks of data I process.


One issue is that the raw data is lat/lon and not ground distances. There are ways to work out exact ground distances around the curved surface of the Earth, but a simpler way is to just assume we can map lat/lon on to a flat plane. What I do is, for each stage of the algorithm, take all lat/lon relative to the middle, and convert to metres. For latitude this is simply multiple my 111111 (yes, apparently this comes from French definition of a metre). For longitude it is 111111*cos(lat), remembering to convert to radians for cos(). This means I can then work out distance from a line in metres with minimal error. Of course as the algorithm recurses and processes smaller line segments, the error because the Earth is not flat (really, it is not!) reduces.


For a change, I am not talking of 3D printing, but we have altitude as well. So I am including altitude in the calculations. This means that a straight road that has a peak hill gets a point kept at the top of the hill!


Yes, 4D printing would be cool, but no, I am now including time in the algorithm. That way we get points if a vehicle stops and starts or changes speed. The only issue here is deciding how time works as a unit in the distance calculation, so I need a metres/second. I have made this small, treating a 1 second deviation from the line between two points in space and time as a small fraction of a metre, hence you have to change speed or stop for many seconds to create a point you keep. It seems to work well.

Dropping summer time

By noreply@blogger.com (RevK)

It seems moves are afoot to stop the clock changes, and I rather like the idea.

The issue, for me, is that people talk of "permanent summer time" as the answer, sort of forgetting that the clocks are set based on lots of measurement at the Greenwich observatory and hence why we have Greenwich Mean Time. It is summer time that is the "anomaly" and it only makes sense to me to be on GMT all year.

This assumes stopping clock changes is a good idea, and that seems to be a matter of debate, but one which is leaning towards the idea of not doing it.

So, some thoughts on why, to my mind, it is obvious we stick to GMT all year.

The matter of definition

It is called GMT, and is generally the high sun at the middle of the day at 12:00. It would be crazy, IMHO, to have the mean time over Greenwich as Greenwich Mean Time plus one hour.

What would we call it?

We can't call it GMT and it makes no sense to call it BST as not only summer time. It won't be UTC if +1, so actually we need a new name. That is more of a pain that you realise as it is a lot of software and all sorts. UKT maybe?

It only matters in winter anyway!

In summer we have more than enough daylight. Yes, moving some "unused" daylight from early morning to evening is vaguely helpful, or was before the invention of street lights. But what matters is Winter.

We tried a permanent summer time in 1970 and it did not go well. We know GMT in Winter "works" well enough and fits around schools and so on.

Changing what we do in Winter (by making permanent UTC+1) would be way more problematic as we simply have less daylight to play with. Changing in summer (by stopping BST) is not an issue as we have daylight to spare, so to speak.

Give UK an advantage?

There are a lot of things that log in UTC, and confusion over UTC and local time happen all the time. Heck, even the Amazon app gets the order date wrong all summer because of this. BT get this wrong in their XML in lots of places. There is an advantage for the a country that stays on UTC+0 as their time zone as all UTC logs will be local time, and simpler for everyone.

Some have even suggested that UTC should be moved to the middle of the Atlantic so no country is UTC+0 and hence has any advantage. Let's give the UK that advantage.

ESP-IDF re-partitioning the flash on the fly

By noreply@blogger.com (RevK)

The ESP32-WROOM-32 has a 4M flash, which is usually carved up for boot loader, some small areas (NVS, etc), and then three code image spaces: 1 for "factory", and two "OTA" areas which alternate. Well, that is one of the two defaults you can set.

Sadly, even the most basic of code, with even log levels of logging enabled can easily hit a 1M code space limit. So I decided to make a new partition table.

Just two OTA spaces

The first thing I confirmed is that if I just have two OTA areas, and no "factory" area, it works fine. It can alternate the OTA flashing, and make flash just flashes the first OTA area.

Oddly, it looks to me like you can have two OTA areas of 0x1F8000 but the make system said it would not fit. I ended up going for 0x1F0000 which is close to 2M.

On the fly update

The real trick was changing the partition table on the fly. The key issue here was ensuring the original factory build was in the same place as the first new OTA block. I changed from factory+ota_0+ota_1 to just ota_0+ota_1 at 0x10000. This meant, whichever image I was running, by changing the partition table a reboot would find the factory release (in ota_0) and run it.

I simply had to erase and re-flash the partition block. I obtained the signed binary partition from the build directory and embedded. Then I just reboot, and sorted. Obviously you then need an OTA upgrade to move off the original factory code.

The simplest check was to compare the current partition table with the one I want, and if different, re-flash and reboot.

You do need to tell the SPI flash component to allow you to erase/write to dangerous areas of flash, but otherwise the code was pretty simple.

End result, I have nearly twice the code space.

The Long Drive

Over a thousand miles over some of the loneliest areas of the USA. What's not to love?

Travel Equipment: 2019 Edition

Taking a look at some of the key travelling equipment I've grown to like in the last year of travel.

ASGI 3.0

Upgrading the ASGI spec to simplify it, while keeping backwards compatibility.

A Django Async Roadmap

Taking a look at what it would take to make Django async-native, what it enables, and if we should even do it at all.

Python & Async Simplified

Event loops, coroutines and awaits, oh my!

Channels 2.0

Finally, the promised land is here and Channels 2.0 is released. But how much has changed? And why?

The Sheets Of San Francisco

Finally, my 3D city maps return, and this time they're mapping the streets and hills of San Francisco.

Channels 2: October

What's happening in the world of Channels? How many times have I rewritten the API now?

New Zealand

Adventures in the land of volcanoes, unique birds, fjords, and long white clouds.

Towards Channels 2.0

Outlining my plan for iterating on Channels' design, and what the future might hold for both Django and Python in general.