The Daily Parker

Politics, Weather, Photography, and the Dog

Oh my ears

For several practical reasons, not least of which that I needed to finish some work I didn't have time to do in Vancouver, I listened to Sen. Marco Rubio's State of the Union response instead of watching it. Missing, I suppose, a good helping of his personal charisma, and going solely on the content of his speech, I have to conclude he and I live in different countries.

Where do I begin?

How about where Senator Rubio began: his first four sentences. I have no objection to "Good evening" or "I'm Marco Rubio" (though I did hear, in my mind's ear, "Polo"). Sentence three: "I'm blessed to represent Florida in the United States Senate." That, to me, is a curious reading of the first and seventeenth amendments. But I'll overlook it for now.

Sentence four: "Let me begin by congratulating President Obama on the start of his second term."

Oh, wait. That sentence is only in the prepared remarks. He didn't actually read it out loud. Why? one wonders.

Look, I'm tired, I woke up today in a foreign country, and I only have one Loonie in my pocket to spend right now against the 277 loonies in Congress. So let me jump ahead to the part of Rubio's speech that made me shout obscenities:

This idea – that our problems were caused by a government that was too small – it’s just not true. In fact, a major cause of our recent downturn was a housing crisis created by reckless government policies.

Which policies in particular? Two unfunded wars? The dissipation of a $500 billion budget surplus in four years? The draconian immigration laws—which he, as the child of Cubans, never had to experience because of our anti-Castro policies—that have dissuaded millions of able bodies and minds from coming to the U.S.? Or maybe, more pointedly, the small-government fantasies of a senile Federal Reserve chairman who admitted, two years after the disaster he created had put tens of millions of people out of work, had caused the organization he chaired to fail completely to meet its mandate for managing unemployment?

The three most-likely possibilities why Rubio's speech had no connection with reality are these: first, he believes he has to win over the dead-end, right-wing faction of his party (who constitute a compelling majority of it) in order to run for president; second, because he truly believes what he said, which bodes ill for his understanding of the reality-based community most people inhabit; or third, because his time machine malfunctioned, and he read his party's 1976 convention speech by mistake.

"[A] housing crisis created by reckless government policies." I'm agog. I'm out of analogies. What analogy could possibly encompass the chutzpah—mendacity?—of that line? "Mom, I crashed the car, so I blame you for not getting me to school on time." "Doctor, I shot myself in the liver, so I'll blame you if I die."

And that's just one line, near the beginning.

I'm done for the day, though. Tomorrow, after I've slept on it, I'll comment on the best State of the Union address a Republican has given in my lifetime.

LA Times thinks USAirways-AMR merger imminent

As I mentioned this morning, news agencies have picked up the little signs that tell them a 1000-airplane airline will happen this week:

The boards of the two airlines are expected to meet in the next few days to vote on the proposed merger, sources have told Los Angeles Times and other news outlets. A meeting to vote on the merger was scheduled for Monday, according to some reports, but was postponed to give those involved more time to work out final details.

According to sources, a decision has now been reached to name US Airways Group Inc. Chief Executive Doug Parker as CEO of the new carrier, while Tom Horton, CEO of American Airlines' parent, AMR Corp., would serve as nonexecutive chairman of the board until next year.

Analysts have estimated that the two companies could generate as much as $1 billion in savings and added revenue by combining forces.

In perhaps a modest bit of irony, I'm writing this aboard an American Airlines airplane over New Mexico Colorado. I do love technology...

US Airways and AMR: tying the knot this week? Yay!

The Economist's Gulliver blog thinks so:

THE merger of US Airways and AMR, the parent company of American Airlines, looks set to be concluded this week. The new company, which will be called American Airlines, would be one of the world’s largest airlines by capacity and become the third full-service carrier in America. We wrote about this a month ago, when AMR's board met to examine US Airways’ proposal. (Tom Horton, AMR’s boss, had promised a decision in “a matter of weeks”.)

The airlines are seen as a perfect fit by analysts. There is little overlap between their routes and hubs, which makes it likely that the new alliance will be approved by anti-trust regulators. The benefits for fliers, however, may not be so great...

Oh yes they will. I've said for years that getting American's management out of American would make it a much better airline. And I've said for years, right here on this blog, that US Airways is the right choice. Hell, even American's pilots, flight attendants, and mechanics agree. As an elite American flier, I expect to keep—yes, even to increase—the benefits I have of sticking with the carrier after the merger.

I've got five American flight segments between now and next Tuesday. I hope that I can congratulate the FAs on one of them for seeing this thing through.

Slow start on the West Coast

I always prefer heading west for business trips and east for fun trips because the time shifts work better that way. Sometimes I go to London for a long weekend and stay on Chicago time, meaning I go to sleep at 4am (10pm in Chicago) and sleep until noon (6am). (On any trip longer than 3 days I shift to local time.) Similarly, coming to the West Coast—I'm in Vancouver at the moment—lets me sleep in a bit (5:30 here is 7:30 at home) and get adequate caffeine before starting my business meetings.

Today I've encountered two complications. First, British Columbia and a few other provinces have declared today a provincial holiday, so nothing opened before 7am. Nothing, as in "coffee shops." Second, this early in February and this far west, the sun doesn't rise until 7:28.

Oh, and it's raining. Not a lot. Just enough.

Of course, here in Canada, everything is clean, efficient, and polite. It's not the Canadians' faults that it's cold, dark, and decaffeinated.

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.