One more snowman

I just had to do one more snowman.  This piece is carved from pear wood and stands about 3-1/4 inches tall.  The arms are random twigs from the yard and the pipe is carved from mesquite.  The pipe is slightly too large for the snowman, but I’m not sure I could carve it any smaller.  As with the last one, the rest of the decorations are chips of black walnut.

I need to be a little more careful with the glue.  I managed to smear glue around the nose and mouth, and it’s visible under bright light.  That wood glue is good stuff, but it doesn’t clean up very well.  The only way I know of to remove it would be to carve or sand it away.  Live and learn.

Off to other things, but I’ll definitely come back to the snowmen.  They’re fun.

Sycamore snowman

While sitting out on the porch today overseeing a batch of ranchero sauce cooking on the gas burner, I whittled this little snowman (about 3 inches tall) from a sycamore branch.

The nose is actually a dark spot in the wood, which just happened to be in a fortuitous spot.  The eyes, mouth, and buttons are little chips of walnut that I glued on.  The arms are twigs from a juniper bush.

Snowman

I was doodling on a piece of maple over the weekend and ended up with a goofy snowman.  The nose is the end of a toothpick.  Goofy, sure, but it has a certain charm.

How constant is a constant?

How constant are constants?

I got a rude surprise today when I discovered that constants in C# (.NET programs in general) are a little more constant than I thought. I know that sounds strange, but let me explain.

Here’s a C# class that defines two constants and a method that outputs those constants.

using System;

namespace OtherTest
{
    public static class TestObj
    {
        public const int ConstInt = 42;
        public const string ConstString = "First test";

        public static void ShowConstants()
        {
            Console.WriteLine("TestObj.ShowConstants");
            Console.WriteLine("ConstInt = {0}", ConstInt);
            Console.WriteLine("ConstString = {0}", ConstString);
        }
    }
}

We can compile that into OtherTest.dll with a simple command line:

csc /t:library OtherTest.cs

If you’re having trouble running the compiler, go to your All Programs menu and select Visual Studio|Visual Studio Tools|Visual Studio Command Prompt. Then you should be able to run the command line compiler.

Okay so far. Here’s some code that references the constants in that class:

using System;

using OtherTest;

namespace testo
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Inside Program.Main");
            Console.WriteLine("ConstInt = {0}", TestObj.ConstInt);
            Console.WriteLine("ConstString = {0}", TestObj.ConstString);
            TestObj.ShowConstants();
        }
    }
}

Compile that program and link with the OtherTest assembly with this command line:

csc /t:exe /reference:OtherTest.dll ConstTest.cs

That creates ConstTest.exe which, when run, provides this output:

C:\DevWork\ConstTest>ConstTest
Inside Program.Main
ConstInt = 42
ConstString = Firsttest
TestObj.ShowConstants
ConstInt = 42
ConstString = Firsttest

That’s exactly what we expect. Now, change the values of the constants in OtherTest.cs:

        public const int ConstInt = 99604;
        public const string ConstString = "Second test";

And re-compile the assembly:

csc /t:library OtherTest.cs

And run the ConstTest.exe program again:

C:\DevWork\ConstTest>ConstTest.exe
Inside Program.Main
ConstInt = 42
ConstString = Firsttest
TestObj.ShowConstants
ConstInt = 99604
ConstString = Second test

If you’re as surprised as I am, raise your hand. The constant that the main program sees is different from the constant that is defined in the external assembly.

I understand what’s going on, but I’m pretty surprised by it. The compiler, when it compiled ConstTest.cs, reached into OtherTest.cs, got the values of the constants, and included them as constants in the compiled code. So when the code references TestObj.ConstInt at runtime, it’s really just getting the constant 42. That all makes sense. Except, of course, when you change the constant in the OtherTest.cs assembly, re-compile, and the values don’t match.

What surprises me is that the C# compiler (CSC) hoists the constants from the assembly. After all, the compiler is just creating MSIL (intermediate code) that is later compiled to native code by the JIT compiler at runtime. I would have expected CSC to write MSIL that says, in effect, “Use the constant value defined in that other assembly here,” and let the JIT compiler figure out how to optimize everything. That would eliminate the confusion you see above, and I don’t understand why it’s not done that way.

The thing to remember here is that constants are evaluated at compile time. I don’t know all the ramifications of this, but one thing is for certain: if your program references constants that are defined in an external assembly, then your program is at risk any time that assembly is changed. Unless you make the rule that a publicly visible constant never changes value throughout the life of the source code, you’re running the risk of encountering a very difficult to find bug that will “go away” when you re-compile the project. And there’s nothing worse than bugs that just “go away.”

Pumpkin patch

I started carving on this pumpkin patch back in October after I completed the third of my scarecrow figures. Then I got bogged down with other things, or perhaps I was afraid to put this thing together. If I didn’t try, then I couldn’t screw it up. I did make some mistakes, but nothing fatal.

This is what I call a scrap pile project. The pumpkins are carved from small bits of basswood that were left over from cutting out blanks for other projects. The hay bales are cut from a piece of 1″ x 1″ maple that I found in the scrap box. The scarecrow post is a piece of black walnut left over from the little whale I carved over a year ago. The fence is oak from the whiskey barrels. And the scarecrow and the base are from a chunk of scrap lumber I took off a pallet last year. Amazing what a little sandpaper and paint can do, huh?

You can’t tell the difference

In a 2007 study, researchers from the California Institute of Technology and Stanford’s business school found that people enjoy more expensive wine more than cheaper wine–even if the two wines are the same. Article. If you think the wine is more expensive, you like it more.

A separate study showed that test subjects rated a wine higher if they were told beforehand that a wine expert had rated it highly. Those who were told that the wine was rated as “average” rated the wine considerably worse. Both groups rated the wine differently from those who weren’t given any advance information about the wine’s rating.

In Is Bottled Water Better Than Tap?, John Stossel describes how the 20/20 team took five different national brand bottled waters and a sample of New York City tap water to a microbiologist for testing. The microbiologist could find no significant differences among the waters. The idea that bottled water is safer than tap water is just flat wrong.

But does bottled water taste better? 20/20 ran a blind taste test that included five bottled waters and that good old New York City tap water. Many of the participants were bottled water drinkers who were convinced that they could tell the difference between bottled water and tap water. They couldn’t. Tap water tied for third in the taste test. The cheapest bottled water (Kmart’s American Fare) came in first. The most expensive water, Evian, was rated as “bad” by almost half of the testers.

Do a little searching and you can find similar tests by the truckload. Dedicated Bud Light drinkers can’t tell the difference if you replace their beer with Coors Light. If you slap an expensive label on a bottle of cheap wine, the snobbiest wine snob you know will be hoodwinked, praising the wine and your good taste. Fill an Aquafina bottle with tap water and the most tap-averse of your friends will gladly swig it down. Wrap a block of store brand cheddar cheese in a label from some artisan cheese place, put the Ritz crackers in a fancy package, and nobody at your hoity-toity wine-and-cheese party will know the difference.

Face it, Coke, Pepsi, and the store-bought cola all taste like battery acid. In a blind taste test, almost nobody can tell the difference.

Store brand canned goods are often packaged in the same plant as national brands. The only difference is the label that gets stuck to the can at the end of the line. The contents are no different.

Of course, you can tell people this all you like. Hell, most of your friends will agree. Except, of course, they can tell the difference. Sure. And everybody in the country thinks he’s an excellent driver.

The truth is that the vast majority of people (and that almost certainly includes you and me) can’t tell the difference between the $5 chardonnay and the $50 chardonnay, whether you’re drinking tap water or Dasani, or whether the eggs are organic, free-range, or factory-farmed.

Face it, the reason you can’t tell any difference is because there isn’t a significant difference. Get over it. Or at least admit that your preferences are based on marketing hype, snobbishness, or something other than actual taste.

The confusing world of rifle caliber

Debra and I went up north again over Thanksgiving, spending four days and nights at a ranch in Ranger, TX with our friends Mike and Kristi. Mike spent part of each day sitting in a deer blind with his rifle, hoping to get some fresh venison. One afternoon I was asking him about his rifle, which he said is a “thirty-aught-six,” and we got to discussing the different types and calibers of rifles.

Understand, I’m not completely unfamiliar with firearms. I consider myself more knowledgeable than most in that I qualified Expert with handgun and rifle, can break down, clean, and re-assemble a weapon, and have a working knowledge of guns in general and a healthy regard for gun safety. But I’m certainly no expert or walking encyclopedia on the topic. In particular, I find the whole issue of caliber to be incredibly confusing.  I expect things to make sense, and if you look only at the caliber, things make no sense at all.

We’ll start with Mike’s “thirty-aught-six,” more commonly written as “.30-06.” The “.30” part means that it’s a .30 caliber bullet. That is, the bullet is .30 inches in diameter. The “-06” in the designation stands for the year 1906, which was the year that the United States Army started using it. The designation covers more than the bullet. The Springfield .30-06 is 7.62 mm (diameter) x 63 mm (length) cartridge that has a specific shape and load (amount of powder). This became the standard round for the U.S. Army and was used for almost 50 years, including in the WWI era Springfield rifle and the WWII era M1.

So the .30-06 is a .30 caliber rifle. How does that differ, for example, from a .30-30? A .30-30, as you would expect, is a .30 caliber round, but what does the “-30” stand for? It’s not the year in which the round was introduced, but rather the size of the load: 30 grains (about 1.9 grams) of smokeless powder. Winchester introduced the cartridge in 1895. It’s a 7.62 mm x 51 mm cartridge, as opposed to the -06’s 7.62 x 63.

And then there’s the .308 Winchester, which is also 7.62 x 51, and is very similar to the 7.62 x 51 NATO cartridge introduced in the 1950s and used in the M14 rifle and M60 machine gun, among others.

Remember I said before that a .30 caliber bullet is .30 inches in diameter? That’s not entirely true. The .30-06, for example, has a bullet diameter of 0.308 inches, as do the .30-30 and the .308 Winchester. The 7.62 x 51 NATO, though, has a bullet diameter of 0.300 inches. The .303 British is 0.311 inches, as is the .303 Savage. With the exception of the NATO cartridge, which really does have a bullet diameter of 7.62 mm, the rest of them are confusing as heck. Why a .308 would be 0.308 inches but a .303 would be 0.311 inches is beyond me. I suspect that the measurement is actually the diameter of the rifle barrel and depends on how the measurement is taken (i.e. between the grooves, between the lands, or maybe from one groove to the opposing land).

It doesn’t get much better with handguns, by the way. For example, I always wondered why a .357 Magnum was more powerful than a .38. I’m not talking a little bit, either. A .38 is a dangerous weapon, no doubt, but it pales in comparison with the stopping power of a .357. Why is that? After all, isn’t the .38 bigger?

Actually, the .38 Special has a bullet diameter of 0.357 inches. Why is it called a .38? I don’t know, but the neck diameter of the cartridge is 0.379 inches. The .357 Magnum bullet is also 0.357 inches in diameter. The .357 Magnum has a heavier bullet and a bigger load (i.e. more powder), making it a much more powerful weapon.

A 9 mm handgun, by the way, has a bullet diameter of 0.356 inches. So a 9 mm is pretty much the same thing as a .38, and there are 9 mm Magnum cartridges that are comparable to the .357 Magnum cartridges.

Face it, the world of guns and ammunition is seriously confusing. And for the most part the caliber doesn’t particularly matter. For example, the M16 rifle uses a 5.56 mm round (.224 inches)–the same size as the .22 long rifle bullet fired by popular .22 caliber rifles and pistols that are used for small game hunting and target practice. The difference is that the 5.56 bullet is larger, heavier, and has a whole lot more power behind it.

A fatter bullet isn’t necessarily “better” when it comes to stopping power. What matters is the amount of kinetic energy, which is one-half the mass multiplied by the square of the velocity. So if you double the bullet’s speed, it has four times the kinetic energy. Faster is better than fatter.

I don’t know that my newfound knowledge is particularly useful. There’s still a lot I don’t know, and I’m okay with that. I’m just happy that I won’t be totally bewildered the next time I get into a discussion of rifles and calibers.