A Brief History of Microsoft Azure

Microsoft’s cloud computing platform, Azure, is now five years old. I remember reviewing an early version of Azure in 2011, and my major takeaway was that the documentation describing Azure services and capabilities was incomprehensible, and the web-based user interface was difficult to use. Having had experience with Amazon Web Services, I thought Microsoft was going nowhere in their efforts to deliver a competitive alternative.

Continue reading A Brief History of Microsoft Azure

Hulu Queue Management Design Problems

I have Hulu on Apple TV and Roku devices, and I really struggle to understand why each experience is so uniquely flawed. I think the developers are so focused on surfacing their content in immersive ways that they haven’t actually asked anyone that uses it in the real world for their experiences. So, here is my feedback (Hulu dev team, hope you are listening).

For those not familiar with Hulu concepts, the basics are this. Hulu’s special niche is their availability of current season TV shows from most major networks. Often, the number of episodes is limited to the most recent five or so. Hulu has a queue, which you can add to, to keep track of shows you want to watch. They also have a favorites feature that has the handy behavior of automatically adding new episodes of a show to your queue.

The queue management features sound good. But here are the issues…

Continue reading Hulu Queue Management Design Problems

How To Buy a New Car

In a future socialist utopia, a car buyer will be able to confidently walk into a dealership and pay the same price as everyone else buying the same type of vehicle. But, alas, in today’s free economy and capitalistic regime, we must each fend for ourselves at the dealership. And guess what, most folks are paying thousands more dollars than they need to for their new car. That’s because car dealerships are the enemy of the car buyer. Upfront price quotes are often meaningless. Competitive quotes are misleading. Advertised specials are not so special. They just want to get you to the dealership, because once you’re there the real magic begins!

Every step of the car buying process is fraught with danger. You will be misled. You may think you got a great deal while the salesperson is in the other room high-fiving and making “ka-ching” sounds to his colleagues. Some dealership staff come across as cocky, sleazy, arrogant, or just plain “car-salesman-ey”, while others are courteous, professional consultants ready to provide crucial support in your car buying endeavor. But make no mistake, no matter what the behavior and attitude is of the staff, they share one thing in common—they have many strategies to invoke during the car buying process with the singular goal of separating you from as much money as possible. Even the nicest salesperson follows a dealership protocol designed to maximize the salesperson’s cut and the dealer’s profit.

Continue reading How To Buy a New Car

Problems with Sitefinity Event Dates

I’ve hit quite a few issues while building a page that displays events in Sitefinity using just the out-of-box functionality. Along the way, I’ve logged a few support issues, but I decided to write it up from beginning to end to clear my mind and hopefully save others from getting stuck with similar problems.

Continue reading Problems with Sitefinity Event Dates

Why Entity Framework Include Method Doesn’t Always Work

I recently had a problem with the following code not working as expected:

var services = context.Benefits
    .Include(b => b.Services.Select(s => s.ServiceCategory))
    .SelectMany(b => b.Services)

I’m using a Select within the Include to load the ServiceCategory object associated with each Service in the Services navigation property of the Benefit object. I’ve used Include a lot in the past and never had a problem until now.

As it turns out, Include does not work if you change the shape of the query after specifying the Include method. In my case, SelectMany caused the shape to change from Benefit to Service.

Fortunately, the solution is simple. Specify the Include after changing the shape as follows:

var services = context.Benefits
    .SelectMany(b => b.Services)
    .Include(x => x.ServiceCategory)

I found the solution, and an explanation for this behavior, in an MSDN blog post.

Not the Best Microsoft Experience

Today I received an email from Microsoft regarding an Annual Maintenance Notice for the Microsoft Certification Program. I haven’t logged into the MCP for a long time, so I thought I would take a look to see what nice improvements I might see. It was nice that the email included my MCID, so that saved me a minute looking it up. I was required to also provide an access code. Those are only good for 12 months, so I knew that the one I had previously used had expired. I followed the link to get a new access code. Here’s where things started to go wrong…

Continue reading Not the Best Microsoft Experience

Domain Registration Prices

I buy domains from time-to-time for potential resale value. The total annual cost is the most important factor when choosing a domain registration company. I usually use 1&1, but I’ve had a tricky, on-going customer service issue with them recently, which has given me cause to evaluate other options. The chart below summarizes recent findings for .com prices. I only considered well-known companies. I included the private registration option because I like to have this feature included on domain purchases.

First Year
Special Pricing
1&1 (pricing) $10.99 $3.99 Free
Namecheap (pricing) $10.87 No Free
Name (pricing) $10.99 $9.99 +$3.99/year
GoDaddy (pricing) $13.17 $7.99 +$9.99/year
Network Solutions $34.99 No +$9.99/year
register.com $38.00 No Free

From a value perspective, 1&1 remains the top-choice, with Namecheap a close second. Since I’ve had some issues with 1&1 and their domain management tools are not great, I’ll be giving Namecheap a try.

Warning: Schlage F-series Door Knobs

Here’s a word of warning for anyone in the market to buy new door knobs. We recently replaced the door handles, knobs and deadbolts throughout the house. We liked the look of one of the Schlage designs and bought them all online from a company that also rekeyed the locks to the same key.

Then we installed the door knobs and found that the interior knob is always unlocked to allow free egress at all times. Let me explain what this actually does. When you turn the lock button on the inside, the outside is locked, thus preventing anyone from opening the door from the outside. But with this apparent “convenience” feature, we can still open the door from the inside without unlocking it.

Let me know walk you through a typical day in the Clarke household. A night we check to make sure the doors are locked. Can I remember now whether the door is locked when the button is in the horizontal or vertical position? No, I can’t. But no problem, I’ll open the door again and test to see if the outdoor knob turns. Ok, now I know it’s locked. In the morning, it might be the kids, or my wife or me that goes out the door first. We now have a very important responsibility. Before closing the door, first check to see if the outside knob turns. It doesn’t? Ah, this must be the first person to leave the house today, so we turn it, because otherwise we’ll be locked out. The only problem is that our kids are too young to understand this concept, but they are old enough to play with the little think in the middle of the knob and turn it just for fun.

Schlage, are you reading this? Did you seriously think this was a good idea? Come on!

I would just return them and buy different ones but it took six weeks to get the front door handleset installed due to us a having a thicker than usual front door and Schlage requiring several service calls and three shipments for us to eventually get the parts needed to install the handleset. And now I’ve got most of the other doors knobs installed I really don’t want to return take it all and send it back. Did I mention that I’ve thrown out the original packing and the old locks?

Stay clear of the Schlage F-series locking door knobs.

To Apple: How To Improve iOS

iOS, the operating system that runs on the iPhone and iPad, provides a pretty good experience for getting the most out of mobile device. iOS is at version 5 now, and while innovation continues unabated, there are some day-to-day annoyances that still haven’t been addressed. In this post I’ll share some simple (and a few not so simple) improvements that I’d like to see implemented to address some remaining usability issues.

Continue reading To Apple: How To Improve iOS