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 $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”

Initial Files Created in the MVC3 Website Script Folder

When creating a new MVC project, a dozen or so JavaScript files are included by default in the Scripts folder. I haven’t been able to find any documentation on which ones should be included in a page in what situations, so I’ve put together the information in this article.

Continue reading “Initial Files Created in the MVC3 Website Script Folder”

SharePoint and Chrome

I’m a SharePoint user and a Chrome user. Unfortunately, that’s not a good combination.  With the release of SharePoint SP1, Chrome joins that crowd as “officially supported, with limitations”. The limitations refer to some enhanced browser experiences that depend on ActiveX controls aren’t available. Not a big deal. I sometimes miss the Datasheet View, Explorer View, and Multiple File Upload, but I don’t use those features very often.

What’s more annoying is the file open functionality. Chrome insists on downloading files first before they are opened, which is at odds to SharePoint’s approach for editing a document. When I open a Word or Excel file stored in SharePoint from IE, the file path remains the http path to the document in SharePoint. This enables the transparent experience of checking out and in, and saving the document directly back to SharePoint. In Chrome, I have a document stored in my local Downloads folder, so I have to save it and then manually re-upload it. Yuck.

To workaround this, I would just remember to use IE when working with SharePoint. But the problem is that Chrome is my default browser and I get a lot of links to SharePoint documents that are sent to me by email. My workflow has been to click on the URL (which launches Chrome), remember I need to use IE, copy the URL, open IE, and pase the link into it.

So, I tried an IE Tab extension for Chrome today. I evaluated a few that were available and settled on IE Tab Multi. This extensions provides the ability to launch IE as a tab within Chrome. It has an ability to auto-detect URLs, so I entered the SharePoint site I use. It works great. Unlike the other, more download IE Tab extension, this one doesn’t suffer from a double authentication side-effect.

So, now my workflow is simple: click on the link. Chrome opens and my document launches just the way it would if I was using IE directly. As a bonus, I now get to use the full SharePoint experience without those “limitations”.


Intro to Responsive Layouts

Recently, I’ve started to work on creating websites with responsive layouts. Responsive layout design means that the presentation of the website is adjusted to improve the fit at different resolutions. In the past, I have usually targeted 1024 as the minimum horizontal resolution that is needed for an optimal experience. But with phones and tablets being used more to browse the web, it’s becoming more important to give a first-rate experience to visitors using mobile browsers as well as desktop ones.

Unlike desktop browsers, mobile browsers automatically zoom out the page to fit the availability device resolution, so the user doesn’t have to deal with horizontal scrolling (unless zoomed in). The downside is that text gets cramped and hard to read, and clickable buttons and links are hard to tap accurately. Mobile-specific versions of website have been created to solve this problem. This made sense when mobile devices were primarily low-resolution phones. But recent model phones and tablets have much better resolutions that are capable of delivering a better experience than that offered by the low-resolution mobile-specific version of a website. What’s really needed is a modified desktop experience that is optimized to provide better legibility and usability on the reduced resolutions of mobile devices. Enter responsive design.
Continue reading “Intro to Responsive Layouts”

Markup Rendered by ASP.NET MVC HTML Helpers

ASP.NET MVC providers a number of HtmlHelper methods for rendering markup based on the view model.
The general strategy used by the helpers is:
  • A helper that directly correlates to the input type renders without any additional decoration of the markup.
  • The Editor(For) and Display(For) helpers may render addition CSS classes or specialized markup.
  • When a complex type is passed to the Editor(For) and Display(For) helpers, then container markup surround each simple type within the complex type.

Continue reading “Markup Rendered by ASP.NET MVC HTML Helpers”

Firefox-Specific Problem with Google Font API

We started using the Google Font API recently to present our websites with type faces that are a bit more interesting that the standard Arial, Georgia, Verdana, and Times New Roman font available in all browsers. It’s very easy to use and the performance overhead is relatively small. Plus, the font choices are very high qualify and free.

However, for some reason, it wasn’t working in Firefox–even though it’s documented to be supported in version 3.5 and above. The odd thing was that the fonts rendered correctly from Google’s website, but not our own. We created the following simple test page to test in a variety of circumstances, and found that the problem only existed within our corporate network:

<!doctype html>
<html lang="en">
    <meta charset="utf-8">
    <title>Font-Face Test</title>
    <link href="" rel="stylesheet" type="text/css" />
    <style type="text/css">
        h1 {font-family:"Lobster", Arial, serif; font-size:200px;letter-spacing:-1px;line-height:1;margin:0;-webkit-text-stroke:1px transparent}
        Testing 1, 2, 3.</h1>

After a little investigation, we found the culprit. Our firewall is configured to automatically strip any HTTP headers that are not in a recognized list. For Google Font API to work in Firefox it is important that the Access-Control-Allow-Origin header be present. After adding this to our allowed headers list, the problem was solved.

Write better CSS with Sass and Compass using Visual Studio

I am pretty new to Sass and Compass, and I’ve experienced a learning curve with integrating it into my web development process. In this article, I’ll share my experiences with the technology and how I set it up and used it in a Visual Studio .NET environment.

Continue reading “Write better CSS with Sass and Compass using Visual Studio”

Consumption of Data in MVC2 Views

The following data sources are implicitly available as properties of a View:

  • ViewData
  • ViewData.ModelState
  • ViewData.Model (or more simply just Model via a shortcut property)
  • TempData

TempData is a special case that has been previously covered. The other three all relate to ViewData, but are substantially different from each other. Understanding these differences is important; otherwise it can lead to unexpected behavior when reading and writing ViewData and Model values.

Continue reading “Consumption of Data in MVC2 Views”