Politics, Weather, Photography, and the Dog
Page 1 of 1 in the WindowsAzure category
Sunday 21 April 2013

On March 10th, I completed moving Weather Now to Windows Azure, and shut down the Inner Drive Technology International Data Center. I had already received my lowest electric bill ever for this location, thanks to a 25% rate reduction negotiated by the City.

Earlier this week I got my March electric bill, for my electricity use between March 8th and April 7th. Take a look:

My electricity use in March 2013 was just 26% of my March 2012 use (243 kw/h in 2013 against 933 kw/h in 2012). The bill was 80% lower, too.

My telecommunications bill also went down considerably. After I have complete data of these cost differences mid-May, I'll post a full rundown of how much moving to Azure saves me every month.

Sunday 21 April 2013 09:38:19 CDT (UTC-05:00)  | Comments [0] | Business | Windows Azure#
Friday 22 March 2013

Too much going on:

Now, I will go back to drafting documentation while I wait for AT&T to reconfigure my DSL and kill my landline. I've had a POTS ("plain old telephone service") twisted-pair line longer than most people on earth have been alive. After today, no longer. I don't think I'll miss it, either. I only have it because I have a business-class DSL, which I don't need anymore, and the only people who call it want money from me.

Friday 22 March 2013 09:12:03 CDT (UTC-05:00)  | Comments [0] | Kitchen Sink | US | World | Business | Cloud | Security | Windows Azure#
Sunday 17 March 2013

I've fixed seven annoying bugs and added three minor features to Weather Now, including:

  • Fixed searching from the search box so you can enter an airport code directly;
  • Fixed the Last 24 hours page to show day and night icons properly;
  • Added a status page so users can peek under the hood; and
  • Tweaked a few things in the background worker process around logging and status update alerts.

A minor bug fix release like this used to take a couple of hours to deploy, because I had to update the code running on the web server file-by-file. I got the process down to about an hour—but I still had to bring the application offline to make the update.

Since I put it up in Microsoft Windows Azure, publishing an update takes about 15 minutes, is completely automated, and doesn't require taking the site down. The great Inner Drive migration continues to pay dividends.

Sunday 17 March 2013 13:51:36 CDT (UTC-05:00)  | Comments [0] | Cloud | Weather | Windows Azure#
Tuesday 12 March 2013

I'm paying 90% of my attention right now to a Windows Azure online training class. I already knew a lot of the material presented so far, but not all of it. It's like re-taking a class you took as an undergraduate; the 10% you didn't know is actually really helpful.

Like next week's class, which will go over Infrastructure as a service: a lot has changed in the last year, so it should be valuable.

Apparently, though, my homework is to build an Azure web site this week. Not a multi-tier application with a worker role. Just a web site. How adorable.

Tuesday 12 March 2013 16:09:05 CDT (UTC-05:00)  | Comments [0] | Cloud | Windows Azure#
Sunday 10 March 2013

The Inner Drive Technology International Data Center is no more.

This morning around 8:15 CDT I updated the master DNS records for Weather Now, and shut down the World Wide Web service on my Web server an hour later. All the databases are backed up and copied; all the logs are archived.

More to the point, all the servers (except my domain controller, which also acts as a storage device) are off. Not just off, but unplugged. The little vampires continue to draw tens of Watts of power even when they're off.

The timing works out, too. My electric meter got read Thursday or Friday, and my Azure billing month starts today. That means I have a clean break between running the IDTIDC and not running it,* and by the beginning of May I'll have more or less the exact figures on how much I saved by moving everything to the Cloud.

Meanwhile, my apartment is the quietest it's ever been.** The domain controller is a small, 1U server with only one cooling fan. Without the two monster 2U units and their four cooling fans (plus their 12 hard drives), I can suddenly hear the PDC...and now I want to shut it down as well.

* Except for the DSL and land-line, which should be down in a couple of weeks. I'll still have all the expense data by May.

** Except for the two blackouts. Now, of course, I never need worry about a blackout again—unless it hits the entire country at once, which would create new problems for me.

Sunday 10 March 2013 13:10:42 CDT (UTC-05:00)  | Comments [0] | Business | Cloud | Windows Azure#

Weather Now is fully deployed to the Cloud. As soon as the Worker Role finishes parsing the last few hours of weather, I'll cut over the DNS change, and it will be live.

Actually, that's not entirely true; I'm going to cut over the DNS in the morning, after I know I fixed the bugs I found during this past week's shake-down cruise.* So if you want to see what a weather site looks like while it's back-filling its database, you can go to its alias, http://wx-now.cloudapp.net. (Because of how Azure works, this will remain its alias forever.)

Time to meet my friends, who are wondering where I am, no doubt.

* Bugs fixed: 13. Total time: 6.9 hours (including 2.4 to import and migrate the Gazetteer).

Saturday 9 March 2013 18:34:28 CST (UTC-06:00)  | Comments [0] | Business | Cloud | Weather | Windows Azure#
Saturday 9 March 2013

The final deployment of Weather Now encountered a hitch after loading exactly 3 million (of 7.2 million) place names. I've now kludged a response for the remaining 4.2 million rows, and a contingency plan should that upload fail.

Meanwhile, I have a saturated Internet connection. So rather than sit here and watch paint dry, so to speak, I'm bringing back some of the bugs that I decided to postpone fixing. The end result, I hope, will be a better-quality application than I'd planned to release—and a rainy Saturday made useful.

Saturday 9 March 2013 14:25:30 CST (UTC-06:00)  | Comments [0] | Cloud | Weather | Windows Azure#

Tomorrow morning, shortly after I have my coffee, I will finally turn off the last two production servers in my apartment the IDTIDC. The two servers in question, Cook and Kendall, have run more or less continuously since November 2006*, gobbling up power and making noise the whole time.

As I write this, I'm uploading the production Weather Now deployment along with the complete Inner Drive Gazetteer, a 7.2-million row catalog of place names that the site uses for finding people's local weather. It takes a while to upload 7.2 million of anything, of course; and it's only 35% done after two hours. Trying to deploy the Cloud package at the same time may not have made the most sense, but I need the weather downloader to start running now so that when I cut over to the new site, it has actual weather to show people.

I started this project on November 3rd, logging almost exactly 100 hours on it until today. I'm through the tunnel and almost done climbing up the embankment. One more night of whirring fans and then...quiet.

Update: Crap. The Gazetteer upload crashed after 3 million rows. Now Plan B...

* Yes, I did just link to the Wayback Machine there. The original Inner Drive blog is offline for the time being. I have a task to restore it, as I haven't updated it since 2008, it's not a priority.

Another update: the original link at (*) pointed to Wayback Machine, but after reconstituting the old blog I corrected the link. That's why the footnote above no longer makes a lot of sense.

Saturday 9 March 2013 12:19:17 CST (UTC-06:00)  | Comments [0] | Cloud | Weather | Windows Azure#
Sunday 3 March 2013

I don't know what to do with myself the rest of the day. I've just deployed the completely-redesigned Weather Now application. I feel 10 kilos lighter.

Check out the preview on Windows Azure.

The application started in mid-1997 as a feature of the now-defunct braverman.org, my proto-blog. The last major changes happened in 2006, when I gave it a face-lift. I've occasionally pushed some bug fixes, but really, until today it has looked and acted essentially the same way for 6 years. (The GetWeather application, which downloads and parses data from outside sources, hasn't changed significantly since 2002.)

So what's new? In sum:

  • The application now runs on Microsoft Windows Azure, up in the cloud. (Check out the preview!)
  • This means it also runs on Azure SQL Database instead of on-site SQL Server.
  • Since I had to port the database anyway, I completely re-architected it.
  • The database rearchitecture included moving its archives to Azure Storage, which will pay benefits once I update the UI to take advantage of it.
  • The ancient (1997, with revisions in 1999, 2002, and 2005) GetWeather application, which downloads weather data from outside sources, got rebuilt from byte 0 as well.
  • Finally, I fixed 35 bugs that the old architecture either caused or made fixing overly difficult.

There are a few bugs in the preview, of course. This morning I found and fixed 6 of them, all related to architectural changes under the hood that the creaky user interface didn't understand. And just now, I discovered that it thinks the sun never shines anywhere—again, almost certainly a problem related to changing from using the broken System.DateTime object to its replacement, System.DateTimeOffset. Always another bug to fix...

Still: I'm done with the port to Azure. I'll bang away on it for the next week, and if all works out, on Saturday I'll finally, finally, finally turn off my servers.

Sunday 3 March 2013 12:37:48 CST (UTC-06:00)  | Comments [0] | Weather | Windows Azure#
Saturday 2 March 2013

I've just finished—I mean, finished—the Weather Now worker role. The worker role runs in the background and performs tasks like, for example, downloading the weather from outside sources, parsing it, and storing it.

I have three tasks left to enable me to publish the new version of Weather Now to its new home in Windows Azure:

  • Create a script to initialize the lists that appear on the site's home page;
  • Upgrade the existing ASP.NET website to an ASP.NET web application; and
  • Create an Azure Cloud Service Web role to house the application.

I believe I will be done today sometime. But first, Parker is demanding a trip outside.

Saturday 2 March 2013 12:46:49 CST (UTC-06:00)  | Comments [0] | Weather | Windows Azure#
Friday 1 March 2013

I'm just a day from losing my mind (or "loosing," to all you Facebookers out there), a day from my workload returning to normal levels, and a day from deploying Weather Now to a test instance in Azure. Then, maybe, I'll have time to take all these in:

Watch this space for a sneak preview of Weather Now 4.0, possibly tomorrow. The GetWeather utility has run with only minor hitches for a week, and with two more (quick) bug fixes it's ready for production. That just leaves about 6 hours of work to move the ASP.NET application up to Azure...and then, you get to beta test it. If all goes well I'll cut over to Azure on the 9th or 10th, and finally—finally!—retire my last two servers.

Friday 1 March 2013 13:38:44 CST (UTC-06:00)  | Comments [0] | Aviation | Chicago | Geography | Kitchen Sink | Weather | Windows Azure#
Monday 25 February 2013

I don't have time to read these must-read articles:

Back to the mines...

Monday 25 February 2013 16:47:50 CST (UTC-06:00)  | Comments [0] | Kitchen Sink | Business | Cloud | Windows Azure#
Saturday 23 February 2013

Microsoft has suffered some unfortunate outages this week, first affecting SQL databases on Monday, and then yesterday storage:

On Friday, February 22 at 12:44 PM PST, Storage experienced a worldwide outage impacting HTTPS traffic due to an expired SSL certificate. This did not impact HTTP traffic. We have executed repair steps to update SSL certificate on the impacted clusters and have recovered to over 99% availability across all sub-regions. We will continue monitoring the health of the Storage service and SSL traffic for the next 24 hrs. Customers may experience intermittent failures during this period. We apologize for any inconvenience this causes our customers.

The outage caused problems throughout the Azure universe, because SSL-based storage underpins just about everything. Without Storage, for example, any VM that goes offline can't restart, because its VHD is kept in Storage. Web sites and Service Bus were also hosed. My customers were annoyed.

These problems can affect any computing system. The problem with Azure Storage going down was the scope of it: millions of applications. Even the largest colo data center only has tens of thousands of computers. With so many people affected, the outage looks like a disaster.

I'll be watching Microsoft closely over the next few days to see what more they can tell us about the outage. But if this was all do to certificates expiring, wow.

Saturday 23 February 2013 08:52:26 CST (UTC-06:00)  | Comments [0] | Cloud | Windows Azure#
Wednesday 20 February 2013

Over the past two days, Microsoft Azure had two outages they're still investigating. The first, from 18:26 CST through 20:00 CST Monday (0026 to 0200 UTC Tuesday), and the second, from 13:50 to 15:27 CST (1950-2127 UTC) yesterday, affected SQL Database and related services in the Azure datacenter outside Washington, D.C.

I noticed the Monday evening outage as it happened, because when a database goes down, a number of applications start sending me emails. A couple of people had minor inconveniences, but as it happened on a holiday evening, the damage wasn't too severe.

I did not notice the Tuesday afternoon outage, which did affect a lot of people and made some of my clients very angry, because I was on an airplane. When I landed and turned on my phone, I had 300 emails from various applications and mercifully only 4 from angry clients. (Welcome home!)

Microsoft hasn't determined reported the cause yet, but given the maintenance they had planned, started, and then backed out on Sunday night, they may have a clue. They have a second round of maintenance planned for tonight at midnight CST (0600 UTC). I'll be watching carefully tomorrow morning.

Wednesday 20 February 2013 12:15:12 CST (UTC-06:00)  | Comments [0] | Cloud | Windows Azure#
Sunday 10 February 2013

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.

People interested in those sorts of things can continue to read some helpful Azure debugging tips. Otherwise, stay tuned for a whinge about trying to do work on an airplane.

Sunday 10 February 2013 10:27:27 CST (UTC-06:00)  | Comments [0] | Software | Cloud | Windows Azure#
Sunday 3 February 2013

This is a more-technical follow up to my most recent post. If you're interested in how the next version of Weather Now will use Microsoft Windows Azure technology to provide real-time weather information, keep reading.

Sunday 3 February 2013 11:44:55 CST (UTC-06:00)  | Comments [0] | Cloud | Cool links | Weather | Windows Azure#
Wednesday 30 January 2013

I have a new post up at my employer's developers blog.

Hard-core Daily Parker enthusiasts may have seen it already. Still, click through to XM. We like blog visitors!

Wednesday 30 January 2013 12:35:32 CST (UTC-06:00)  | Comments [0] | Blogs | Business | Windows Azure#
Sunday 27 January 2013

This is another post about Azure software design, which not everyone will find especially interesting. I promise to post more Parker photos soon. Meanwhile, if you want to read about how the Weather Now parsing system will work in version 4, keep reading.

Sunday 27 January 2013 17:32:33 CST (UTC-06:00)  | Comments [0] | Cloud | Weather | Windows Azure#

The Inner Drive Technology International Data Center continues to whir away (and use electricity), despite my best efforts to shut it down by moving everything to Microsoft Windows Azure.

Most of the delay finishing the move has nothing to do with its technology. Simply, my real job has taken a lot of time this month as we've worked toward launching a new application tomorrow. Against the 145 hours spent on that project this month, not counting the 38 hours spent helping with other projects, squeezing out the 22 hours I've managed to find for Weather Now has left me falling behind on the Oscar nominees.

If you want to learn more about some technical problems that I've discovered trying to move it out of my apartment the IDTIDC, keep reading.

Sunday 27 January 2013 13:40:35 CST (UTC-06:00)  | Comments [0] | Business | Weather | Windows Azure#
Sunday 6 January 2013

This is about C# development. If you're interested in how I got a 60-fold improvement in code execution speed by adding a one-line Entity Framework configuration change, read on. If you want a photo of Parker, I'll post one later today.

Sunday 6 January 2013 12:17:13 CST (UTC-06:00)  | Comments [0] | Software | Cloud | Weather | Windows Azure#
Thursday 20 December 2012

As I've noted before, only one Web application still lives in my living room the Inner Drive Technology Worldwide Data Center: Weather Now. In the last few days, it's showing one more good reason that it needs to get to Windows Azure pronto.

Take a look at my Google Analytics view of incoming visitors:

What is going on? How do I go from 300 daily unique visitors to 1,800 in two days? Take a look at where they're coming from:

Yes, that's right. Close to 40% of Weather Now's traffic came from the Yukon Territory yesterday. And another 40% came from Alaska. And they're all going to this page for some reason. This might be why:

So how does Azure enter into it? Simply, if you have a Web application running on your own server, and you get a 750% increase in traffic, your server may not be able to handle it. Or, worse in a way, you might have been running the server capable of handling the peak load all the time, at great expense in electricity and hardware.

With Azure, you can simply bring another instance online, or increase the size of your running instance, or do any number of things to adapt quickly to the increased load, without having to buy or move the hardware. Then, when the load returns to normal, you can spin down the idle capacity. The trick is, you only pay for the capacity you're actually using.

I'm getting a lot closer to moving Weather Now, but a deadline looming at my paying job tomorrow has my attention at the moment. So more on this stuff later. Meanwhile, if you're in the Yukon or in central Alaska, stay warm, folks!

Thursday 20 December 2012 08:59:17 CST (UTC-06:00)  | Comments [0] | Cloud | Weather | Windows Azure#
Saturday 1 December 2012

I've just spent three hours debugging something caused by a single missing line in a configuration file.

At 10th Magnitude, we've recently upgraded our framework and reference applications to the latest Windows Azure SDK. Since I'd already done it once, it didn't take too desperately long to create the new versions of our stuff.

However, the fact that something works in an emulator does not mean it will actually work in production. So, last night, our CTO attempted to deploy the first application we built with the new stuff out to Azure. It failed.

First, all we got was a HttpException, which is what ASP.NET MVC throws when something fails on a Razor view. The offending line was this:

@{ 
   ViewBag.Title = Html.Resource("PageTitle");
}

This extension method indirectly calls our custom resource provider, cleverly obfuscated as SqlResourceProvider, which then looks up the string resource in a SQL database.

My first problem was to get to the actual exception being thrown. That required me to RDP into the running Web role, open a view (I chose About.cshtml because it was essentially empty), and replace the code above with this:

@using System.Globalization
@{
  try
  {
    var provider = new SqlResourceProvider("/Views/Home/About.cshtml");
    var title = provider.GetObject("PageTitle", CultureInfo.CurrentUICulture);
    ViewBag.Title = title;
  }
  catch (Exception ex)
  {
    ViewBag.Error = ex + Environment.NewLine + "Base:" + Environment.NewLine + ex.GetBaseException();
  }
}
<pre>@ViewBag.Error</pre>

That got me the real error stack, whose relevant lines were right at the top:

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.WindowsAzure.ServiceRuntime, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at XM.UI.ResourceProviders.ResourceCache.LogDebug(String message)

Flash forward an hour of reading and testing things. I'll spare you. The solution is to add a second binding redirect in web.config:

<dependentAssembly>
  <assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" 
    publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
  <bindingRedirect oldVersion="1.1.0.0-1.8.0.0" newVersion="1.8.0.0" />
</dependentAssembly>

Notice the second line? That tells .NET to refer all requests for the service runtime to the 1.8 version.

Also, in the Web application, you have to set the assembly references for Microsoft.WindowsAzure.Configuration and Microsoft.WindowsAzure.Storage to avoid using specific versions. In Solution Explorer, under the References folder for the web app, find the assemblies in question, view Properties, and set Specific Version to false.

I hope I have saved you three hours of your life. I will now go back to my deployment, already in progress...

Update, an hour and a half later: It turns out, there's a difference in behavior between <compilation debug="true"> and <compilation> on Azure Guest OS 3 (Windows Server 2012) that did not exist in previous guest OS versions. When an application is in debug mode on Azure Guest OS 3, it ignores some errors. Specifically, it ignores the FileNotFoundException thrown when Bundle.JavaScript().Add() has the wrong version number for the script it's trying to add. In Release mode, it just barfs up a 500 response. That is maddening—especially when you're trying to debug something else. At least it let our app log the error, eventually.

Saturday 1 December 2012 15:36:31 CST (UTC-06:00)  | Comments [0] | Cloud | Windows Azure | Work#
Tuesday 27 November 2012

10th Magnitude's CTO, Steve Harshbarger, explains how the cloud makes economics better by giving us more options:

We know we could build every feature of a custom application from the ground up. We get ultimate control of the result, but often the cost or timeframe to do so is prohibitive. So as developers, we look to incorporate pre-built components to speed things along. Not only that, we strive for better functionality by incorporating specialized components that others have already invested far more resources in than we ever could for a single application. As a simple example, who would ever write a graphing engine from scratch with so many great ones out there? So, build is rarely the whole story.

What about buy? I think of “buy” not in a strict monetary sense, but as a moniker for code or components that get pulled into the physical boundary of your application. This includes both open source components and commercial products, in the form of source code you pull into your project, or binaries you install and run with your applications’ infrastructure. We all do this all the time.

But the cloud brings a third option to the table: rent. I define this as a service you integrate with via some API, which runs outside your application’s physical boundary. This is where smart developers see an opportunity to shave more time and cost off of projects while maintaining—or even increasing—the quality of functionality.

He also lists our top-10 third-party "rental" services, including Postmark, Pingdom, and Arrow Payments. (I'm using a couple of them as well.)

Tuesday 27 November 2012 09:52:37 CST (UTC-06:00)  | Comments [0] | Business | Windows Azure#
Wednesday 21 November 2012

Well, that was fun. I've just spent the last three days organizing, upgrading, and repackaging 9,400 lines of code in umpteen objects into two separate assemblies. Plus I upgraded the assemblies to all the latest cool stuff, like Azure Storage Client 2.0 and...well, stuff.

It's getting dark on the afternoon before the U.S. Thanksgiving holiday, and I'm a little fried. Goodbye, 10th Magnitude Office, until Monday.

Wednesday 21 November 2012 15:50:56 CST (UTC-06:00)  | Comments [0] | Cloud | Windows Azure#
Search
On this page....
First post-Azure electric bill
Things I might have time to read this weekend
Weather Now bug fixes deployed
Azure training...?
Weather Now 4.0 in Production
That's all he wrote
While the data uploads...
The Inner Drive Technology International Data Center's last day
Weather Now 4.0 released to Beta
Almost done with Weather Now's upgrade
March? What do you mean, March?
Happy 12-hour Monday!
The very bad week of Microsoft Windows Azure
Two Microsoft Azure outages in 24 hours
When the Azure emulator is more forgiving than real life
Under the hood of Weather Now
New 10th Magnitude blog post
Azure table partition schemes
Why this last Azure move is taking so long
Performance improvement; or, how one line of code can change your life
Another reason to finish moving to Azure
Debugging our first Azure 1.8 deployment
Build, buy, or rent?
All done with the code reorg
Countdowns
The Daily Parker +2743d 08h 38m
Parker's 7th birthday 28d 04h 35m
To West Coast 40d 18h 25m
My next birthday 108d 21h 03m
Categories
Aviation (241) Baseball (92) Biking (26) Chicago (671) Cubs (148) Duke (129) Geography (255) Jokes (98) Kitchen Sink (485) London (2) Parker (164) Daily (203) Photography (123) Politics (294) US (891) World (178) Raleigh (18) Religion (53) San Francisco (67) Software (165) Blogs (48) Business (158) Cloud (52) Cool links (107) Security (75) Travel (67) Weather (572) Astronomy (66) Windows Azure (24) Work (14)
Links
Archive
<May 2013>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Full archive
Blogroll
About
David Braverman and Parker
David Braverman is a software developer in Chicago, and the creator of Weather Now. Parker is the most adorable dog on the planet, 80% of the time.
Legal
All content Copyright ©2013 David Braverman.
Creative Commons License
The Daily Parker by David Braverman is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License, excluding photographs, which may not be republished unless otherwise noted.
Admin Login
Sign In