Blog Splash

New Video, Social Bookmarking

by Kerido Sunday, December 5, 2010 3:21 PM

We've added a new demo video on the KO Approach home page. Check it out in High Definition. Also, the new Share menu is here to help you spread the word about KO Software.

Changing the Hosting Provider

by Kerido Monday, April 26, 2010 4:22 PM

We're currently in the process of moving to new hosting – a decision we've been lingering on for quite a while, but finally... well, we are fed up with our current provider, 1and1.

For a long time this website has been hosted using 1and1's shared hosting plan called MS Business Package. We purchased it back in 2006, but since then not only hasn't the service improved, but it actually got much, much worse! So I would like name at least four reasons why no one should purchase shared Windows hosting from 1and1.

Substandard Domain Setup

The good thing about 1and1 is that they allow three top level domains with their shared hosting packages for free. They also claim that you can have an unlimited number of sub-domains.

That's the end of the good news, because if you want to set up individual ASP.NET web sites on either top level domains or sub-domains, you can only define up to five. No matter how many total domains you will create, you can only have up to 5 individual ASP.NET Web applications per hosting package!

In a typical scenario where you would want to map each domain to a corresponding directory inside your hosting space, chances are that most of your domains/sub-domains can only be used for serving static content (HTML, CSS, graphics) or plain old ASP.

Outdated Technologies

It's the year 2010 now; however 1and1 still don't provide ASP.NET AJAX with their hosting packages. You are only limited to using ASP.NET version 2.0. While many hosting providers are readily offering ASP.NET 4.0, 1and1 is almost five years late!

Since you are only limited to the .NET Framework version 2.0, there is quite a bunch of other fun features that you won't have access to: LINQ, ASP.NET MVC, WCF, and many others. And of course, you'll have to write more code to achieve similar functionality.

Extremely Frequent Outages

1and1 claim "99.9% uptime". Well, this is pure flam. 99.9% uptime amounts to 365 x 24 / 1000 = 8.76 hours of downtime per year. In one of my previous posts I wrote about a tool that we made in order to measure uptime more precisely. We only have data for the last four months, but it already reports 6.84 hours of downtime! So according to the calculations, measured uptime is only 99.65%. But more importantly, downtime is 3.5 times greater than promised.

But that's not all. Just look at the following screenshot:

Outage period lasting more than five days

When I said "6.84 hours of downtime", I purposely didn't take into consideration the outage period highlighted in red.

As it will further be clear, the server, on which our website was hosted, got completely broken. But in this case the admins must quickly restore all files from a recent backup, and move them at least onto a temporary server. I guess, the customer shouldn't even be involved! But instead, we had to call their customer support for more than ten times. And in the end, the files weren't restored anyway.

Poor Support

I will specifically explain our conversations with the support guys. But let me start with some general information.

1and1 doesn't offer the "live chat" support option. You can, however, dial the toll-free phone number. It is likely that the answering person will have an extremely poor knowledge of English. There is also an option of writing an email. I've used it twice, and both times it took the support team more than a day to answer.

But even though they actually answer, they don't give you real information, just stubs! If you're having a technical problem, all these guys can do is writing a ticket for actual administrators. There is no way they can transfer you to the very person responsible for resolving your problem. So it is very likely that the answer that you will get either over the phone or by email is "we are still working on it".

Now let me get back to the last outage incident. It took us several phone calls to find out that the outage is caused by a breakage of the server. To me it was pretty obvious from the very beginning. The support guys promised that they will fix the problem within 12 hours.

After about 36 hours of downtime nothing was fixed. I called 1and1 support again and told them to move our files to another server as soon as possible so that our website be up and running. The support guy who could barely speak English promised me that they will try to restore our files. In 24 hours there was nothing.

We called several more times, but it just didn't help. I even tried to restore the files myself, but all FTP access was down as well! On the third day I was finally able to access my FTP. What I found there was a backup aged about 5 months. But even this outdated backup was incomplete and that the website didn't work anyway!

So I called again and again demanding that a recent backup set be used instead. Keep in mind that every time I was on the phone, there was a guy with extremely poor spoken English.

Finally I got an email saying that the most recent backup had been already restored. Of course, nothing changed and the web site remained down.

Conclusion

Immediately after receiving the last email from 1and1 we restored the files manually. Then I made another phone call asking to explain how to move my domains to a different hosting provider. The irony is: the guy who was on the phone spoke perfect English and gave me precise and detailed instructions. So it turns out that 1and1 can only give good support to the least loyal customers when they are moving away.

My advice is simple: run as fast as you can from 1and1. You're better off paying extra ten bucks for a quality service instead of this crippled hosting with no respect for the customer.

Content Updates

by Kerido Friday, April 16, 2010 3:43 AM

I've updated KO Approach screenshots to make them appear more Windows 7 style. Also, the Buy Now page has been updated to look consistently with the Website.

This has been somewhat a hectic week. I'm gonna be off to Paris on Monday and Tuesday. Hopefully, after that we can concentrate on further Approach development. Take care,

Kerido

Permanent Redirect Using ASP.NET

by Kerido Monday, February 22, 2010 7:49 AM

As Google recomments, when changing a website's domain name, you should add the HTTP 301 "Moved Permanently" status to the old address. To my shame, I always thought this is what HttpResponse.Redirect is about. However, using the latter produces the HTTP 302 status which is semantically somewhat different.

A trivial task that ASP.NET has no pretty code for. Here is a convenience class that does the job:

public static class HttpResponseUtility
{
  public static void PermanentRedirect(HttpResponse theResp, string theUrl)
  {
    PermanentRedirect(theResp, theUrl, true);
  }

  public static void PermanentRedirect(HttpResponse theResp,
    string theUrl, bool theEndRequest)
  {
    theResp.Redirect(theUrl, false);
    theResp.StatusCode = 301;  // as opposed to 302 set by Redirect

    if(theEndRequest)
      theResp.End();
  }
}

With this class in place, you simply call the following from a page:

HttpResponseUtility.PermanentRedirect(Response, newUrl);

Also, if you use .NET version 3.5, an extension method would do an even better job (notice the this keyword):

public static class HttpResponseUtility
{
  public static void PermanentRedirect(this HttpResponse theResp, string theUrl)
  {
    PermanentRedirect(theResp, theUrl, true);
  }

  public static void PermanentRedirect(this HttpResponse theResp,
    string theUrl, bool theEndRequest)
  {
    theResp.Redirect(theUrl, false);
    theResp.StatusCode = 301;  // as opposed to 302 set by Redirect

    if(theEndRequest)
      theResp.End();
  }
}

Your client code would then look even prettier:

Response.PermanentRedirect(newUrl);

Monitoring Site Uptime

by Kerido Wednesday, February 10, 2010 8:46 AM

I'd rather not mention the name of my hosting provider, but I'm definitely dissatisfied with their service. In the beginning of February I started monitoring website uptime.

The idea behind the tool I've written is simple. The program runs as a service on a dedicated machine and periodically queries a known resource on the website. The query intervals are adjustable. Currently I've specified them as follows:

  • every 30 minutes if the resource has been successfully accessed;
  • every 5 minutes if the resource cannot be accessed.

This is actually the main reason I decided to write my own tool – you only get hourly monitoring from free services. If you want more frequent pings, you have to pay. And I'm just too old school to pay for this.

If the resource on the website cannot be reached, the tool tries to determine if the server on which it is running, has no connection. To do so, it queries a so called trusted URL. Finally, the site is considered down only if the trusted URL can be reached.

Another concept I put into the tool is analysis. The program automatically displays downtime intervals: start time, end time and duration. Given the sum of these intervals, I calculate total uptime, total downtime, and most importantly, relative uptime. I can perform this kind of analysis for various periods.

After a couple of weeks of monitoring I guess, the hosting provider is somewhat cheating with numbers. They promise 99.9% uptime. My tool shows a more truthful figure.

It makes sense to monitor your website uptime because you need to know what you're paying for. If anybody is interested, I'll probably publish the source code some time later.