The Daily Parker

Politics, Weather, Photography, and the Dog

Holy shit

The Pope has announced his resignation:

Pope Benedict XVI announced Monday that he would resign on Feb. 28 because he was simply too infirm to carry on — the first pontiff to do so in nearly 600 years. The decision sets the stage for a conclave to elect a new pope before the end of March.

"After having repeatedly examined my conscience before God, I have come to the certainty that my strengths due to an advanced age are no longer suited to an adequate exercise of the Petrine ministry," he told the cardinals. "I am well aware that this ministry, due to its essential spiritual nature, must be carried out not only by words and deeds but no less with prayer and suffering.

Ratzinger is the person most directly responsible for the office accused of covering up priests abusing children for decades. I cannot wait to read Sullivan...

Update: I was not wrong about Sullivan.

LA-LA-LAyover

Did you know that Los Angeles is on the way from Chicago to Vancouver? I didn't either. I forgot that, when you have hubs in Chicago and Los Angeles, and no flights at all into the actual destination airport, layovers happen.

Good view from the Admirals Club though:

As much as I like flying, I'm not wild about the seven flight segments in 10 days—none of them less than 3 hours. (Next week, apparently, Dallas is on the way from Chicago to San Francisco. Same hub-and-spoke problem.) I also don't like having to scrunch my laptop between the seat to my front and my lap just to get some work done. Waah, waah, waah.

Next report from the Land Above.

When the Azure emulator is more forgiving than real life

Last night I made the mistake of testing a deployment to Azure right before going to bed. Everything had worked beautifully in development, I'd fixed all the bugs, and I had a virgin Windows Azure affinity group complete with a pre-populated test database ready for the Weather Now worker role's first trip up to the Big Time.

The first complete and total failure of the worker role I should have predicted. Just as I do in the brick-and-mortar development world, I create low-privilege SQL accounts for applications to use. So immediately I had a bunch of SQL exceptions that I resolved with a few GRANT EXEC commands. No big deal.

Once I restarted the worker role, it connected to the database, loaded its settings, downloaded a file from NOAA and...crashed:

Inner Drive Weather threw System.Data.Services.Client.DataServiceRequestException
...
OutOfRangeInput

One of the request inputs is out of range.
RequestId:572bcfee-9e0b-4a02-9163-1c6163798d60
Time:2013-02-10T06:05:41.5664525Z

at System.Data.Services.Client.DataServiceContext.SaveResult.d__1e.MoveNext()

Oh no. The dreaded Azure Storage exception that tells you absolutely nothing.

Flash forward fifteen minutes (now past midnight; and for context, I'm writing this on the 9am flight to Los Angeles), with Fiddler running on a local instance connecting to production Azure storage, and I found the XML block on which real Azure Storage barfed but the Azure storage emulator passed without a second thought. The offending table entity is metadata that the NOAA downloader worker task stores to let the weather parsing worker task know it has work to do:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
   <entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <title />
  <author>
    <name />
  </author>
  <updated>2013-02-10T05:55:49.3316301Z</updated>
  <id />
  <content type="application/xml">
    <m:properties>
      <d:BlobName>20130209-0535-sn.0034.txt</d:BlobName>
      <d:FileName>sn.0034.txt</d:FileName>
      <d:FileTime m:type="Edm.DateTime">2013-02-09T05:35:00Z</d:FileTime>
      <d:IsParsed m:type="Edm.Boolean">false</d:IsParsed>
      <d:ParseTime m:type="Edm.DateTime">0001-01-01T00:00:00</d:ParseTime>
      <d:PartitionKey>201302</d:PartitionKey>
      <d:RetrieveTime m:type="Edm.DateTime">2013-02-10T05:55:29.1084794Z</d:RetrieveTime>
      <d:RowKey>20130209-0535-41d536ff-2e70-4564-84bd-7559a0a71d4d</d:RowKey>
      <d:Size m:type="Edm.Int32">68202</d:Size>
      <d:Timestamp m:type="Edm.DateTime">0001-01-01T00:00:00</d:Timestamp>
    </m:properties>
  </content>
</entry>

Notice that the ParseTime and Timestamp values are equal to System.DateTimeOffset.MinValue, which, it turns out, is not a legal Azure table value. Wow, would it have helped me if the emulator horked on those values during development.

The fix was simply to make sure that neither System.DateTimeOffset.MinValue nor System.DateTime.MinValue ever got into an outbound table entity, which took me about five minutes to implement. Also, it turned out that even though my table entity inherited from TableServiceEntity, I still had to set the Timestamp property when using real Azure storage. (The emulator sets it for you.)

By this point it was 12:30 and I needed to get some sleep, however. So my plan to run an overnight test will have to wait until this evening at my hotel. Then I'll find the other bits of code that work fine against the emulator but, for reasons that pass understanding, the emulator gets completely wrong.

Doubly-idiotic storm name

Looking at Poynter's roundup of storm front pages, I'm struck that the New York Post called the storm "Nemo." Two things:

1. Winter storm names are an invention of The Weather Channel, a move the National Weather Service has explicitly repudiated.

2. Nemo is Latin for "nobody." So the Post's headline yesterday, "Nemo Bites"—i.e., "no one bites"—just reinforces the stupidity..

Anyway, I know my friends out east have unprecedented disastrous a bit of snow to survive endure inconvenience them today. Enjoy the digging.

The GOP's real problem, via Sullivan

Taking a brief rest from my temporary insanity, I read Sullivan:

Someone in the GOP needs to take Bush-Cheney apart, to show how they created the debt crisis we are in, by throwing away a surplus on unaffordable tax cuts, launching two unfunded wars, and one new unfunded entitlement. They need to take on the war crimes that has deeply undermined the soul of the United States. They need to note the catastrophic negligence that gave us the worst national security lapse since Pearl Harbor (9/11) despite being warned explicitly in advance, accept weak and false intelligence to launch a war they were too incompetent to fight or win, sat back as one of the worst hurricanes all but took out a major city, and was so negligent in bank regulation that we ended up with Lehman and all that subsequently took place.

These were not minor errors. They were catastrophic misjudgments which took an era of peace, surplus and prosperity and replaced it with a dystopia of massive debt, a lawless executive branch, two unwinnable wars, and a record of war crimes that had their source in the very Oval Office.

That seems about right to me.

Thinking about vacation...where to go?

Unfortunately, that's not going to happen for a while. I'm going to spend a lot of time in airplanes over the next 11 days, including a long weekend with the folks. Good thing wifi is ubiquitous, even on airplanes, because it also looks like I'm going to burn at over 120% of utilization again this month. (Last month I was 118% billable, but if you add non-billable time I actually worked 134% of full time.)

The madness ends soon. We're hiring, projects are gelling, other projects are winding down, and at some point I'll just get on a plane for four days without taking my laptop.

I did take three hours yesterday to play pub trivia with my droogs, owing to the start of a four-week trivia tournament. We're in second place—by one point. I sincerely hope to make the next three Thursdays.

Lake level hits new record

This is alarming:

A new and worrisome benchmark has been reached with the announcement Tuesday by the U.S. Army Corps of Engineers that Lakes Michigan and Huron have dipped to new record lows. It’s been a 14 year journey. That’s how long water levels have been below historic averages--the most extended run of below normal water levels in the 95 year record of Great Lakes dating back to 1918.

The numbers are as stunning as they are disturbing with serious implications to shipping interests, all manner of creatures which populate the lakes, plus the millions who enjoy these natural treasures recreationally and depend on them as a source of water.

Water levels have fallen 1.9 m from the record highs established in October 1986 and currently sit at levels 735 mm below the long term average. Lake Michigan's water level is 430 mm lower than a year ago

We're getting more precipitation than we have in a while, but it hasn't been enough to end the drought. And because of dredging near Detroit, the lakes are emptying faster than ever right now.

Marriage equality passes UK House of Commons

The UK's Conservative government has passed a marriage equality bill by 400 to 175:

[UK Prime Minister David] Cameron, who described gay marriage as “an important step forward for our country”, smiled broadly as the result was revealed. [Deputy PM] Nick Clegg called the vote “a landmark for equality in Britain”. [Opposition leader] Ed Miliband said it was “a proud day”.

However, the details of the vote quickly showed that Mr Cameron’s decision to push through the legislation has left him in a minority within his own party over the issue.

The result followed a debate in which several gay MPs made impassioned arguments for the change in the law. Mike Freer, the Conservative MP for Finchley and Golders Green, appealed directly to his party colleagues over the vote, declaring: “I am not asking for special treatment. I am simply asking for equal treatment.”

The United Kingdom has a state church and a right-leaning government. The U.S. has a constitutional prohibition against a state church and has a left-leaning government. Yet the UK passed marriage equality before most legislatures in the U.S.

I remember fondly when the U.S. was a beacon of freedom and tolerance in the world. Maybe it will be again, someday.

Quick link round-up

I'll be a lot less busy in March, they tell me. Meanwhile, here are some things I want to read:

I will get to them...soon...