Switched my web site to DreamHost

I switched from my ASP.NET host (at Crystal Tech) to a LAMP host (Dream Host). I really hadn’t been using the ASP.NET features at all and the cost was about $10 more a month than I could spend elsewhere. After some searching, I decided on DreamHost. The prices are competitive, the features are competitive, the employees are active, and they are carbon neutral/green hosts. Their control panel is extensive (and generally very easy to use!) and the set of features they’ll allow you to tweak, although not endless, is significantly higher than other hosts I’ve used. ASP.NET hosts tend to be extremely locked down and unnecessarily expensive.

The also offer unlimited storage (who doesn’t besides ASP.NET sites these days), but also they legitimately allow you to store up to 50GB of personal data – as an offsite back up if you want. That’s unique. With a few  clicks, you can configure Google to be your host of e-mail and calendars as well.

I’ve created a promo code for them which offers $50 off and 1 free lifetime unique IP address.

234x60

The Promo code is WIREDPRAIRIE1 (make sure you type it in when prompted during sign-up to get the promotion!).

If you’re not able to read this ….

Sorry, that means I haven’t successfully created an Apache .htaccess file redirecting all of the various feed URLs to Google’s FeedBurner. I’ve looked at the 404 logs though and think I’ve covered all of the files/options I’ve used over the years.

If you are reading this, thanks!

I’ve also added a CNAME entry to my DNS settings for WiredPrairie for my photos, so that it uses SmugMug more discretely now …. You can find my public photos at photos.wiredprairie.us now.

A forgetful DSL modem….

Our household DSL modem, which is generally very reliable, occasionally, and mysteriously seems to forget a setting that I like to enable. I don’t know why, and I’ve never determined whether there’s a pattern to the loss or not (like maybe it’s every 30 days or some crazy thing like that).

Tonight, I finally decided to attempt to fix the problem in the simplest way I knew how: write some code.

Thankfully, the DSL modem has a simple web based management system with basic authentication.

So, I’ve set up a scheduled task on my Windows Home Server every 45 minutes to call into this console application:

using System;
using System.Net;
using System.IO;

namespace SendHttpCommand
{
    class Program
    {
        static int Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("SendHttpCommand requires 3 parameters in this order:");
                Console.WriteLine("    username");
                Console.WriteLine("    password");
                Console.WriteLine("    url");
                return -1;
            }
            Uri uri = new Uri(args[2]);
            HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
            request.Credentials = new NetworkCredential(args[0], args[1]);
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            try
            {
                if (response != null)
                {
                    using (Stream receiveStream = response.GetResponseStream())
                    {
                        StreamReader readStream = new StreamReader(receiveStream);
                        string result = readStream.ReadToEnd();
                        Console.WriteLine(result);
                    }

                }
            }
            catch { }
            finally
            {
                response.Close();
            }

            return 0;
        }
    }
}

It literally was 10 minutes of coding, and 2 for testing. And now the DSL modem setting should generally always be set the way I like it (except for the 45 minute window). The program could be smaller by removing the response reading portion – but I thought it was more interesting that way, so I left it in.

Ever had to maintain a large platform used by many developers over many years?

Read first: 2 years ago I gave up on Silverlight.

I read inexperience into that post.

It’s very difficult to build a big platform and maintain all of the functions over time. Subtle changes to core logic, or derived classes can blow a framework out of the water. I’m of the “seal by default” mindset (although I didn’t get brainwashed by working at Microsoft). Every time you allow someone to inherit or derive, you’ve taken on an additional burden of support. Did you imagine all of the scenarios that would be used by the consumers? Doubt it. Did you imagine that they’d call function X, then Y, and overload Z? Doubt it. Wait for real-world feedback, then decide what’s right. It makes early adopters suffer a bit more, but the long term adopters will thank you for a stable consistent platform.

Interesting is the number of Microsoft responses, including ScottGu (they do actually use the Internet folks!)

What do you think? To seal or not to seal? That is the question (methods/classes/etc.)