The Daily Parker

Politics, Weather, Photography, and the Dog

The rear-guard action still holds ground

In the hopeless war between spring-like warmth and the ice still covering Chicago, the heat has almost prevailed. Officially at 7am O'Hare had only 25 mm of snow left after an overnight temperature rise to 6°C.

The end is near. Those last few millimeters have no chance of surviving the day, between nearly 12 hours of sunlight and a predicted high of 14°C.

Still, today is the 71st consecutive snow-covered day here. No one under 30 has ever seen this in Chicago before. And it's unlikely anyone ever will again.

You had a good run, winter, but it's over now. Go home.

Ice is denser than snow

It looks like we're going to go 71 days with snow on the ground before it all melts. But a couple of subtle yet telling things have happened since I last griped.

First, the temperature has gone up since sunset, as forecast. It hasn't gone up a lot, but the influx of warm air from the Gulf of Mexico will continue through tomorrow, to the detriment of all the snowdrifts in Chicago.

It's hard to get your mind around how much heat the atmosphere moves around. A human being can generate about 6-8 megajoules as heat every day. (A food calorie is about 4,200 joules.) Your car or office can generate tens of megajoules to keep you warm. But when an air mass comes up along the Mississippi to Chicago, it's dragging so much energy that we need to review exponents. We're talking about petajoules.

Which brings up the second point. We're not talking about an inch of fluffy ice crystals on a flower. We're actually talking about megatons of ice covering...everything. Not snow; ice.

Take a 10m square of ice just 50 mm thick—meaning just about any square of lawn in the Chicago area right now. So, that's 100 square meters times 50 mm (0.05m), which yields just 5 cubic meters of ice. It turns out, to change just that small amount of ice—oh, wait, that's five tons of ice (do the math)—into water takes 16.5 gigajoules of energy.

Also, when the energy goes into melting ice, it doesn't go anywhere else. I'll hold off on the physics for the moment, except to say that energy can't be created or destroyed, so when it goes into changing the state of a large mass of water without changing its temperature, it's pretty much unavailable for anything else. (Physicists reading this, please be kind; it's close enough.)

This is just a long way of saying: those last millimeters won't go quietly. The last bits of "snow" that the official weather observers measure aren't really snow, they're ice; and ice takes a lot of heat to melt. (Snow is easier to melt because it has so little mass for the same volume.)

Still, if the temperature gets up to its predicted 14°C tomorrow, that's a lot of heat fighting a lot of ice. It might get rid of the official snow cover at the airport, even. And that would leave us with nothing more than the two-meter snowbanks pushed up by all the plows for the last ten weeks. Joy.

Ten weeks later

When we got a few centimeters of snow on December 29th, no one expected it would still be on the ground after we changed the clocks in March. Yet there it is, officially 50 mm for the last 24 hours.

The 11am temperature at O'Hare was -0.6°C, and the forecast calls for the temperature to pop up to 7°C this afternoon and then stay above freezing until Tuesday night—possibly even getting up to 14°C tomorrow afternoon. If the little snow we've still got can survive that onslaught, then I will be impressed.

And the best part about this forecast? I won't write anything more about how many consecutive days of snow we've had. You're welcome.

Snow-cover reports come out every six hours. (The next report is due at 1pm.) I'll post as soon as the ground is officially snow-free.

Just one more moan: It's 18°C and sunny in London. But I won't be there for almost two more weeks.

Update: At 1pm the official snow depth was still 50 mm, but the temperature was up to 2°C. I'll check back in six hours.

Down to a Sunless Sea

Someone forwarded me a year-old short story by Neil Gaiman the Guardian published last spring. It begins:

The Thames is a filthy beast: it winds through London like a snake, or a sea serpent. All the rivers flow into it, the Fleet and the Tyburn and the Neckinger, carrying all the filth and scum and waste, the bodies of cats and dogs and the bones of sheep and pigs down into the brown water of the Thames, which carries them east into the estuary and from there into the North Sea and oblivion.

It is raining in London. The rain washes the dirt into the gutters, and it swells streams into rivers, rivers into powerful things. The rain is a noisy thing, splashing and pattering and rattling the rooftops. If it is clean water as it falls from the skies it only needs to touch London to become dirt, to stir dust and make it mud.

Read the rest here.

Snowy hell, day 69

Yesterday Chicago got warm enough to melt almost all the snow. We had just 50 mm on the ground at O'Hare (not including the waist-high drifts along all our major streets) when the cold front hit overnight. We woke up this morning to another "dusting" covering every surface of the city, just enough below freezing to make us ask "why?"

The Weather Service promises 12°C on Monday, which should end our 10-week ordeal of boots and salty paws temporarily. But I won't believe we're through winter until we have a solid week of warm weather. And I have no illusions this will happen before the end of May.

No, that wasn't it at all

The test configuration earlier today wasn't the problem. It turned out that MSBuild simply didn't know it had to pull in the System.Web.Providers assembly. Fortunately, this guy suggested a way to do it. I created a new file called AssemblyInit that looks like this:

using System.Diagnostics;
using System.Web.Providers;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MyApp
{
   public class AssemblyInit
   {
      [AssemblyInitialize]
      public void Initialize()
      {
         Trace.WriteLine("Initializing System.Web.Providers");
         var dummy = new DefaultMembershipProvider();
         Trace.WriteLine(string.Format("Instantiated {0}", dummy));
      }
   }
}

That does nothing more than create a hard reference to System.Web.Providers, causing MSBuild to affirmatively import it.

Now all my CI build works, the unit tests work, and I can go have a weekend.

Could not find assembly in command-line MSTest execution

One of my tasks at my day job today is to get continuous integration running on a Jenkins server. It didn't take too long to wrestle MSBuild to the ground and get the build working properly, but when I added an MSTest task, a bunch of unit tests failed with this error:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

The System.Web.Providers assembly is properly referenced in the unit test project (it's part of a NuGet package), and the assembly's Copy Local property is set to True.

When the unit tests run from inside Visual Studio 2013, they all work. When ReSharper runs them, they all work. But when I execute the command line:

MSTest.exe /resultsfile:MSTestResults.trx /testcontainer:My.Stupid.Test\bin\My.Stupid.Test.dll /test:MyFailingTest

...it fails with the error I noted above.

I'll spare you the detective work, because I have to get back to work, but I did find the solution. I marked the failing test with a DeploymentItemAttribute:

[TestMethod]
[DeploymentItem("System.Web.Providers.dll")]
public void MyFailingTest()
{
	try
	{
		DoSomeTestyThings();
	}
	finally
	{
		CleanUp();
	}
}

Now, suddenly, everything works.

And people wonder why I hate command line crap.

Day 67 of snowy hell

We still have snow on the ground, and now we've got a "hostage situation" counter up in our office about it. Sixty eight days ago, Chicago was snow-free. Since December 29th, we've worn boots every day, wiped our dogs' feet every day, squished across streets every day, and squelched down sidewalks every day.

There's a glimmer of hope. The temperature is up to -0.6°C, very nearly freezing. It might even get up to 7°C tomorrow and even stay above freezing for two days early next week.

And yet, we'll still have snow on the ground, possibly until April. Or May.

Enough already.

Chicago city council voting today to ban puppy mills

First-term Chicago City Clerk Susana Mendoza introduced an ordinance last month that would require pet stores to get dogs and cats from city pounds and shelters. The council will vote on it today:

“This ordinance cuts off the pipeline of animals coming into our city from the horrendous puppy mill industry and opens up a new opportunity for animals already in shelters who need a loving home to be adopted into,” Mendoza said.

It would, however, affect 16 businesses across the city, including Pocket Puppies in Lincoln Park, which sells small dogs at $850 to $4,000 a pup. Store owner Lane Boron said the ordinance would put him out of business or force him into the suburbs, but not curtail the operation of inhumane puppy mills.

“I opened my business, because I knew there were abuses in my business, eight years ago,” said Boron, who said he has sold puppies to celebrities and aldermen. “I wanted to make sure that my dogs were humanely sourced.”

In one of life's coincidences, I went to high school and college with Lane, and we served on the Student Judiciary Board together. I don't wish him ill, and I sympathize that the ordinance would affect his business negatively, to say the least.

That said, I fully support the ordinance. I generally oppose dog breeding, especially for designer dogs like Lane sells, when so many mutts need homes. The ordinance may not be the way to fix the problem of unwanted dogs and cats, either. But it might help.

Update: The ordinance passed 49-1.