Your leaking thatched hut during the restoration of a pre-Enlightenment state.


Hello, my name is Judas Gutenberg and this is my blaag (pronounced as you would the vomit noise "hyroop-bleuach").


decay & ruin
Biosphere II
dead malls
Irving housing

got that wrong

appropriate tech
Arduino μcontrollers
Backwoods Home
Fractal antenna

fun social media stuff

(nobody does!)

Like my brownhouse:
   DHTML, plumbing, and exploratory carpentry
Thursday, July 6 2006
This morning while walking the dogs I created a short length of new trail off the Stick Trail beginning about a quarter mile south of the house. The new trail, which I'm calling the Fossil Gulch Trail goes westward from there up a steep gulch (where I've found fossils) to the swampy plateau above, where local drainage is still being sorted out between that gulch and the Chamomile "River." The Chamomile Headwaters Trail (an old logging road and major drainage collector during rains) comes down from the uplands to the south on this plateau and the new Fossil Gulch Trail connects with it. It's total length is only about a tenth of a mile long, but it enables me to make much shorter loops when I need to walk the dogs but am pressed for time.

What follows is an arcane description of a DHTML problem for the benefit of those who find this page using Google. Everyone else is permitted to skip the next several paragraphs.

While the Fossil Gulch and Chamomile River continue to sort out the drainage of a nearby plateau, I spent much of the day trying to sort out an intractable problem with my new DHTML/PHP MySQL table constructor tool. This tool allows an administrator to create, move, and delete SQL columns using DHTML, only causing the page to reload when the completed table definition is finished and saved. It works by keeping a dummy "column builder" (an HTML table row containing an INPUT for the column name, a pulldown menu for the column type, and an INPUT for the column size) hidden away and then unhiding it and cloning it into the Document-Object Model (DOM) as needed. When columns are inserted, the next one down is cloned and its default values blanked out. When columns are moved, the contents of two neighbors are swapped while the actual names of the INPUTs are kept the same (so they can be read in order when the form is later processed). This process involves a headache-inducing complex of detail-oriented accounting, using functions with names like TRRenumberHenceforth, swapfield, TRselect, and TRaction. It was all working perfectly in Firefox, but today when I went to see how it worked in Internet Explorer I was appalled. It didn't work at all. I could move a column up one position, but then it would stick and refuse to budge. The only way to determine what was going on was to build a javascript debugger function that could dump the contents of the DOM (the HTML in the computer's memory, not the "source" pulled off the server, since in DHTML that is only a starting point). That function, for the interested, looks like so:

function domdumpwindow()

dump ="","_new","menubar=yes,height=800,width=800,scrollbars=yes");
dump.document.write("<plaintext>" + whatwewanttosee.innerHTML);

In looking at these DOM dumps, I came to a maddening realization: Internet Explorer does not dynamically rename form elements. It utterly refuses to change an element's name in any way that DHTML can subsequently recognize. I did a Google search and found that this was a known issue about Internet Explorer (though it seems to be one that few people ever bump up against). It now seemed my plan to keep careful account of new and swapped SQL column names using names of form elements in DHTML was a lost cause. I wondered if I should just accept defeat and come to terms with the emerging reality that most of the great features of my new table editor would only be functional in Firefox.

In despair (I kid you not), I turned my attention to household issues. I discovered a slow leak in one of my soldered joints down in the basement - it was in a line supplying antifreeze to the boiler and heat exchanger loops. A faint "drip-drip-drip" was the only alarm this leak had made, since the actual fluid was immediately vanishing into the crack between the slab and wall of the basement. While I was dealing with this leak, I had a few other things I wanted to tackle, so I made a full project out of fixing the joint. I also drained the boiler so I could replace a decrepit old stop valve and also add a T fitting so I can eventually run an line from the boiler loop up to the solar loop. I'm going to add a modified pressure-relief valve here to carry away overpressure from the boiler and put it in the solar loop before it rises to a level where it needs to be blown through the safety-relief valve. (For some reason the boiler steals pressure from the solar loop until it reaches an overpressure condition.)
While I was puttering around, I also saw fit to remove a rectangle of drywall from above the second guest room's window. I wanted to look for damage caused by the recently-discovered leakage problem beneath the laundry room door (which is directly above). Once I had the drywall off, the first thing I noticed was that the space behind it contained no insulation at all; the five and half inch deep space was half-filled with a piece of four by ten lumber acting as a header for the window below. But in the two and half inches of empty space in front of it were several interesting organic features. They were lobed like livers and comprised of loosely matted-together grains of sawdust. To the touch they felt waxy. They had formed beneath and beside an extensively damaged section of the header lumber. Evidently these large lobed forms were masses of frass, excreted by whatever had been living in and eating that timber, a lifestyle made possible by water intrusion beneath the laundry room door above.
I removed the frass and looked at the damage. Something had eaten tunnels through the wood parallel to the grain, leaving a fasces of narrow stick-like walls between the tunnels. There had been such extensive tunneling that very little wood remained in center of the damage, though what did remain seemed very hard and very dry. The damaged part of the timber had roughly the size and profile of a football. Looking at it carefully, though, I realized that the damage had been arrested years ago. I found a few corpses of the last residents of the tunnels, but they all belonged to a species of solitary wasp, an opportunistic species that commandeers tunnels made by others. My guess is that the damage dates back to the period before I installed the gutter above the laundry room door. In the bad old days roof runoff was dumped forcefully on the east deck, directly in front of that door, and I'm sure a respectable amount managed to find its way beneath that sill pan to soften up everything below.

For linking purposes this article's URL is:

previous | next