Saturday, December 16, 2006

Point Pelee, Canada's most southern mainland point

We visited Anne's sister and brother-in-law in Kingsville, Ontario last weekend. On Monday we made a short trip to Point Pelee National Park, which just so happens to contain Canada's most southern mainland point, at something like 41.90 degrees north, about the same as Barcelona, Spain and Rome, Italy.

The park consists of mostly wetlands, which I
cannot help to find nothing but a euphemism for swamp. There is also some forest cover, containing some rare trees (for Canada, that is). It is a birder's heaven as the north shore of Lake Erie is a migratory path for many bird species.

The weather was warm for this time of year, the park deserted. Lake Erie was quiet, with just a bit of sunlight peaking through the clouds here and there. It always evokes a feeling of desolated beauty in me when it is like this.

Thursday, December 14, 2006

Christmas Sign...must be a sign of Christmas

Years ago, around 1990-1991, I wanted to have the fanciest Christmas ornament on the block. I must've have gotten that idea after watching Chevy Chase's Christmas vacation. Anyway, I designed a sign made up of probably 250 to 300 leds. Power consumption between 11 and 27 watts.

It writes 'Merry Christmas' out by starting on the left and continuing to the right. When the last LED is lit, the whole thing resets itself, all the LEDs go out and the pattern is repeated, ad nauseum. There are some different patterns available though, twinkle, blocks of LEDs switch on and off, as well as different speeds can be had.

I'm afraid I was responsible for the entire design, including the clock and all other circuitry. I guess I always did like tinkering with resistors, diodes and the like. "Ummers and puffers" as we used to call them. The heart of the clock circuit is the ubiquitous 555 timer, the devices that light up the LEDs are 74LS164N 8 bit shift registers. You can think of it as a bucket brigade. The LEDs are the cheapest kind available.

The overall size is about 1 meter by .25 meters. After designing the circuit boards, I had them printed in a silk screening place, where they normally do logos on T shirts, so this was quite a different job for them. Then I etched them at home myself and then drilled the holes for all the components using a drill stand and a portable electric drill. This was tricky, as the holes are very small and the bits break easily.

The case was made out of plexiglass (or Lexan) .

We have had this in and around our house during the Christmas season for the last fifteen years or so. However, this year when I got it out, it didn't work! Having totally forgotten how this thing even worked, I had to tinker with it to get it to go. A cold solder joint was the problem. Found it by pure luck. I did manage to blow 2 power supplies though, while testing. Luckily, I had a third, which was a DC one, so I had to bypass my original AC design.

Now I'm confident it will likely work for another fifteen years.....

Sorry about the crappy GIF, but I do have a life.

Thursday, November 30, 2006

Notebook as energy saver?

I've been hard at it, the last five weeks or so, doing a rush job coding a web application. I initially had intentions of doing this coding on my desktop computer downstairs. Somehow, though, I kept putting that idea off, because the couch is so damn comfortable..... It ends up I did the whole thing on my notebook, a 2 year old Dell Inspiron 1150 with a sticky keyboard.

Last year, I bought this little gadget (Kill-A-Watt meter) that can track energy consumption for individual devices, e.g. a stereo, a TV, a computer. I bought it initially to prove to myself that the freezer in the garage was an energy hog and that it had to go. Wrong....., it only consumed a kilowatt a day. So the freezer is still there. I also had it plugged into my desktop computer for a while and that device seemed to consume around 120 W an hour. If you think that the power supply on it is rated at 480W, that doesn't seem too bad. After that, I forgot about the gadget for a while. It was gathering dust until I decided last week to plug it in between my notebook computer and the wall outlet.

Turns out that the notebook is a real enery mizer as compared to a desktop computer. First off, I never turn off the notebook, though it does go into hibernation after half an hour. While up, it runs a slew of applications such as Visual FoxPro, SQL Server Express, Visual Web Developer Express. Still in all, while running, it only consumes around 22 wats. It's funny to look at the meter while you're opening an application: it shoots up to 40 or 50 watts for a few seconds and then fall back to 22 or so.

On average, it consumes 11 watts an hour for each of the 130 hours or so that it has been plugged in. Not bad eh?

Just think of the phenomenal energy savings that could be had by replacing all desktops with notebooks....

By the way, just for fun I plugged in my USB light to see what it consumes. Answer: 1 watt....too bad it's bloody useless.

 Posted by Picasa

Thursday, October 12, 2006

First Snow!

Hard to believe, October 12th and it's snowing! The Impatiens and Cala lilies are still in bloom, but that failed to stop the snow from falling. It didn't last long, but there it was ... a harbinger of things to come.

Wednesday, September 06, 2006

Property Bar location using GPS (and Visual FoxPro) Part II

Ok, so in the last post I threw out some generalities regarding the project. This time we'll try and get down to some specifics.

I tend to attack projects from a proof-of-concept point of view. First, I'll try and get a rudimentary version up and running of whatever idea I'm working on. That keeps me interested. Once that has been successfully accomplished, that will motivate me to round it off with user interface etc, all the boring stuff that I've done for too many years now. That's not considered good practice, but hey, I'm the boss around here so I offer no apologies.

And so it went in this case.

Cost is always primary in my mind: it is a sport to keep software costs down. I purchased a Holux USB GPS module on eBay last year, which included a purported legal version of Microsoft Streets and Trips 2005. (I should point out that, even though this is a USB device for a hardware point of view, it presents itself as a serial port device from a software point of view.) The GPS works fine with MS S & T, but I was hoping that it would also include an ActiveX control, which I could then use to program the GPS from my own applications. However, it didn't, so I hunted around for other GPS serial port ActiveX controls on the web. There's quite a number out there, but the price is somewhat steep. So I decided to see if I could use the serial port control included with most (or all) versions of Windows, MSComm. After the usual amount of trail-and-error and some research on the web, I got it to work with the GPS. The GPS reports its status every second when it rattles off a number of phrases all of which start with a $ sign. Of the 3 or 4 phrases the Holux offers, I only used the $GPGGA one, which dissects as follows:

*!* Where:
*!* GGA Global Positioning System Fix Data
*!* 123519 Fix taken at 12:35:19 UTC
*!* 4807.038,N Latitude 48 deg 07.038' N
*!* 01131.000,E Longitude 11 deg 31.000' E
*!* 1 Fix quality: 0 = invalid
*!* 1 = GPS fix (SPS)
*!* 2 = DGPS fix
*!* 3 = PPS fix
*!* 4 = Real Time Kinematic
*!* 5 = Float RTK
*!* 6 = estimated (dead reckoning) (2.3 feature)
*!* 7 = Manual input mode
*!* 8 = Simulation mode
*!* 08 Number of satellites being tracked
*!* 0.9 Horizontal dilution of position
*!* 545.4,M Altitude, Meters, above mean sea level
*!* 46.9,M Height of geoid (mean sea level) above WGS84
*!* ellipsoid
*!* (empty field) time in seconds since last DGPS update
*!* (empty field) DGPS station ID number
*!* *47 the checksum data, always begins with *

Of course, I didn't figure this out on my own, but got most of it from

The MSComm control has a property RThreshold (for receive threshold). I set this at 2. By default, it is set at 0. When set at 2, it makes the control receive 2 characters before it fires the OnComm event. If it is set at 0, the OnComm event does not fire at all. The OnComm event is really the heart of the MSComm control, this is where the action takes place. Simply put, all the characters are received and the string is parsed for the values contained in it. These values are then logged to a database table, and depending on what action we are currently executing, a method is called to execute that action.

The next major item is the graphing software. As I said in my previous post, I used NTGraph for this, another ActiveX control. To do plotting, simply feed 2 values to the PlotXY method and as long as they fit in the range of the graph (which can be dynamically altered), it will plot the values. If it is outside the range, you can change the values of the range, and all previously plotted points will automatically be replotted on their new spots on the graph.

The third major item is the computer voice. Now this is where it gets really easy. The voice is done using an ActiveX control included in all Windows version. I simply instatiated it in the init of my form, as such


then all you need to do to have it speak is the following:

thisform.oSapi.Speak("Keith is one helluva guy")

Of course, I didn't figure this out on my own, Calvin Hsia showed me the way.

Ok, that's it for today, before information overload sets in.

Tuesday, August 29, 2006

Property Bar location using GPS (and Visual FoxPro) Part I

I worked on this project back in the spring of this year (2006). What I was trying to do was find property bars on our property using GPS. When you're out in the forest, it is very tough to keep yourself oriented properly. Looking for a bar that way is like looking for a needle in a haystack. Your best chance to find one is to trip over it.

The idea to use GPS in aiding the search sprung from other projects where I used a GPS to do location logging, plus the fact that there are supposed to be some property bars in our forest which have yet to be found. Now, knowing exactly where our property line is is not that big a deal, just curiosity really, but still. There's an area, particularly in the southwest corner, where I'd like a bit more clarity as to who owns what. It seems funny that this whole area was surveyed about 8 years ago, but now not even 1 bar is to be found anywhere...looks like somebody would rather not have them found.

Anyway, the general idea is as follows:

- have a property plan
- have a computer program where you can enter the azimuths of the various lines that constitute the property limits as well as the distances between the various points where these lines intersect.
- have the computer plot this plan so that the plot is oriented properly with respect to true north.
- take a GPS and have the computer track and log the information received.
- program the computer so it can establish a latitude/longitude position for anyone of the points of intersection of the plan (a 'bench mark' position)
- program the computer so it, given the latitude/longitude position of anyone of these points, can calculate the lat/long of all the other points on the property line.
- program the computer, so it can plot the current position of the GPS on the above plan.
- program the computer, so it can 'home' in on a certain point, with a computer voice telling you in what direction the to-be-found point is and how far off we are.
- program the computer, so it can provide an average plot of the last number of GPS readings

First off: what is azimuth? This is the direction of a line, measured clockwise around the observer's horizon from north. So an object due north has an azimuth of 0°, one due east 90°, south 180° and west 270°. There, that was easy.

You can tell there was a fair bit of programming involved. The GPS logging stuff I had already done for my previous efforts, so that was re-used. To display the various plots, I used a free ActiveX control called NTGraph. Since we are now looking at Microsoft Vista, the name NTGraph will be more than enough to scare off some people. Not me. I've used it for a number of projects and, although a bit quirky at times, it is certainly very stable and very flexible.

Surprisingly enough, to calculate the lat/long of Point B, given the distance and azimuth to it from Point A, is fairly complex. A fellow by the name of Victor Fraenckel wrote a Visual Basic program to do this. His program was based on T. Vincenty's article "Direct and Inverse Solutions on the Ellipsoid with Application of Nested Equations" as published in Survey Review, April1975. In this article, Mr. Vincenty stated that "In selection a formula for the solution of geodesics it is of primary importance to consider the length of the program, that is the amount of core it will occupy in the computer along with trigonomic and other required functions." Obviously, the term "software bloat" was still to be invented.

Anyway, I rewrote Vic's VB program into a Visual FoxPro library. Then I added the interface around the various parts. But more on that soon....

Sunday, August 27, 2006

Just an observation...

...but why is it, that when the price of gas drops by more than 10 cents (to around $ 0.94 a litre), virtually overnight, no one says anything about this? No mention of this in the newspaper, on radio or TV? No one complimenting the government or the oil companies for doing such an efficient job? Strange. Just an observation though, I didn't mean to criticize anyone.

Sunday, August 20, 2006

Finishing up the bedroom basement

Back on June 11th, I did an analysis of basement subfloor options and then decided to go with a product called OvrX. OvrX comes in 2 x 2 feet tiles. The product itself is a 1/2" Styrofoam layer mechanically bonded to 5/8" OSB. The styrofoam has grooves cut (or ground might be a better term) on the bottom, to allow for air and moisture to pass through. Total thickness is 1 1/8" or 29mm.

So off to the local lumber yard I went. I ordered the OvrX and lo and behold, they had it in stock. I was able to load all 43 tiles (i.e 172 square feet) into my little Echo, so I guess you could call that an advantage.

Now, when I got futher into checking out the condition of the walls and the insulation contained within them, I just made an on the spot decision to tear it all out. Like Mike Holmes would say: "It's all gotta come down!". On the outside wall, there was about 1" of beaded styrofoam, but only at the upper 3 feet, the rest had nothing. This was overlaid with, count them, 2, not 1, layers of drywall. The drywall was held up by 2" x 2" strapping. The beaded styrofoam sat between this, with lots of air gaps. In addition, some of the inside walls had mould on the bottom of the drywall. Not a good situation. The fun part about ripping out drywall is that it goes very quickly. The drudgery part is cleaning it all up. Next came the strapping. Down to clear bare concrete walls.

I decided to do the outside walls with extruded polystyrene, commonly called styrofoam pink. These sheets I applied straight onto the concrete wall. That way, you have an continuous, uninterrupted insulation barrier. No gaps, no nothing. If you cut the sheets just a fraction too wide, they'll stay in place because of the friction fit. No glue or anything necessary. Somewhere I had read that you should then apply 1 x 3 strapping every 2 feet and attach your drywall to this. I followed a slightly different technique by using plywood instead. I went to the lumber yard, bought a sheet of half inch plywood, then asked them to cut it into 12 strips of 3 7/8, which they were happy to do of course at $ 0.50 a cut. Then I simply applied these strips to the wall instead of the strapping. The reason I did this is because the 1 x 3 strapping tends to be very cheap spruce, and when pierced by drywall nails, it can split very easily. When this happens, its holding power is obviously severely diminished. This will not happen with the plywood. By the way, I attached the plywood strips to the wall by first drilling a hole through the plywood, the styrofoam and then finally into the concrete, making sure that the total depth of the hole was a minimum of 3 1/4". Then I used 3 1/4" Tapcon screws to do the final attachment. Overall, the wall operation (i.e.styrofoam and plywood strips) went fairly smoothly. The pink styrofoam is easy to work with. It comes in shiplap, and to accommodate electrical cables, I simply cut off the shiplap from one piece and routed the cable through the channel that became available because the shiplap was no longer there.

Since I used 1 1/2 styrofoam, the total insulation value of the outside wall from top to bottom is R 7.5. Not quite code, but a heck of a lot better than before.

Next, I applied the OvrX. Hmm, wish I could say this was a snap to install. Unfortunately, it wasn't. I had one heck of a time keeping the tiles aligned. The tiles are tongue-and-groove and I suppose that it doesn't take much for OSB chips to clog the tongue, forcing you to bang away at the other end of the to-be-inserted tile. Too much banging puts the previously laid tiles out of alignment and so round and round we go.

In hindsight, what I would have done is attach the first couple of tiles to the floor with Tapcon screws. That way they would be kept nice and steady and theoretically wouldn't budge easily. So I struggled at floor level, tapping and banging and cursing, all at the same time. I took me about 4 hours to do a 160 square feet floor, not exactly record speed, in fact very slow. When almost done, I discovered that using a piece of 2 x 2 and a sledge hammer, I could lay the tile while standing, which made for quite an improvement in my working conditions.

It is also very hard to get the last row to fit in properly, since you have no 'banging' room. I used a tool for applying laminate flooring to get at least some leverage, but still, it was a struggle. In the end, I decided to drive some Tapcon screws through some of the pieces where the seams weren't all that close together. This is something I rather would not have done.

I had run a temperature check on that room, prior to laying the OvrX tiles. Over a 24 hour period, the temperature difference between ceiling and floor temperatures was close to 4 degrees. After the tiles were laid, this difference went down to around 2 degrees. Once the laminate floor went in, it further decreased to 1.5 degrees.

Next on the agenda was the drywall. I wanted to minimize the amount of joints required and so we used 12' sheets for most of this. Ronny helping me out with this made it all that much easier. Taping and mudding went fairly easily, along with applying primer paint. I don't know about the finish paint, as the design for that and the application of it was done by Amanda!

The laminate floor went in without a hitch. Then I hung the doors (huge pain, as everything is crooked!) and applied the trim, caulking and painting. Now it's done. Almost. The brown cabinet hiding the electrical panel still needs to be painted white. But then, you should always leave something to look forward to, shouldn't you?

Tuesday, August 15, 2006

Weather not fit for any umbrella

Mid summer was not a good period for our lawn furniture. Let me explain why.

- On July 2, a short, but violent mid afternoon thunderstorm managed to create havoc with the above named furniture. Specifically, the backyard table, complete with umbrella, the lawn chairs, the single pole umbrella as well as Anne's new installed 'book case' with glass shelves were all blown over. The single pole umbrella had 2 70 kg blocks of concrete holding it down, to no avail. You can see one of the blocks thrown over the side of the deck by the force of the wind. We were able to repair the umbrella by attaching of piece of aluminum to the only rib that was broken. We placed the umbrella back on the deck and, as further reinforcement, added a couple of lag bolts screwed into the deck to hold it down more. We cleaned up the rest of the mess. Some damage was done, but not too bad.

- July 15th was a bit windy, but otherwise a beautiful summer's day. Ronny and I were installing a cabinet in the shed and Anne was watering the flowers on the deck. All of a sudden we hear her scream. We look over and the next thing you know, we see umbrellas flying everywhere. What I suspect happened is that this was a dust devil, a mini tornado, minus the dust, so invisible otherwise. It did just a fine job on the single pole umbrella: the concrete blocks and the lag bolts didn't budge this time, but something had to give so it was the top pivot point, where the umbrella is fastened to the post, that gave way. It was twisted at about a 45 degree angle, making the entire umbrella useless. Solution: demolish it. Ronny got to use his brand new hack saw on the aluminum posts. The table umbrella magically survived again.

- July 20th. Well, we needed shade on the deck, 'cause otherwise it is hotter than blazes back there. I made the mistake of reading the Canadian Tire flyer, in which I spotted a four poster 'sun shelter' for only $ 50. After some humming and hawing in the store, I decided to buy one. Another mistake. After we got it home, we noticed how extremely flimsy it was. We got it up allright, with a little bit of improvisation. The shade was great while it lasted (the shelter, that is). On that fateful July 20th, the rains came. Well, that's a bit overdramatic. Let's just say we had a pretty good shower. Now, one of the key properties of water is is that it is fairly heavy. It started to collect in one of the pockets of the cover of the sun shelter. Once enough water collected, it just plain collapsed. Shoulda known. It was a sun shelter not a rain shelter. Back to Canadian Tire to get my money back.

- August 2nd. So far we had blamed all our troubles on Ronny, my nephew from the Netherlands. After all, all this began the day after he arrived. However, he left on the 22nd of July and on August 2nd, we were once again hit by a terrific thunderstorm, in the middle of the night (1:30 to be exact). It woke me up, and it seemed to come on so fast that I told Anne: "Into the basement!" So we scurried on down, into the storage rooom, to wait this one out. Once things settled down a bit, we went upstairs and peeked outside, to see the table + umbrella blown over again (the umbrella was down), along with chairs and, once again, Anne's bookshelf with the last of the glass shelves now broken as well. We did a closer inspection at first light and noticed that the umbrella, which had landed against the kitchen window, had produced a hairline crack in that window. Umbrella busted for good. Solution: junk it.

Now, this last thunderstorm did quite a trick on trees in the neighborhood as well: there are about 10 trees down in our forest, with the path completely blocked. It took the top out of the very tall maple in my neighbour's yard, which, of course, had to land in our front yard, so now I'm stuck with it.

More about the storm here and here. Surprisingly, we never lost our hydro.

This storm was the end of five days of 35+ weather. Some days produced humidex readings of 46! Talk about your wet blanket!Now we've been down to 25+ with fairly low humidity readings, just perfect!

Monday, June 19, 2006

Crop Duster

Living in the country and in this part of the country means that you have to put up with certain nuisances city dwellers can only dream of.

One of those is crop dusting. On a regular basis in late spring/early summer, the local crop duster will deliver his poisonous load to farm fields surrounding our house.

Now, to be sure, he always chooses nights when the winds are totally calm, so very little, if any, drifts over our way, so we only cough our lungs out for a couple of hours.

Besides that though, there is the plane buzzing overhead, making you think you were caught up in a remake of the Darryl F. Zanuck movie 'The Battle of Britain'. The engine whines, howls, screams, but fortunately so far, hasn't coughed, sputtered, nor died. Fortunately for us, because we'd be dead too.

Tonite, he was at it again, so I went out and shot some digital film. In this particular venture, he was dusting a potato field, just west of us.
Notice the hydro wires. Do planes and that type of equipment get along?

Average height over the field is probably 10 feet or so. At the very last second, literally, he'll pull up and just barely clear the tree tops before making a hard turn and coming in again to do the next pass. Why fight your way through traffic to see the Labour Day Air Show, when you can see it all in your backyard? Sheesh....

Wednesday, June 14, 2006

Toyota Echo Gas Mileage

Sure it's ugly. I agree. But for gas mileage, you can't beat it. The Toyota Echo that is.

Too often when 'gas mileage' gets mentioned in a conversation, incredible numbers get thrown around, usually by people driving monstrous gas guzzlers. "I get 40 miles to the gallon in my Cadillac Escalade." Another good one is: "This minivan of mine, I easily get 600 km out of a tank." Well, yeah, too bad your tank can hold 50 gallons, oops, 225 litres.

And so, to set the record straight, to throw out the gauntlet, here are the stats for the Echo. It was born in the year 2000, has standard transmission, and lacks airconditioning (unless you wanna count the open windows). Engine size is 1.5 litres.

On my last tank, which started at km 7435 and lasted to km 8143, it consumed 35.51 l of gasoline, standard unleaded (octane level 87). That's 708 km, of mostly highway driving, but some stop-and-go as well.

Here we go with the calculations:

First, the official Canadian version: 35.51/(708/100) = 5.0155 litres per 100 km
Next, the old Canadian version 440 miles/7.81 Imperial gallons = 56.34 miles per Imp gallon. Woohoo!
For our US friends 440 miles/9.38 US gallons = 46.91 miles per US gallon.
Now the old European way (don't know how they currently do it over there): 708/35.51 = 19.94 km per litre.

Not bad eh? With gas mileage like that, who needs hybrids?

My first car, a 1968 Dodge Monaco, with an 8 cylinder 383 cubic inch engine (that's 6.3 litres folks) got something like 18 miles to the gallon. Thank God they don't make 'em like that anymore!

Update 2006/06/22: On my next tank, I got 56.5 miles per (Imperial) gallon or 4.9905 litres per 100 km! I am below the magic 5.0 level!

Sunday, June 11, 2006

Basement subfloor decisions...

Recently, our basement got flooded. That in itself is a story and a half, but I won't go into that. Suffice it to say that the water just managed to get over the edge of the sump pump well and then wicked through all the carpeting throughout the basement. So all the carpeting had to be removed (it was a load a crap anyway) and we are now back down the the bare concrete floor.

That floor is in remarkably good shape. It is even, with only some hairline cracks here and there. No spalling or delineation anywhere, so that's good. However, it is cold. Very cold. Even this late in spring, the floor temperature hovers around 14 °C. So that's not good.

Now, as we all know, hot air rises and cold air sinks, so theoretically, that cold air doesn't readily mix with the warmer air at higher elevations. Therefore, the heat loss through the floor is a lot less than if, for instance, the ceiling were at 14 °C . Nonetheless, some loss must occur. Furthermore, especially this time of year, warm, moist air from outside enters the house, gets into the basement where it cools, causing the humidity to skyrocket down there. This, in turn, forces us to run the dehumidifier, which is noisy, hard on the hydro bill and needs periodic maintenance.

So I started looking for a solution to these problems. Rather than just taking a wild guess (or doing some research and doing a best guess), I decided to get all scientific, by setting up tests with different materials and options to insulate the basement floor.

Design criteria:
- warmer basement floor
- lower humidity level
- ease of installation of the product
- cost
- small loss of headroom

Products to test

- Dricore

Dricore ( ) consists of half an inch OSB glued onto a polyethylene sheet, from which cleats protrude, allowing air to circulate under the floor, to remove humidity. Total thickness is 7/8" or 22 mm. It comes in squares of 2' x 2' (61 x 61 cm), which have a tongue and groove. The tile is put down and the next one is tapped into the groove to complete the assembly.

The manufacture claims an insulation value of R-2
Cost: $ 6.99 per tile

- OvrX
OvrX ( ) is 1/2" Styrofoam mechanically bonded to 5/8" OSB. The styrofoam has grooves cut (or ground might be a better term) on the bottom, to allow for air and moisture to pass through. Total thickness is 1 1/8" or 29mm.
It, too, comes in squares of 2' x 2' (61 x 61 cm), which have a tongue and groove. As above, assembly is through the tongue and groove system, no screws are driven into the floor.

The manufacture claims an insulation value of R-3.2
Cost: $ 7.99 per tile

- 1" (25 mm) Styrofoam sheets (2' x 8' or 61 x 244 cm) overlayed with 4' x 8' ( 122 x 244 cm) sheets of OSB or plywood. Pilots holes are then drilled through the plywood, the styrofoam into the concrete floor and Tapcon screws are then driven into these holes. No picture for this, as I am sure you can well imagine what this looks like. Styrofoam would be R-5, with OSB .2 for a total of R-5.2
Cost: $ 13.11 per sheet of Styrofoam and $20.00 for OSB.

First, I wanted to test for the insulation values. So I set up a test bed, consisting of the material to be tested, the bottom portion of a picnic cooler, a 27 W soldering iron and a temperature monitor. I used the soldering iron, to get a nice steady heat source, which would be the same for all the tests. The temperature monitor comes from It is a 1 wire device, which hooks up to the serial port on a computer, and reports the temperature every time the computer program requests it. I wrote a Visual FoxPro application that makes a request every 30 seconds and then logs the result into a database table.

Here is the setup, soldering iron on the left, temperature monitor on the right, spaced about 1', I mean 30 cm apart. In this case, they are positioned on top of the OvrX material.

Here's the complete setup, with the cooler positioned over top to minimize the influence of the ambient temperature. You can see the Dricore tile on edge on the left and a leftover piece of 2" (51mm) Styrofoam on the right. You could probably argue and say that, hey, there was an air gap caused by the wires forcing the rim of the cooler up, but my answer is that that applied evenly to all the tests, so the net effect was zero.

Next I ran the test for all the materials. Note that I only had a 2" (51 mm) piece of Styrofoam, since I had this left over and I was too cheap to buy a 1" piece. Basically what I did was, I put the material to be tested on the floor, put the soldering iron on it along with the temperature monitor, about 30 cm apart. I then put the cooler upside down over top and plugged in the soldering iron and started the monitoring and logging process. Once I saw that the maximum temperature had been reached (i.e. the temperature wasn't going up anymore), I unplugged the soldering iron and waited for the whole thing to cool down, still continuously logging.

I repeated this four times. Once for each of the materials tested and once just on the bare concrete floor. Then, I did some data manipulations and graphed the results using Open Office Calc ( ) Basically, Open Office is a free replacement for Microsoft Office.
The graphing turned out to be a huge pain in the neck, it would have been better to use my trusty old Graph NT ActiveX in Visual FoxPro, but hey it's done now, so who cares.

Here's the graph:

The 2" Styrofoam itself manages to drive the temperature all the way up to 53 degrees, whereas the bare concrete floor only makes it to 24 degrees. Quite a difference. The styrofoam backed OvrX makes it to 41 degrees, beating out Dricore, which gets up to 36 degrees.



- OvrX scores significantly better than Dricore. A 1" piece of Styrofoam would obviously be best.

Cost (in Canadian dollars)

According to the manufacturer's web site, I need 44 tiles for both Dricore or OvrX

- Dricore: 44 x $ 6.99 = $ 307.56
- OvrX: 44 x $ 7.99 = $ 351.56
- 1" Styrofoam/1/2"OSB = (11 x $13.11) + (5 x $20) = $ 244.21


- Dricore and OvrX should be equal to each other here. Both should beat the combination of Styrofoam/OSB sheets handily. Handling large sheets of OSB over top fragile exposed Styrofoam, then drilling holes through all that into the concrete and driving screews does not exactly appeal to me.

Loss of Headroom

Dricore comes out best here at 22 mm (7/8"). Ovrx is second at 29 mm (1 1/8"). Styrofoam/OSB last at a whopping 1 1/2" or 38mm.


OvrX beats out Dricore in terms of insulation. OvrX also beats out the Styrofoam/OSB combination due to ease of installation. The cost is higher, but my blood pressure has got to be worth something. The difference in headroom between Dricore and OvrX isn't significant enough to make a difference. So that's it! On to the ordering stage.

Tomorrow, I'll install temperature monitoring in the room at eye level as well as floor level. Then we can do a before and after installation comparison, and see what difference there is.

Saturday, May 20, 2006

Google Sketchup

Google has done it again. On March 14, they bought up a small startup software company called @Last Software. This company produced Sketchup, a 3D modelling tool and sold it for $495.00 per copy. On April 26, Google released it to the world...for free. I should say that you can still buy a professional version of Sketchup, but for the average Jill or Joe, the free version should do nicely.

Be is very addictive. The easiest way to get started after you
download your copy (around 20Mb) is to follow the quick video tutorials offered on the Google Sketchup web site.

We're planning an addition to the house to be built sometime this year. Basically, a 1 room extension, dimensions 14' x 20' (or 4.6m x 6.5m). So I got started, drawing this in Sketchup, just to get an idea what it might look like.

So far I'm up to version 13. Whether or not you can do actual final construction drawings using this, I don't know, the jury is still out on that. It might just be too finicky.

The neat thing is that you can drag the cursor all around and rotate your drawing every which way, see things from the top, the bottom, sides, zoom in for very close detail.

After you download and install Sketchup, you can download my
drawing as well. Amazingly enough, the whole drawing only takes up something like a 130 k.

Monday, May 08, 2006

Google Planimeter and Rain

Huh?? First of all, what's a planimeter? A planimeter is a device which allows surveyors, cartographers and other people with weird interests to quickly compute the area bounded by a number of points by setting the counter on the device to zero, then dragging one arm of the device along the outline of the area while keeing the other arm stationary. Once you come back to the original point, i.e. you complete the circle or loop, you can read the approximate area off the dial. Now, mind you, it's quick and dirty: I wouldn't use it to calculate the amount of concrete in a complicated structural component, as you're liable to have a whole lotta concrete left over. (Quick, where's the nearest pothole?). While working for MTO in the seventies, we used the planimeter extensively to compute monthly estimates on road contracts.

In doing research for converting Latitude and Longitude to UTM, I came across Jeff Poskanzer's web site ( While perusing his site, I noticed one item that piqued my interest: Google planimeter. It allows you to calculate the area for either large or small areas and anything in between, with a good degree of accuracy! How it's done, I don't know, but it sure is interesting. In short, it shows you a Google Map, you place points on it by clicking your mouse and when you think you've got enough accuracy, you read the total area displayed just below the map. Way cool!

So, there was a massive rainstorm in the US on April 29th and 30th (2006). From I copied the map showing the average rainfall expected for the area involved. Then, I used the Google Planimeter involved to compute the total area. As you can see, the area measured 1.292e+6 km2, which equals 1.292 million square kilometers (I only measured the 2 inch rainfall area.) 2 inches equals 5 cm. To calculate the total amount of rain:

1,292,000,000,000 x .05 = 64,600,000,000 cubic meters. That's 64 billion 600 million!

From, I got the actual situation as of about 7:30 am April 29th.

Saturday, April 22, 2006

Can Keith come out and play...?

Sitting down at my computer in the basement, I heard a rustle in the leaves collected in the window well. This drew my curiosity, as it drew his. The stare-off was a draw: he went his way and I went mine, though not until after I had rattled off some shots on the 20D.

Spring has been very mild this year, and everything is way ahead of normal. I already saw some fruit trees in bloom. The birds, well they do what comes naturally this time of year. They're all lovy-dovy. Just check out these mourning doves who where carrying on (and all now) in the crab apple tree up front.

The hours around dawn and dusk are what photographers call the magic hour, since that's when the light plays tricks on our eyes with its softness and long shadows. At that time, I love to take a walk to deep in the back yard, and then just stand there, looking back. Usually this time of year there is little wind then, so everything is so still and quiet, except for the cardinals singing their majestic song. Spine tingling/bone chilling. Here's the shot from way back there. I tried to record the cardinals' song, but I'm going to have to run out to Radio Shack to git me a microphone pre-amp, as it just wasn't loud enough. You really do need to see the larger version of this shot to even remotely get an idea as to what I'm talking about.

Then I took a walk in the forest, and lo and behold, I saw a trillium in bloom! In April! Most of our trilliums are red, white ones are somewhat rare around here for whatever reason.

On the way back out from taking this picture, I almost tripped over a rusted-out-long-ago-abandoned oil filter. Damn!

Thursday, April 13, 2006

Now I'm good 'n mad...

... because this freakin' male red bellied woodpecker keeps visiting the bird feeder and I just cannot get a decent shot of him. This is about the best I could do today, but I'll get him, I'll get him in the end, oh yes I will (name that tune?)

Today's White Thursday, but I presume this doesn't mean a whole heck of a lot to too many people out there. To me, it conjures up images of being liberated from school for 2 weeks (Easter vacation), daffodils in bloom, selling cheese to fat Germans driving mid sixties Volkswagen beetles, eating hard boiled eggs (and lots of them).

The odd year White Thursday coincides with my birthday. And so it was in 1959. I remember getting a soccer ball as the main present. Actually, calling it a soccer ball is a bit of an exaggeration, since it was a cheap plastic ball, oblong to boot (pun intended). It also sprung a leak about a week after I got it. Lo and behold, it was replaced with a better version! Woohoo!

Still in all, happy memories. Or should I say bittersweet?

Birthday Girl

For those of you not in the know, Amaryn celebrated her first birthday last week (April 6th to be exact), blissfully unaware of the whole thing, as a 1 year old should be. She did manage to play the part though in the traditional stick-your-hand-in-the-birthday-cake-and-smear-it-all-over-your-face routine that all 1 year-olds have to undergo.

It is only my personal opinion, and therefore easily dismissable, but I do believe she is going to be a genius in languages, as already she is saying 'bye bye', 'thank you' in a quite audible manner. Of course, languages are not necessarily restricted to human communication only... I mean, what would you call Visual FoxPro?

Tuesday, April 04, 2006

Latitude/Longitude Conversion to UTM in Visual FoxPro

And now, for something completely different:

A friend of mine works for Rogers Communications, a huge cable company in this part of Canada. He's involved in 'plant': that part of the business that deals with physical assets in the field i.e. the location of swith boxes, cables, routers, switches, hubs and the like. He wanted to know if I knew anything about conversion from latitude/longitude to UTM (Universal Transverse Mercator) Coordinate System. I said I didn't and we left it at that.

But then for fun I got poking around on the web and found a version in PHP done by Jim Studnicki. He, in turn, had translated this from a  function originally written in C by Jef Poskanzer. I spent some time converting Jim's PHP version to Visual FoxPro and after the usual minor problems I got it to work. I must say this is the first time I used the DTOR() (degrees to radians) function in VFP. (not that function is hard to mimic otherwise: pi/180).

Anyway, here it is. It ain't pretty, but if you need it, you can fix it up yourself. Once you have it up and running in VFP, test the results against any of the UTM conversion calculators on the web to verify your results.

 Hopefully it can help some other VFP developer in the future. This is what is so absolutely fabulous about the web: the free sharing of information. Ten years ago, getting an answer to this would have been a real problem. Now, anybody with half a brain can do this.

*Keith Hekker 2006-04-02
*Translated from a PHP function by Jim Studnicki

Procedure ConvertToUTM()
PARAMETERS Latitude, Longitude
* convert decimal geographic coordinates to UTM
* param latitude as decimal
* param longitude as decimal

cOldDecimals = SET("DECIMALS")

* square of eccentricity of equatorial cross-section
ECCENTRICITY_SQUARED = 0.00669437999013

* eccentricity prime squared

* radius of Earth in meters

* scale factor
K0 = 0.9996

* make sure longitude is between -180 and 180
IF longitude < -180.0
longitude = longitude + 360.0
IF longitude > 180.0
longitude = longitude + 360.0

* get UTM letter
CASE latitude <= 84.0 and latitude >= 72.0
utmLetter = "X"
CASE latitude < 72.0 and latitude >= 64.0
utmLetter = "W"
CASE latitude < 64.0 and latitude >= 56.0
utmLetter = "V"
CASE latitude < 56.0 and latitude >= 48.0
utmLetter = "U"
CASE latitude < 48.0 and latitude >= 40.0
utmLetter = "T"
CASE latitude < 40.0 and latitude >= 32.0
utmLetter = "S"
CASE latitude < 32.0 and latitude >= 24.0
utmLetter = "R"
CASE latitude < 24.0 and latitude >= 16.0
utmLetter = "Q"
CASE latitude < 16.0 and latitude >= 8.0
utmLetter = "P"
CASE latitude < 8.0 and latitude >= 0.0
utmLetter = "N"
CASE latitude < 0.0 and latitude >= -8.0
utmLetter = "M"
CASE latitude < -8.0 and latitude >= -16.0
utmLetter = "L"
CASE latitude < -16.0 and latitude >= -24.0
utmLetter = "K"
CASE latitude < -24.0 and latitude >= -32.0
utmLetter = "J"
CASE latitude < -32.0 and latitude >= -40.0
utmLetter = "H"
CASE latitude < -40.0 and latitude >= -48.0
utmLetter = "G"
CASE latitude < -48.0 and latitude >= -56.0
utmLetter = "F"
CASE latitude < -56.0 and latitude >= -64.0
utmLetter = "E"
CASE latitude < -64.0 and latitude >= -72.0
utmLetter = "D"
CASE latitude < -72.0 and latitude >= -80.0
utmLetter = "C"
* returns "Z" if the latitude is outside the UTM limits of 84N to 80S
utmLetter = "Z" *

lat_rad = DTOR(latitude)
long_rad = DTOR(longitude)
zone = INT((longitude + 180) / 6) + 1
IF latitude >= 56.0 and latitude < 64.0;
and longitude >= 3.0 and longitude < 12.0
zone = 32

* Special zones for Svalbard.
IF latitude >= 72.0 and latitude < 84.0
CASE longitude >= 0.0 and longitude < 9.0
zone = 31
CASE longitude >= 9.0 and longitude < 21.0
zone = 33
CASE longitude >= 21.0 and longitude < 33.0
zone = 35
CASE longitude >= 33.0 and longitude < 42.0
zone = 37

* +3 puts origin in middle of zone
long_origin = (zone - 1) * 6 - 180 + 3
long_origin_rad = DTOR(long_origin)
sin(lat_rad) * sin(lat_rad))
T = tan(lat_rad) * tan(lat_rad)
C = ECC_PRIME_SQUARED * cos(lat_rad) * cos(lat_rad)
A = cos(lat_rad) * (long_rad - long_origin_rad)

((1.0 - ECCENTRICITY_SQUARED / 4 - 3 * ;
ECCENTRICITY_SQUARED / 256) * lat_rad - (3 * ;
sin(2 * lat_rad) + (15 * ECCENTRICITY_SQUARED *;
1024) * sin(4 * lat_rad) - (35 * ECCENTRICITY_SQUARED *;
sin(6 * lat_rad))

easting = K0 * N * (A + (1 - T + C) * A * A *;
A / 6 + (5 - 18 * T + T * T + 72 * C - 58 *;
ECC_PRIME_SQUARED) * A * A * A * A * A / 120) + 500000.0

northing = K0 * (M + N * tan(lat_rad) *;
(A * A / 2 + (5 - T + 9 * C;
+ 4 * C * C) * A * A * A * A / 24;
+ (61 - 58 * T + T * T + 600 * C -;
330 * ECC_PRIME_SQUARED) * A * A * A * A * A * A / 720))

IF latitude < 0.0
* 1e7 meter offset for southern hemisphere
northing = northing + 10000000.0
north = .F.
north = .T.

? "Easting = " + TRANSFORM(easting)
? "Northing = " + TRANSFORM(northing)
? "North = " + TRANSFORM(north)
? "Zone = " + TRANSFORM(zone)
? "UTM Letter = " + TRANSFORM(utmletter)

Saturday, April 01, 2006

Fun With Numbers

The incredible forces of Mother Nature have always intrigued me. Consider this for a minute:

Yesterday, we had a rain storm across Norfolk County. It was the usual scenario, one that has been playing itself out for thousands or years and will continue to do so for at least the foreseeable future, climate change notwithstanding.

It had been a warm day, up to a maximum of 21 C. It rained moderately for a couple of hours just before a cold front swept through, dropping the temperature behind it to 10 C.  According to the Environment Canada website, 12 mm of rain fell at Delhi, just down the road. No big deal, it happens all the time.

Where things get interesting is when you start looking at the numbers. The area of Norfolk County is 1,609.95 square kilometres, about 2.5 times that of the City of Toronto at 661 square kilometres. Assuming that the rain fell evenly across Norfolk County, we do the calculation for the total volume of rain in cubic metres as follows:

1,609.95 x 1,000 x 1,000 x .012 = 19,283,400 cubic freakin' metres!

Yes, that is right, more than 19 million cubic meters. If one were to lay these end-to-end, the wall of water, 1 metre high and 1 metre wide, would reach halfway around the world, before it would run out.

Now, let's take this one step further. That water just didn't happen to get there on its own. It had to evaporate from the ocean to get here. In yesterday's case, it most likely came from the Gulf of Mexico. OK, it takes 600 calories to evaporate 1 gram of water, so that's 600,000 calories for 1 litre or 600,000,000 (600 million) for 1 cubic metre.

This is where it gets really handy to have the Command Window of Visual FoxPro handy, as the numbers get so large, it's easy to lose track. (Even handier to have the _CLIPTEXT system variable available). To evaporate all that water

19,283,400 x 600,000,000 =  11,570,040,000,000,000 calories are needed

Sorry, but I don't know how to pronounce that number. Nevertheless, we carry on. We convert this number to Joules. By the way, 1 Joule is about the equivalent to the amount of energy you expend when you lift a small apple 1 metre off the ground.

11,570,040,000,000,000 calories = 48,409,047,360,000,010 Joules

Now, although a beautiful unit of the metric system in its own right, the Joule is exceedingly meaningless to most people. So let's try kW (kilowatt-hour)

48,409,047,360,000,010 Joules = 13,447,065,175 kW/hr or roughly 13.5 million Megawatt/hr

To put this into perspective, the Nanticoke Power generation station on Lake Erie generates 4,000 Megawatt/hr. It would have to run 3,361 hours (that's about 20 weeks) at full bore to generate that amount of power.

Yet another way:

48,409,047,360,000,010 Joules = 45,891,776,897,279 BTU/hr

An average house furnace is about 100,000 BTU/hr, so it would take 458,917,768  (that's 458 million) house furnaces burning solid for 1 hour to evaporate the water involved.

And I'm only talking Norfolk County!

Furthermore, I haven't even talked about the energy involved to transport the water vapor 2,000 km from the Gulf of Mexico to Norfolk County.

Some useful formulas:

1 calorie = 4.18400 joules

1 Joule = 2.7778×10−7 kilowatt-hour (or otherwise 0.00000027778 kilowatt-hour)

1 Joule = 9.48×10−4 BTU (or otherwise 0.000948 BTU)

Sunday, March 26, 2006

It was forty years ago today...

...that the Rolling Stones played a venue known as Brabanthal in Den Bosch, Netherlands. And I was there. This was my first big rock event. The Stones had made a name for themselves over the previous couple of years and their lone previous appearance in the Hague (Scheveningen) had ended in a major riot where the 'audience' destroyed the concert hall. So this sounded like fun. That day (March 26th) was my birthday (still is, as a matter of fact). My brother Gerard had been able to somehow obtain 4 tickets for this concert and was kind enough to invite me along. He had, under false pretenses I might add, also been able to borrow a Volkswagen Beetle off some guy he knew at work. Not that the car was an absolute necessity, but it sure made getting there a lot easier than having to take public transit to Den Bosch as it was about 100 km away. So off we drove, late in the afternoon, the 4 of us squeezed into the bug. The venue was normally used to auction cattle, so since the place was already a pigstye, I guess the organizers figured this was the ideal place for a rock concert. Not that the word concert was actually used for an event like that back in those days: that term was strictly reserved for classical music events. To call a performance by the Stones a concert would have been sheer blasphemy. Total number of spectators was extremely low as well: 9000. The entrance fee was pretty steep though: 10 guilders, which converted to about $3 US back in 1966. The warm up acts were Dutch groups, among them the Outsiders and the Bintangs, both now revered in Dutch pop history. The late Wally Tax was the leader of the Outsiders, and a legend in his own mind even back then. I remember we made our way in through some kind of small side entrance. The hall was already packed and the concert was in progress. There were no seats, everybody just sort of piled up against the stage. Talking about the stage, it wasn't exactly up to today's standards: very few, if any spotlights, no massive amplifier banks and speakers. The only fireworks would have been Keif smoking on stage. Mick was his usual trade mark self. From the setlist I don't remember much: the only thing that comes to mind is '19th Nervous Breakdown', the end riff where Bill Wyman's bass sonically mimics a person slide into a state of mental anguish.

The next time I saw the boys live was at Sarsstock in Toronto in 2003, 37 years later. Number of spectators: 500,000.

Tuesday, March 21, 2006

Thank you, vandals...

...for if it wasn't for your destructive behaviour I never would have found out about the Waterford Heritage Rail Trail. You see, some time ago there was a report in the local newspaper about some fences being destroyed on this trail. So, with a little bit of sleuthing, we found out where the trail runs. Turns out it is just about under our nose, well, say 6 km directly east of us, just east of Hwy 24 on Townsend Road #12.

Today, we decided to take it for a test spin. And it's certainly worth exploring. It runs through, as the brochure describes it, a 'pastoral' landscape, consisting of about 60% farmer's fields and the rest bush and thickets. As luck would have it, just 20 minutes into our walk, three deer appeared from behind a low hill to our right. We looked at them, they looked at us, then off they ran, white tails being waved like fans on a summer's day.

The trail is around 6.2 km in length, of which we did the top 4 return. In addition to that, we walked into Waterford and had a coffee/tea in "The Cafe".

Then, on a sidestreet in Waterford, I spotted this door. Seems like the contractor miscalculated the depth of the basement.

Waterford Heritage Trail
Even though the temperature was right around zero again, at times, it felt a lot warmer than that when the sun was out. Could it be true? Is spring really on its way? Nah, don't get too excited.