# Monday, September 7, 2015
Monday, September 7, 2015 4:20:00 PM (GMT Daylight Time, UTC+01:00)
# Sunday, September 6, 2015

Today I am grateful for an afternoon yesterday at the Chicago History Museum.

Today I am grateful for my first visit to Waldo Stadium in Kalamazoo and for a Spartan victory last night! ‪#‎GoGreen

Today I am grateful that I get to spend so much time with passionate developers and entrepreneurs.

Today I am grateful for the pleasure and privilege of raising of my son Tim, who turns 21 today.

Today I am grateful to the Azure support team, who fixed my web site, even though it was totally my fault.

Today I am grateful that my cousin Sharon is cancer-free and her ovarian cancer is in remission following 3 months of chemo and radiation treatments.

Today I am grateful for a minor league baseball game last night.

Today I am grateful that my custom Illinois license plate finally arrived after months of delays.

Today I am grateful to all the Purdue students who came out to yesterday's Microsoft event.

Today I am grateful to be able to ride my bike to work.

Today I am grateful that my bike is repaired and fit to ride for the first time in years.

Today I am grateful I got my Angular Service demo working yesterday.

Today I am grateful that, for the first time in over a decade, I am living in a place of my own choosing.

Today I am grateful that, although I lost money on my house sale, I did not have to bring a check to the closing to cover any of the mortgage principle, as some folks in Michigan have done.

Today I am grateful for a day in East Lansing and an evening with the local user group communities.

Today I am grateful for an excellent evening with the Great Lakes Area .NET User Group - one of my favourite tech communities. Missed you guys! It's been too long. #MIGANG http://migang.org/

Today I am grateful to spend a few hours with my mother in her new home last night.

Today I am grateful for: 1. Selling my house yesterday 2. Dinner with Michele 3. Patrick providing me a place to stay last night.

Today I am grateful for 11+ years in this house.

Today I am grateful for coffee in Minnesota with Derek yesterday.

Today I am grateful for: 1. My first game at Target Field 2. Speaking for the first time at #MidwestJS.

Today I am grateful to Sarah, Brian, Brian, Paul, and David, who made me look good with all their hard work at #ThatConference this week.

Today I am grateful to those that work so hard and make #ThatConference great every year.

Today I am grateful for so many good conversations yesterday.

Today I am grateful for a busy, hectic, crazy, productive, successful first day at #ThatConference.

Today I am grateful for seeing so many old friends yesterday.

Today I am grateful for all I've learned about AngularJS this past week.

Today I am grateful for my son's new job offer.

Today I am grateful for: 1. Lunch with Manohar yesterday 2. A good crowd for my presentation last night at the .NET meetup.

Today I am grateful that nearly all of my possessions are now in Chicago.

Today I am grateful to Ondrej, who drove over 600 miles yesterday to help me move.

Today I am grateful for all the things I sold, gave away, and threw away the past few days.

Today I am grateful for dinner in Dexter last night with my sons, Nick's girlfriend, and her parents, who I met for the first time.

Sunday, September 6, 2015 4:17:38 PM (GMT Daylight Time, UTC+01:00)
# Wednesday, September 2, 2015

One of the nice things about Azure storage is that Azure always makes extra copies of your data. How and where those copies are made is up to you.

In the current Azure portal, you select the REPLICATION property of a new Storage Account; In the Azure Preview Portal, you select the Storage Account Type.

In both cases, the options are:

  • Locally Redundant
  • Geo-Redundant
  • Read-Access Geo-Redundant
  • Zone Redundant

Here is an explanation of each type:

Locally Redundant

Three copies of your storage data are created - all within the same region. No two copies will reside in the same Fault Domain and no two copies will reside in the same Upgrade domain.

This provides fault tolerance in case of the failure of one of the machines on which a copy of the storage account is stored. If the entire data center goes down, no copies of your data will be available.

This is the cheapest of the available redundancy options.


As with Locally Redundant storage, Geo-Redundant storage also creates 3 copies of your data on separate fault domains and update domains in the same data center. But it also creates 3 more copies of your data in another region - typically the region nearest the primary region for this account. For example, if you select North Central US as your storage account's primary region, the account data will be replicated in the South Central US Region.

Once this cross-region replication occurs, you are protected from data loss, even if an entire Azure region fails.

Read-Access Geo-Redundant

Read-Access Geo-Redundant storage is identical to Geo-Redundant storage, but it also provides read access to data stored in the secondary region,

Zone Redundant

Three copies of your storage data are created and stored in at least 2 geographically disparate data centers. These data centers may or may not be in the same Region. This provides fault tolerance, even if an entire data center fails.

Zone Redundant Storage Accounts only support Block Blog storage, so selecting this option will limit the uses of your Storage account.


Data within a region or data center is always distributed across multiple update domains and fault domains to protect against most hardware failures or planned maintenance downtime.

Replication within a data center is an atomic operation. In other words, success is not reported to the client until all 3 copies have been successfully written.

Replication to a secondary data center is done asynchronously and typically completes after success has been reported to the client. The good news about this is that clients don't experience any latency when writing to one of a Geo-Redundant storage account. A potential downside is that there is that data in the secondary data center is eventually consistent. If the primary data center fails, it is possible that not all data was written yet to the secondary data center.

Geo-Redundant and Read-Access Geo-Redundant are very similar - both create 6 copies of your data spread across two regions. The difference is that in a Geo-Redundant scenario, the data in the secondary region is only accessible in the event of a failure in the primary region. If all 3 copies of the data in the primary region are unavailable, Azure will fail over to a copy of the data in the secondary region. This also holds true with Read-Access Geo-Redundant, but you get one more benefit: users can access a read-only copy of the data in the secondary region, even if there is no failure in the first region. This can make for greater availability and access speed for users. This also explains why Read-Access Geo-Redundant is the most expensive option. It's the only option that allows users to read copies of the data.

Which Should I choose?

For maximum performance and reliability, Read-Access Geo-Redundant storage is your best option. But this is also the most expensive option. If you are very cost-conscious or if the government requires you to keep data within specific geographic boundaries, you should consider Zone Replication. Geo-Redundant storage is a good compromise between these two options for most scenarios.

Wednesday, September 2, 2015 1:08:06 AM (GMT Daylight Time, UTC+01:00)
# Monday, August 31, 2015
Monday, August 31, 2015 10:11:00 AM (GMT Daylight Time, UTC+01:00)
# Thursday, August 27, 2015

Learn how to deploy to an Azure web app from a local Git repository.

ALM | Azure | GCast | Video
Thursday, August 27, 2015 9:30:00 PM (GMT Daylight Time, UTC+01:00)
# Tuesday, August 25, 2015


Now in its fourth year, That Conference is one of the premiere developer community events in the Midwest. Most attendees come from the upper Midwest, but dozens of speakers traveled from all over the country to share their knowledge.

Like many code camps, That Conference features classroom-style presentations, an Open Spaces area for interactive discussions, booths for attendees and sponsors to interact, and food (good food!) in a common dining area.

What sets apart That Conference is its emphasis on family. The conference drew 800 attendees and speakers, but nearly 400 family members accompanied them. It was not uncommon to see strollers pushed down the conference hallways between sessions.

Family attendance did not happen by accident. That Conference is held at the Kalahari resort, which features a huge water park - ideal for family activities. The conference even reserved the water park one evening after the normal closing time for the exclusive use by attendees and their families. Best of all, the conference organized a kids' programming track to teach children about software development and computer science in a fun and engaging way. In fact, many of the sessions in this track were delivered by children - usually the kids of attendees or speakers. DavidAndDavid

I was happy to be a part of That Conference this year - as a sponsor, speaker, and attendee.

As a sponsor, I coordinated Microsoft's presence at the event. Microsoft was the Principal sponsor (the highest level available) and we promoted the theme "Microsoft Is Open" to emphasize Microsoft's support of Open Source Software and non-MS technologies.

As a speaker, I delivered a presentation titled "Microsoft Azure Without Microsoft" in which I talked about how developers using Open Source and other technologies could take advantage of the Azure platform. I organized an open space after my session where I heard how others are using Azure with their own sets of tools. Two people from a nearby open space ended up joining my group.

As an attendee, I sat in on a couple sessions (Wade Wegner's talk on Azure Apps was very interesting), sat in a couple open space discussions, and had numerous conversations with others at the conference. It was great sharing ideas with developers from different technologies and geographies.

DavidAndSeth I was excited to be interviewed by both Seth Juarez of Channel 9 and by Jason Young and Carl Schweitzer for their excellent MS Dev Show podcast. I conducted a few interviews of my own, which will be released over the next few weeks at Technology and Friends.

MaxLynch Of course the content was great and included keynotes from software craftsmanship advocate Robert “Uncle Bob” Martin, Ionic framework creator Max Lynch, and FBI Special Agent Byron Franz, along with breakout sessions on a wide variety of technologies.

I wish I could have attended more presentations at That Conference, but I came away with some new connections, some new ideas, and a lack of sleep. 


That Conference Home Page

My Photos of That Conference

Tuesday, August 25, 2015 4:45:04 PM (GMT Daylight Time, UTC+01:00)
# Monday, August 24, 2015
Monday, August 24, 2015 9:46:19 PM (GMT Daylight Time, UTC+01:00)
# Saturday, August 22, 2015

Last week, I had a chance to attend, sponsor, and present at the Midwest JS conference in Minneapolis, MN.

I was excited because, I used to do a lot of web development but switched to other technologies a few years ago. During my time away from web development, JavaScript technology has had some amazing advances as many frameworks were created, rose to great popularity and fell out of favor to be replaced by a new framework. I watched from a distance as the web I knew changed from mostly server side code generating HTML to powerful client-side code calling back-end web services and dynamically updating content in the browser. Although my historical experience began with "classic" ASP and continued through ASP.NET Web Forms and MVC, I've spent the past few weeks learning how to build a site with Angular.

This conference featured very little Microsoft technologies and most of the attendees did not development with Microsoft tools. A quick glance around the room revealed more Macs than PCs. I was nervous because I didn't know many attendees and speakers and because I didn't know how they would respond to a Microsoft employee in their midst.

It turns out that I worried for nothing. I met so many people who were interested in hearing about what Microsoft was doing. Our support of open source technologies the past few years really resonated with this crowd and there was a lot of interest in tool like TypeScript.

I created a talk on Microsoft Edge - the new browser that ships with Windows 10 and replaces Internet Explorer. The audience was interested in the speed of this browser (it's a total rewrite of the rendering engine) and with its support of web standards. During Q&A, one attendee expressed frustration that the Edge team had not announced a version for the Mac.

It wasn't long ago that a non-Microsoft conference would have also been an anti-Microsoft conference. But I experienced none of this. Everyone I met kept an open mind about other technologies - including ours. And I learned a great deal from them about the tools and frameworks that they embrace.

I left with a favorable experience of the JavaScript community and a desire to connect with them more. Of course, my education in this area continues as I try to catch up with the advances of the past 4 years, but conferences like Midwest JS help.

Saturday, August 22, 2015 3:48:07 PM (GMT Daylight Time, UTC+01:00)
# Thursday, August 20, 2015

In this screencast, I show off some of the features of Microsoft Edge - the new browser included in Windows 10 - that help end users be more productive.

GCast | Video | Web
Thursday, August 20, 2015 4:14:00 PM (GMT Daylight Time, UTC+01:00)
# Monday, August 17, 2015
Monday, August 17, 2015 9:41:30 PM (GMT Daylight Time, UTC+01:00)