9/27/2013

09-27-13 - Playlist for Rainy Seattle

Who the fuck turned the lights out in the world? Hello? I'm still here, can you turn the lights back on please?

Playlist for the gray :


(Actually now that I think about it, "playlist for the gray" is really just the kind of music I listened to when I was young (and, apparently, depressed). It reminds me of sitting in the passenger seat of a car, silent, looking out the window, it's raining, the world passing.)


Music request :

Something I've been seeking for a while and am having trouble finding : really long repetitive tracks. Preferably analog, not techno or dance music. Like some guitar strumming and such. Not pure drone, not just like one phrase repeated over and over, but a song, a proper song, just a really long version of that song. And not some awful Phish crap either; I don't mean "jazz" or anything with long improvs that get away from the basic song structure. I don't want big Mogwai walls of sound or screeching anything either; nothing experimental; I hate songs that build to a big noise crescendo, no no, just keep the steady groove going. Just regular songs, But that go on and on.

Any pointers appreciated. Particularly playlists or "best of" lists on music sites. There must be some DJ kid doing super-long remixes of classic rock songs, right? Where is he?

Some sort of in the right vein examples :

Neu! - Hallogallo (10 min)
Traffic - Mr Fantasy Live (11 min) (maybe not a great example, too solo-y)
YLT - Night Falls on Hoboken (17 min)

9/20/2013

09-20-13 - House Design

Blah blah blah cuz it's on my mind.

First a general rant. There's nothing worse than "designers". The self-important sophomoric egotism of them is just mind boggling. Here's this product (or in this case, house plan) that has been refined over 1000's of years by people actually using it. Oh no, I know better. I'm so fucking great that I can throw all that out and come up with something off the top of my head and it will be an improvement. I don't have to bother with prototyping or getting evaluations from the people who actual use this stuff every day because my half-baked ideas are so damn good. I don't need to bother learning about how this product or layout has been fiddled with and refined in the past because my idea *must* be brand new, no one could have possibly done the exact same thing before and proved that it was a bad idea.

And onto the random points -


X. Of course the big fallacy is that a house is going to make your life better or fix anything. One of the most hillarious variants of this is people who put in a specific room for a gym or a bar or a disco, because of course in their wonderful new house they'll be working out and having parties and lots of friends. Not sitting in front of the TV browsing donkey porn like they do in their old house.

X. Never use new technology. It won't work long term, or it will be obsolete. You don't want a house that's like a computer and needs to be replaced in a few years. Use old technology that works. That goes for both the construction itself and for any integrated gadgets. Like if you get some computer-controlled power and lighting system; okay, good luck with that, I hope it's not too hard to rip out of the walls in five years when it breaks and the replacement has gone out of production. Haven't you people ever used electronics in your life? How do you not know this?

X. Living roof? WTF are you thinking? What a nightmare of maintenance. And it's just a huge ceiling leak inevitably. Yeah, I'm sure that rubber membrane that had several leaks during construction is gonna be totally fine for the next 50 years.

X. Assume that all caulks, all rubbers, all glues, all plastics will fail at some point. Make them easy to service and don't rely on them for crucial waterproofing.

X. Waterproofing should be primarily done with the "shingle principle". That is, mechanical overlaps - not glues, caulks, gaskets, coatings. Water should have to run upwards in order to get somewhere you don't want it.

X. Lots of storage. People these days want to eliminate closets to make rooms bigger. WTF do you need those giant rooms for? Small rooms are cosy. Storage everywhere makes it easy to keep the rooms uncluttered. So much nicer to have neat clean small rooms. The storage needs to be in every single room, not centralized, so you aren't walking all over the house every time you want something.

X. Rooms are good. Small rooms. I feel like there are two extreme trends going on these days that are both way off the ideal - you have the McMansion types that are making 5000 sqft houses, and then the "minimalist" types trying to live in 500 sqft to prove some stupid point. Both are retarded. I think the ideal amount of space for two people is around 1200-1500 sqft. For a family of three it's 1500-2000 or so.

X. Doors are good. Lofts are fucking retarded. Giant open single spaces are awful. Yeah it's okay if you're single, but if there are two people in the house you might just want to do different things and not hear each other. Haven't you ever lived in a place like that? It's terrible. Doors and separated spaces are wonderful things. (I like traditional Japanese interiors with the sliding screens so that you can rearrange spaces; maybe an open living-dining room, but with a sliding door through the middle to make it into two rooms when you want that? Not sure.)

X. Shadow gaps, weird kitchen islands, architectural staircases, sunken areas, multiple levels. Bleh. You've got to think about the cleaning. These things might look okay when it's first built, but they're a nightmare for maintenace.

X. Use trim. The popular thing these days seems to be trim-less walls. (part of the sterile awful "I live in a museum" look). In classic construction trim is partly used to hide the boundary between two surfaces that might not have a perfect joint, or that are different materials and thus might move against each other over time. With fancy modern construction the idea is that you don't have a bad joint that you have to hide, so you can do away with the baseboards and crown molding for a cleaner look. Blah, no, wrong. Baseboards are not just for hiding the joint, they serve a purpose. You can clean them, you can kick them, and they protect the bottom of your walls. They also provide a visual break from the floor to the wall, though that's a matter of taste.

X. I don't see anybody do the things that are so fucking obviously necessary these days. One is that all your wiring should be accessible for redoing, because we're going to continue to get new internet and cabling needs. Really you should run PVC tubes through your walls with fish-wires in them so that you can just easily pull new wiring through your house. (or of course if you make one of those god-awful modern places you should just do exposed pipes and wires; it's one of the few advantages of modern/industrial style, wtf. don't take the style and then reject the advantage of it). You should have charging stations that are just cupboards with outlets inside the cupboard so that you can hide all your charger cords and devices. There should be tons of outlets and perhaps they should be hidden; you could make them styled architectural features in some cases, or hide them in some wood trim or something. Another option would be to have retractable power outlets that coil up inside the wall and you can pull out as needed. Another idea is your baseboards could have a hollow space behind them, so you could snap them off and run cords around the room hidden behind the baseboards.


It would have been fun to be an architect. I have a lot of ideas about design, and I appreciate being in physical spaces that do something special to your experience. I love making physical objects that you can see and touch and show other people; it's so frustrating working in code and never making anything real.

But I'm sure I would have failed. For one things being an architect requires a lot of salesmanship and bullshitting. Particularly at the top levels, it's more about being a celebrity persona than about your work (just like art, cooking, etc.). To make any money or get the good commisions as an architect you have to have a bit of renown; you need to get paid extra because you're a name that's getting magazine attention.

But it's really more about following trends than about doing what's right. I suppose that's just like cooking too. Magazines (and blogs now) have a preconceived idea of what is "current" or "cutting edge" (which is not actually cutting edge at all, because it's a widespread cliche by that time), and they look for people that fit their preconceived idea. If you're a cook that does fucking boring ass generic "farm to table" and "sustainably raised" shit, then you're current and people will feature you in the news. If you just stick to what you know is delicious and ignore the stupid fads, then you're ignored.

9/18/2013

09-18-13 - Per-Thread Global State Overrides

I wrote about this before ( cbloom rants 11-23-12 - Global State Considered Harmful ) but I'm doing it again because I think almost nobody does it right, so I'm gonna be really pedantic.

For concreteness, let's talk about a Log system that is controlled by bit-flags. So you have a "state" variable that is an or of bit flags. The flags are things like where do you output to (LOG_TO_FILE, LOG_TO_OUTPUTDEBUGSTRING, etc.) and maybe things like subsection enablements (LOG_SYSTEM_IO, LOG_SYSTEM_RENDERER, ...) or verbosity (LOG_V0, LOG_V1, ...). Maybe some bits of the state are an indent level. etc.

So clearly you have a global state where the user/programmer have set the options they want for the log.

But you also need a TLS state. You want to be able to do things like disable the log in scopes :


..

U32 oldState = Log_SetState(0);

FunctionThatLogsTooMuch();

Log_SetState(oldState);

..

(and in practice it's nice to use a scoper-class to do that for you). If you do that on the global variable, your thread is fucking up the state of other threads, so clearly it needs to be per-thread, eg. in the TLS. (similarly, you might want to inc the indent level for a scope, or change the verbosity level, etc.).

(note of course this is the "system has a stack of states which is implemented in the program stack").

So clearly, those need to be Log_SetLocalState. Then the functions that are used to set the overall options should be something like Log_SetGlobalState.

Now some notes on how the implementation works.

The global state has to be thread safe. It should just be an atomic var :


static U32 s_log_global_state;

U32 Log_SetGlobalState( U32 state )
{
    // set the new state and return the old; this must be an exchange

    U32 ret = Atomic_Exchange(&s_log_global_state, state , mo_acq_rel);

    return ret;
}

U32 Log_GetGlobalState( )
{
    // probably could be relaxed but WTF let's just acquire

    U32 ret = Atomic_Load(&s_log_global_state, mo_acquire);

    return ret;
}

(note that I sort of implicitly assume that there's only one thread (a "main" thread) that is setting the global state; generally it's set by command line or .ini options, and maybe from user keys in a HUD; the global state is not being fiddled by lots of threads at program time, because that creates races. eg. if you wanted to do something like turn on the LOG_TO_FILE bit, it should be done with a CAS loop or an Atomic OR, not by doing a _Get and then _Set).

Now the Local functions need to set the state in the TLS and *also* which bits are set in the local state. So the actual function is like :


per_thread U32_pair tls_log_local_state;

U32_pair Log_SetLocalState( U32 state , U32 state_set_mask )
{
    // read TLS :

    U32_pair ret = tls_log_local_state;

    // write TLS :

    tls_log_local_state = U32_pair( state, state_set_mask );

    return ret;
}

U32_pair Log_GetLocalState( )
{
    // read TLS :

    U32_pair ret = tls_log_local_state;

    return ret;
}

Note obviously no atomics or mutexes are need in per-thread functions.

So now we can get the effective combined state :


U32 Log_GetState( )
{
    U32_pair local = Log_GetLocalState();
    U32 global = Log_GetGlobalState();

    // take local state bits where they are set, else global state bits :

    U32 state = (local.first & local.second) | (global & (~local.second) );

    return state;
}

So internally to the log's operation you start every function with something like :

static bool NoState( U32 state )
{
    // if all outputs or all systems are turned off, no output is possible
    return ((state & LOG_TO_MASK) == 0) ||
        ((state & LOG_SYSTEM_MASK) == 0);
}

void Log_Printf( const char * fmt, ... )
{
    U32 state = Log_GetState();

    if ( NoState(state) )
        return;

    ... more here ...

}

So note that up to the "... more here ..." we have not taken any mutexes or in any way synchronized the threads against each other. So when the log is disabled we just exit there before doing anything painful.

Now the point of this post is not about a log system. It's that you have to do this any time you have global state that can be changed by code (and you want that change to only affect the current thread).

In the more general case you don't just have bit flags, you have arbitrary variables that you want to be per-thread and global. Here's a helper struct to do a global atomic with thread-overridable value :

            
struct tls_intptr_t
{
    int m_index;
    
    tls_intptr_t()
    {
        m_index = TlsAlloc();
        ASSERT( get() == 0 );
    }
    
    intptr_t get() const { return (intptr_t) TlsGetValue(m_index); }

    void set(intptr_t v) { TlsSetValue(m_index,(LPVOID)v); }
};

struct intptr_t_and_set
{
    intptr_t val;
    intptr_t set; // bool ; is "val" set
    
    intptr_t_and_set(intptr_t v,intptr_t s) : val(v), set(s) { }
};
    
struct overridable_intptr_t
{
    atomic<intptr_t>    m_global;
    tls_intptr_t    m_local;    
    tls_intptr_t    m_localset;
        
    overridable_intptr_t(intptr_t val = 0) : m_global(val)
    {
        ASSERT( m_localset.get() == 0 );
    }       
    
    //---------------------------------------------
    
    intptr_t set_global(intptr_t val)
    {
        return m_global.exchange(val,mo_acq_rel);
    }
    intptr_t get_global() const
    {
        return m_global.load(mo_acquire);
    }
    
    //---------------------------------------------
    
    intptr_t_and_set get_local() const
    {
        return intptr_t_and_set( m_local.get(), m_localset.get() );
    }
    intptr_t_and_set set_local(intptr_t val, intptr_t set = 1)
    {
        intptr_t_and_set old = get_local();
        m_localset.set(set);
        if ( set )
            m_local.set(val);
        return old;
    }
    intptr_t_and_set set_local(intptr_t_and_set val_and_set)
    {
        intptr_t_and_set old = get_local();
        m_localset.set(val_and_set.set);
        if ( val_and_set.set )
            m_local.set(val_and_set.val);
        return old;
    }
    intptr_t_and_set clear_local()
    {
        intptr_t_and_set old = get_local();
        m_localset.set(0);
        return old;
    }
    
    //---------------------------------------------
    
    intptr_t get_combined() const
    {
        intptr_t_and_set local = get_local();
        if ( local.set )
            return local.val;
        else
            return get_global();
    }
};

//=================================================================         

// test code :  

static overridable_intptr_t s_thingy;

int main(int argc,char * argv[])
{
    argc; argv;
    
    s_thingy.set_global(1);
    
    s_thingy.set_local(2,0);
    
    ASSERT( s_thingy.get_combined() == 1 );
    
    intptr_t_and_set prev = s_thingy.set_local(3,1);
    
    ASSERT( s_thingy.get_combined() == 3 );

    s_thingy.set_global(2);
    
    ASSERT( s_thingy.get_combined() == 3 );
    
    s_thingy.set_local(prev);
    
    ASSERT( s_thingy.get_combined() == 2 );
        
    return 0;
}

Or something.

Of course this whole post is implicitly assuming that you are using the "several threads that stay alive for the length of the app" model. An alternative is to use micro-threads that you spin up and down, and rather than inheriting from a global state, you would want them to inherit from the spawning thread's current combined state.

09-18-13 - Fast TLS on Windows

For the record; don't use this blah blah unsafe unnecessary blah blah.


extern "C" DWORD __cdecl FastTlsGetValue_x86(int index)
{
  __asm
  {
    mov     eax,dword ptr fs:[00000018h]
    mov     ecx,index

    cmp     ecx,40h // 40h = 64
    jae     over64  // Jump if above or equal 

    // return Teb->TlsSlots[ dwTlsIndex ]
    // +0xe10 TlsSlots         : [64] Ptr32 Void
    mov     eax,dword ptr [eax+ecx*4+0E10h]
    jmp     done

  over64:   
    mov     eax,dword ptr [eax+0F94h]
    mov     eax,dword ptr [eax+ecx*4-100h]

  done:
  }
}

DWORD64 FastTlsGetValue_x64(int index)
{
    if ( index < 64 )
    {
        return __readgsqword( 0x1480 + index*8 );
    }
    else
    {
        DWORD64 * table = (DWORD64 *)  __readgsqword( 0x1780 );
        return table[ index - 64 ];
    }
}

the ASM one is from nynaeve originally. ( 1 2 ). I'd rather rewrite it in C using __readfsdword but haven't bothered.

Note that these may cause a bogus failure in MS App Verifier.

Also, as noted many times in the past, you should just use the compiler __declspec thread under Windows when that's possible for you. (eg. you're not in a DLL pre-Vista).

9/17/2013

09-17-13 - Travel with Baby

We did our first flight with baby over the weekend.

It went totally fine. All the things that people worry about (getting through security, baby ears popping, whatever) are no problem. Sure she cried on the plane some, but mostly she was really good, and anybody on the plane who was bothered can go to hell.

(hey dumbass who sat next to us - when you see a couple with a baby and they say "would you like to move to another seat" you should fucking move. And if you don't move, then you need to be cool about it. Jesus christ you all suck so bad, I'm fucking holding your hand helping you be a decent person, you don't even need to take any initiative, I know you all suck too bad to speak up and take the lead at being decent, but even when I open the door for you, you still can't manage to take the easy step. Amazing.)

Despite it being totally fine, it made me feel like I don't really need to do that again.

You just wind up spending the whole trip staring at baby anyway. You wind up spending a lot of time stuck in the hotel room, because she needs to nap, or you have to go back to feed her and get more toys, or get her out of the sun, or whatever. Hotel rooms are god awful. There's this weird romanticism about hotels, but the reality is they're almost uniformly dreary, in the standard shoebox design with light at only one end. My house is so much fucking better.

Like I'm in another part of the world, but I'm still just doing "goo-goos" and shaking the rattle, why do I need to bother with the travel if this is all I'm doing? And of course it's much harder because I don't have all my handy baby accessories and her comfy bed and all that. It made me think of those cheesy photo series with the baby always in the foreground of the photo and all kinds of different world locations in the background.

09-17-13 - A Day in the Life

Wake up at 730 with the baby.

Show her some toys, shake them around, let her chew on them. Practice rolling over, she gets frustrated, help her out. She wants to walk around a bit, so pick her up and hold her while she walks. Ugh this is hard on my back. She swats at things, I move away the dangerous knives and bring close some jars for her to play with. She's getting frustrated. Show her the mirror baby, she flirts for a minute. She gets fussy; check diaper, yep it's dirty; go change it. Lay her down and make faces and do motorboats and stuff. Try to read her a book; she just wants to eat the pages and gets frustrated. Walk her around outside and show her some plants, let her grab some leaves. She wants to walk, help her walk in the grass. Ugh this is hard on my back. Getting tired now. Take her in and put her in the walker; put some toys on the walker, she swats them off, pick them up and put them back. She's getting bored of that. Show her some running water, let her suck my finger. She's getting fussy again.

God I'm tired. Check the clock.

It's 800.

Twelve more hours until she sleeps. ZOMG.

9/12/2013

09-12-13 - Health Insurance

We've got a bunch of health insurance bills from baby and related care, and several of them have fraudulent up-coding or double-billing. But it's sort of a damned-if-you-whatever situation. Either you :

1. Fight it, spend lots of time on hold on the phone, filling out forms, talking to assholes who won't help you. Probably get nowhere and be stressed and angry the whole time.

2. Just pay it and try to "let it go". The money's not that huge and peace of mind is worth it. But in fact feel defeated and like a pussy for letting them get away with robbing you. Become less of a man day by day as you are crushed by the indefeatable awfulness of the world.

Though I suppose those are generally your only two options when fighting beaurocracy. It's just that health care is more important to our lives, our wallets, and generally the health of the entire economy as it becomes an increasing tax on all of us.

We walked through some local street fair a few weeks ago, and saw one of the doctors who's fraudulently billed us; he was being all smiley, oo look at me I'm part of the community, I'm your nice neighborhood doctor man. I wanted to just punch him in the face.

Also : Republicans are retarded pieces of shit. How could you possibly be seriously opposed to tearing apart our entire health care sector and rebuilding from scratch with cost controls and a public option? They're either morons (unaware of their evil), or assholes (aware and intentionally evil). Oh yes, it's wonderful that we have choice and competition in this robust and functioning health care economy. Oh no, wait, actually we don't have that at all. We have a corrupt government-private conspiracy, which you have intentionally created, which is screwing over everyone in America except for the heads of the health care industry (and the politicians that take their money). Sigh. Time to go back to pretending that nothing exists outside my home, because it's all just too depressing.

9/10/2013

09-10-13 - Grand Designs

I've been watching a lot of "Grand Designs" lately; it's my new go-to soothing background zone-out TV. It's mostly inoffensive (*) and slightly interesting.

(* = the incredibly predictably saccharine sum-up by Kevin at the end is pretty offensive; all throughout he's raising very legitimate concerns, and then at the end every time he just loves it. There are a few episodes where you can see the builder/client is just crushed and miserable at the end, but they never get into anything remotely honest like that, it's all very superficial, ooh isn't excess consumerism wonderful!)

I'm not even going to talk about the house designs really. I think most of them are completely retarded and abysmal generic pseudo-modern crap. (IMO in general modernism just doesn't work for homes. Moderism is beautiful when it's pure, unforgiving, really strictly adhered to. But nobody can live in a home like that. So they water it down and add some natural materials and normal cosy furniture and storage and so on, and that completely ruins it and turns it into "condo pseudo-modernism" which is just the tackiest of all types of housing. Modernism should be reserved for places where it's realistic to keep the severe empty minimalism that makes it beautiful, like museums).

Thoughts in sections :


What makes a house.

One of the most amusing things is noticing what people actually say at the sum-up at the end. Every time Kevin sits down and talks with the couple when the house is done and asks what they really love about it, the comments are things like :

"We're just glad it's done / we're just glad to have a roof over our head".
"It's so nice to just be together as a family"
"The views are amazing."
"The location is so special."

etc. it always strikes me that none of the pros has anything to do with the expensive house they just made. They never say anything like : "the architecture is incredibly beautiful and it's a joy to just appreciate the light and the spaces". Or "we're really glad we made a ridiculous 4000 sq ft living room because we often have 100 friends over for huge orgies". Because they don't actually care about the house at all (and it sucks).

Quite often I see the little cramped bungalow that people start out with and think "that looks just charming, why are you building?". It's all cosy and full of nick-nacks. It's got colorful paint schemes and is appropriately small and cheap and homey. Then they build some awful huge cavernous cold white box.

The children in particular always suffer. Often they're in a room together before the build, and the family is building to get more space so the kids can all have their own room. But the kids in the shared room are all laughing and wrestling, piled up on each other and happy. Kids are meant to be with other kids. In fact, humans are meant to be with other humans. We spend all this money to get big empty lonely spaces, and are worse off for it. Don't listen to what people say they want, it's not good for them.

In quite a few of the episodes, the couple at the beginning is full of energy, really loving to each other, bright eyed. At the end of the episode, they look crushed, exhausted, stressed out. Their lips are thin and they're all tense and dead inside.

Even in the disasters they're still saying how wonderful it is and how they'd do it all over (because people are so awfully boringly cowardlyly dishonest and never admit regret about major life decisions until after they've unwound them (like every marriage is "wonderful" right up until the day of the divorce)), but you can see it in their eyes. Actually the final interviews of Grand Designs are an interesting study in non-verbal communication, because the shlock nonsense that they say with their mouths has absolutely zero information content (100% predictable = zero information), so you have to get all your information from what they're not saying.

It's so weird the way some people get some ridiculous idea in their head and stick to it no matter how inconvenient and costly and more and more obviously foolish it is. Like I absolutely have to build on this sloping lot that has only mud for soil, or I have to build in this old water tower that's totally impractical. They incur huge costs, for what? You could have just bought a normal practical site, and you would have been just as happy, probably much happier.

In my old age I am appreciating that all opinions are coincidences and taste is an illusion. Why in the world would you butt your head against some obviously difficult and costly and impractical problem. You didn't actually want that thing anyway. You just thought you wanted it because you are brainwashed by the media and your upbringing. Just get something else that's easier. All things are equal.


Eco Houses.

The "eco houses" are some of the most offensive episodes to me. The purported primary focus of these "eco houses" is reducing their long-term carbon footprint, with the primary focus being on insulation to reduce heating costs. That's all well and good, but it's a big lie built on fallacies.

They completely ignore the initial eco cost of the build. Often they tear down some perfectly good house to start the build, which is absurd. Then they build some giant over-sized monstrosity out of concrete. They ignore all that massive energy waste and pollution because "long term the carbon savings will make up for it". Maybe, maybe not. Correctly doing long term costs is very hard.

Obviously anyone serious about an eco house should build it as small as reasonable. Not only does a small house use less material to make and use less energy to heat and light, there's less maintenance over its whole life, you fill it with less furniture, it's smaller in the landfill when inevitably torn down, etc.

Building a ridiculously huge concrete "eco house" is just absurd on the face of it; it's so hypocritical that it kind of blows your sensor out and you can't even measure it any more. It's sort of like making a high performance electric sports car and pretending that's "eco", it's just an absurd transparently illogical combination; oh wait...

One of the big fallacies of the eco house is the "long term payoff". There might be new building technology in 5 years that makes your house totally obsolete. Over-engineering with anything technical is almost always a mistake, because the cost (and environment cost in this case) is going down so fast.

Your house might go out of style. Houses now are not permanent, venerated monuments. They are fashion accessories. You can see by the way the eco people so happily tear down the houses from the 50's and 70's as if they were garbage. In 20 years if your house isn't fashionable, someone will buy it and tear it down. You're using lots of experimental new technology which greatly reduces the chance of your house actually lasting for the long term. Things like burying a house in the ground with a neoprene waterproofing layer makes the probability of the house actually lasting for the long term very small.

Perhaps the biggest issue is that they assume that the carbon cost of energy is constant. In fact it's going down rapidly. The whole idea of the carbon savings (for things like using massive amounts of concrete) is that the alternative (a timber house with normal insulation and more energy use) is polluting a lot through its energy use. But if its heat energy comes from solar or other clean sources, then your passive house is not a win. The technology of energy production will improve massively in the next 20-50 years, so saying your house is a win over the long (50-100 years) term is insane.

As usual in these phony arguments, they use a straw man alternative. They compare building a new $500k eco house vs. just leaving the old house alone. That's absurd. Of course if you want to say that the tear-down-and-build is more "eco" you should compare your new house vs. spending $500k on the old house or other eco purposes. What if you just left the old house and spent $100k to add insulation and solar panels and better windows? Then you could spend $400k on preserving forest land or something. A fair comparison has to be along an iso-line of constant cost, and doing the best you can per dollar in each case.

I'm sure the reality in most cases is just that people *want* a new house and are rationalizing and making up excuses why it's okay to do it. I'd like it so much better if they just said "yeah, we fucking want a new house that uses tons of concrete and we don't give a shit about the eco, but we're going to make it passive so that we can feel smug and show off to our friends".


European building vs. American.

Holy crap European building quality is ridiculously good.

In one of the episodes somebody puts softwood cladding on the house and the host is like "but that will rot in 10 years!" and the builder feels all guilty about it. (it's almost vanishingly rare to have anything but softwood cladding in America (*), and yes in fact it does rot almost immediately). (* = you might get plastic or aluminum, or these days we have various fake wood cement fiber-board options, but you would never ever use hardwood, yegads).

Granted the houses on the show are on the high end; I'm sure low end European houses are shittier. Still.

Almost every house is post-and-beam, either timber or steel frames. The timer frames are fucking oak which just blew my mind the first time I saw it. Actual fucking carpenters cutting joints. And real fucking wood. We have nothing like that. "skilled tradesman" isn't even an occupation in America anymore. All we have is "day laborer who is using a nail gun for the first time ever".

An American-style asphalt shingle roof is looked down upon as ridiculously crappy. Everything is slate or tile or metal. Their rooves last longer than our entire houses.

One funny thing I noticed is that the cost of stonemasons and proper carpenters seems to be incredibly low in the UK. There are some houses with amazing hand-done stonework and carpentry, and they cost about the same as the fucking awful modern boxes that are all prefab glass and drywall. Why in the world would you get a horrible cold cheapo-condo-looking modern box when you could have something made of natural materials cut by hand? The stone work in particular shocked me how cheap it was.

Another odd one is the widespread use of "blockwork" (concrete block walls). That's something we almost never do for homes in America, and I'm not sure why not. It's very quick and cheap, and makes a very solid wall. We associate it with prisons and prison-like schools and such, but if you put plaster over it, it's a perfectly nice wall and feels just like a stone house. I guess even blockwork is expensive compared to the ridiculously cheap American stick-framing method.

Another difference that shocked me is the "fixed price contract". Apparently in the UK you can get a builder to bid a price, and then if there are any overruns *they* have to cover it. OMG how fucking awesome is that, I would totally consider building a house if you could do that.

Oh yeah, and of course the planning regulations are insane. Necessary evil I suppose. It's why Europe is beautiful (despite heavy human modification absolutely everything) and America looks like a fucking pile of vomit anywhere it's been touched by the hand of man. (though a lot of the stuff that gets allowed on the show in protected areas is pretty awful modern crap that doesn't fit in or hide well at all, so I'm not sure the planners are really doing a great job. It seems like if you spend enough time and money they will eventually let you build an eyesore).


It's interesting to watch how people (the clients) handle the building process.

A few people get completely run over by their builder or architect, pushed into building something they don't want, and forced to eat delays and overruns and shitty quality, and that's sad to see. But it's also unforgivably pathetic of them to let it happen. YOU HAVE A FUCKING CH4 CAMERA CREW! It's the easiest time ever to make your builder be honest and hard-working. Just go confront them when the cameras are there and make them explain themselves on camera. WTF how can you be such a pussy that you don't stand up for yourself even when you have this amazing backup. But no, they'll say "oh, I don't know, what can I do about it?". You can bloody well do more than you are doing.

A few people are asshole micro-managers totally hovering over the crew all the time. The crew hate them and complain about them. But they also do seem to work harder. In this sad awful life of ours, being an annoying nag really does work great, because most people just don't want to deal with it and so will do what they have to in order to not get nagged.

Building a house is one of those situations where you can really see the difference between people who just suck it up and go with the flow "oh, I guess that's just what it costs", vs. people who are always scrapping and fighting and getting more for themselves. You can see some rich old pussy fart who doesn't fight might spend $1M on a build, and some other poor immigrant guy who knows how to deal and cajole and hustle might spend $200k on the exact same build. You can be bigger than your money or your intellect if you just fight for it.

The ones that are most impressive to me are the self-builds. It just astounds me how hard they work. And how wonderful to put 2 years or so of your life into just building one thing, that afterward you can go "I made this". Amazing, I'd love to do that. It's also the only time that I really see the people enjoying the process, and being happy afterward. (I particularly like the couple in scotland that does the gut-rehab of an old stone house all by themselves with no experience).

There are a few episodes with the classic manipulative architect. The architect-client relationship is usually semi-adversarial. Architects don't just want to make you the nice house you want, that suits you and is cheap and easy to build. They want to build something that will get them featured in a magazine; they want to build something that is cutting edge, or they have some bee in their bonnet that they want to try out. They want to use expensive and experimental methods and make you take all the risk for it. In order to get you to do that, they will lie to you about how risky and expensive it really it is. I don't necessarily begrudge the architects for that, it's what they have to do in order to get something interesting built. But it's amazing how naive and trusting some of the clients are. And it's a sort of inherently shady situation. Any time one person gets the upside (eg. the architect benefits if it goes well) and someone else gets the downside (the client has to eat the cost overrun and delays and live in the shitty house if it doesn't go well), that's a big problem for morality. You're relying solely on their ethics to treat you well, and that is an iffy thing to rely on.

9/02/2013

09-02-13 - DEET

About to go camping for a few days. Discovered that the DEET has eaten its way through the original tube it came in, through a few layers of ziplocs, and out into my tub of camping stuff where it gladly ate a hole in my thermarest. Fucking DEET !

I guess after every trip I need to take the deet out and put it in a glass jar by itself. Or in a toxic waste containment facility or some shit. It's nasty stuff. Still better than mosquitos.

old rants