DevelopmentNow Blog
 Thursday, November 30, 2006

In the past I blogged about cheap easy offsite backups. Back then I wasn't really looking at Amazon's S3 (Simple Storage Service), but now I realize that it might make for a nice additional backup. I'm still using Mozy for images and videos, but I'd like a better place to store my database dumps, etc than uploading them via FTP to an ISP.

Joseph Scott has an interesting post on comparing storing files on Dreamhost vs S3. One thing I think he's leaving out is the chance that if you fill up your 200gb account at Dreamhost, they might not like that. Jeremy Zawodny has a list of S3 backup tools -- be sure to read the comments for other suggestions, too.

November 30, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [3]



 Wednesday, November 29, 2006

Maybe you've seen some of the new cool web sites that automatically let you import people from your Outlook, Yahoo, Gmail, or other contact lists. That way your users don't have to remember or type in their friend's email addresses ... they just pick from an imported list.

Well I noticed that Plaxo has an Address Book Widget you can embed in your site that allows your site visitors to import contacts from Yahoo, etc. It would probably take you under an hour to implement on your site.

widget screenshot

FYI, the widget is free, but it contains a link to Plaxo.com.

ASP.NET | Code | Web
November 29, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Tuesday, November 28, 2006

Ran across this post from Chris Fulstow on 10 free tools for Visual Studio. And then of course there's the 10 Must-Have Visual Studio Addins on MSDN. And Scott Hanselman's Ultimate Tool List (does the guy ever sleep?).

Since it's tool overload, I'm going to try out three:

WinMerge

WinMerge is a free diff/merge tool. Sure, Beyond Compare is awesome, but it's not free. And I like free. See how WinMerge points out exactly what's different in the lines, rather that just saying "hey these two lines are different somehow." I think that's awesome.

GhostDoc

Ok, I figured out what GhostDoc does. It doesn't generate a help file for you (like I thought when I first read the name) ... it just auto writes the triple-slash XML Documentation comments for you, based on reflection and naming inspection. I usually write summaries for all my methods, but I leave the overridden methods undocumented and let the documentation tool copy the comments from the underlying type. But it's cool that GhostDoc will do that, too. I also don't usually write comments for my method parameters since they're often obvious enough from their name or from the method name (e.g. AddTwoNumbers(int firstNumber, int secondNumber) -- what's your guess on what the params are for?). But I like that GhostDoc will give those documentation anyhow. It feels more "complete" I guess. And definitely makes the generated help files look more professional. The below example is all auto-generated comments.

/// <summary>
/// Appends the HTML text.
/// </summary>
/// <param name="htmlProvider">The HTML provider.</param>
public void AppendHtmlText( IHtmlProvider htmlProvider )

FxCop

We'll see how this one turns out. FxCop inspects your compiled assemblies and lets you know if it has sucky design, naming, performance, security, or localization. I certainly don't expect it to be gospel, but it's probably nice to help point out stuff you've missed.

November 28, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



Mads Kristensen posted an article about an HttpModule to move ViewState to the bottom of the page. It's based on Scott Hanselman's similar blog post.

The nice thing about moving ViewState to the bottom of the page is spiders don't have to sift through it, which means potentially better spidering and search engine ranking. Another benefit is that your page may render faster on browsers since more of the visible HTML is retrieved sooner.

I like the idea of making an HttpModule out of it, because then you don't have to have a custom Page class or anything .. you can just drop the HttpModule into any project & it starts working. Assuming it doesn't have huge bugs, of course. :)

November 28, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Monday, November 27, 2006

So I and some other mobile developers have been discussing where to host a new .NET mobile project: SourceForge or CodePlex?

SourceForge is the defacto choice. It's known, has a bigger community, offers Subversion, and is ahead in general features.

CodePlex is the Microsoft-specific answer to SourceForge. It's an upstart, uses Team Foundation Server as source control (which BTW you don't need Team System to use -- just use the free Team Explorer), but has the M$ money behind it and might be a better place to put a project if you want to get attention from the .NET community. Since it's smaller, you also might have a better chance to get noticed.

Unfortunately, CodePlex seems to be down this morning ... every page is giving me "The server has experienced an error."

Edit: it's back up now ... must have been a momentary thing.

 

November 27, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Saturday, November 25, 2006
A List Apart had a nice article on accessibility and the importance of real-world user testing. And for some reason dasBlog is tripping out on me.

Here's the link: http://www.alistapart.com/articles/workingwithothers/

The article has some nice tips, like viewing your web site in IE6 with the font size set to "Largest" to make sure that your fonts all scale up correctly. But the comments also had some gems, for example a link to this paper about observations of screen reader users and how they navigated sites. Craig Francis also listed a huge number of notes from a recent presentation he was at, with some interesting insights.
November 25, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Wednesday, November 22, 2006
Got an email today about Google Apps for Domains. Basically you can have Google Calendar, GMail, Talk (chat), and Page Creator (wiki) on yourdomain.com. Free during the beta period, and I suspect that Google will soon include other apps like Google docs, too. Get yourself one of those Outlook/Google Calendar sync tools, and you've got a tempting small business solution.
November 22, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Tuesday, November 21, 2006

Some good comments at accessify.com about screen reader testing tools:

Some good points were also raised about sighted developers using screen readers for testing

Adrian Higginbotham: Personally I never recommend anyone to try testing a site with a screenreader product unless they are already a confident screenreader user. you simply don’t use the tool in the same way

Adam Perry: I am sure Adrians comments are correct: a Visually Impaired (VI?) person will use the screen reader in a very different way. Nevertheless I found using a screen reader helped to identify areas of HTML which require improvement (inadequate or missing ALT, TITLE and SUMMARY attributes, for instance).

November 21, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



When developing a web site for screen readers and other accessible browsers, you often have to wrestle with the demands of Section 508 compliance and a nice design.

One WCAG guideline is to provide a "skip navigation" link near the top of the pages. Since you want this link to be available for screen readers, but hidden for normal browsers, your first instinct would be to do something like this:

<div style="display:none"><a href="#content">skip to main content</a></div>

... a bunch of navigation here ...

<a name="content" />
Main content here ...

However, you'd be wrong. I found this screen reader test at Access Matters that indicates that many screen readers try to obey CSS commands, and so many "hidden CSS tricks" like display:none or a 1x1 blank pixel with ALT text end up not getting read aloud by browsers.

It seems like the best solution, if you need to hide the "skip to content" link, is to use something like this

<div style="position:absolute;top:-100px;"><a href="#content">skip to main content</a></div>

Edit: FYI, Jaws and Window-Eyes are the first & second most popular screen readers, at least in 2003 when they commanded 65 & 35 percent of the market, respectively. But more recent articles imply the same thing -- those are the two to support.

 

November 21, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Monday, November 20, 2006

...or, why should I get RAID?

Like I said before, if you're getting a dedicated server for web hosting, you should get RAID. Just get it. But if you really want to know why, keep reading.

How likely is my hard drive to fail?

There are a lot of factors that contribute to hard drive failures.

Usage

If you run your hard drive 24x7, and run applications that read & write the hard drive a lot, that causes more wear on the hard drive than using it infrequently.

Environment

If your hard drive is inside a hot computer case and a hot room, it's more likely to fail.

Expected lifetime: MTBF and Service Life

The mean time between failures (MTBF) for modern hard drives is 50 years or more. MTBF is measured by running a bunch of hard drives for days or weeks and seeing how many fail during that time. That data is then extrapolated out to an MTBF number. You can search on Google or read this tutorial for more info.

However, a MTBF of 50 years does not mean your hard drive will last for 50 years. Instead, it's an average. So some hard drives will last longer, while others will last shorter. Sometimes much shorter.

That MTBF number also assumes you only use your hard drive within its specified service life (usually 3-5 years). So a 50 year MTBF for a hard drive with a 5 year service life means that, if you replaced the hard drive with a new one every 5 years, it should last 50 years on average before failing.

A rule of thumb

Ok, so we really don't know exactly when your hard drive will fail. We do know that you shouldn't use it past the end of its service life, so I tell clients that a rule of thumb for a hard drive with a 5 year service life is that you have a 2% chance that the hard drive will fail in the first year, a 4% chance it will fail in the second year, 8% in the third, 16% in the fourth, 32% in the fifth, and just keep doubling it.

What happens if I lose a hard drive?

Hard drives are near the top of the list of things to fail, and a server with a single failed hard drive can be down for 4, 8, even 24 hours as you and/or the hosting company support staff

  • notice the site is down
  • figure out the hard drive is dead
  • find a replacement hard drive & install it
  • restore your machine by restoring from backup and/or reinstalling & reconfiguring things
  • test to make sure that everything is working correctly and fix any issues

So if you lose a hard drive and don't have a backup web server your site could be down for 8-24 hours depending on your backup strategy & the quality of your support team.

Compare that to the loss of a fan or power supply which can be swapped out in under an hour. Some fans you can even swap out while the server is still running.

You need to think about what downtime means to your company. Will you lose money if your site is down for a day, either through lost sales, departing customers, or uptime fees paid to your clients? Will it be an embarrassment? Remember that sites can often fail at the worst time. Think about what 8-24 hours of downtime will "cost" your company. It could be a dollar amount or something non-monetary.

Then you can multiply this cost by the chance of your hard drive to fail (see the rule of thumb below) to come up with the expected cost to your company due to non-RAID hard drive failure.

So how do I decide to buy RAID or not?

So based on the above rule of thumb, plus the potential downtime, you can estimate whether it's worth paying for RAID or not.

You might decide that up to 24 hours down isn't acceptable at all, in which case you should go for RAID. Otherwise, if it's a potentially acceptable loss, you can think of RAID as insurance. Is the extra cost of RAID more or less than the expected downtime cost?

But what if I have two web servers?

If you're running multiple web servers and load-balancing across them, you might not need RAID, since you can simply direct all traffic to the "good" web server if one fails. Remember, though, that to be able to fail over successfully, you need to be capable of supporting all your traffic on a single web server. Since servers seem to enjoy failing at the worst times (which is often when your traffic is highest), you should expect that it'll be a good amount of traffic on that single server.

If you have two load-balanced web servers and both are at 80% capacity, what happens if one server fails and you redirect all traffic onto the good server? That's right -- your good server will get overloaded & some percentage of your users will get errors and long load times, or even worse your good server will redline and crash, and then you're totally down.

So...thats all for now.

 

November 20, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [1]



I was reading about NewsHutch, yet another web-based RSS aggregator. Although it looks nice.

Anyhow, their blog post about looking for a new services yielded some suggestions on hosting plans. You can skim through the comments and see.

I've personally worked with Hostway and Rackspace in terms of hosting. Rackspace is expensive but has IMO great support and service. Hostway has a decent array of plans but I've had issues with their responsiveness.

Railsmachine seems interesting for RoR shops. SuperbServers seems like it has great prices (2gb Conroe with RAID for $200/mo) -- the question would be how good their service is. I guess at those prices maybe you just buy two web servers & load balance them. There were also a few kudos for ThePlanet, whose prices also seemed decent. 

If you're in the market for a dedicated server, I would highly suggest getting a RAID setup.

November 20, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Saturday, November 04, 2006

Mobile Web Sites in ASP.NET

I've been working on a mobile-enabled ASP.NET application lately, and overall it seems like pages did best when I

  • Used valid XHTML
  • Used as few tables & images as possible
  • Kept styles & scripting to a minimum & put them in a separate css
  • When I wanted to emphasize things I'd use standard tags like h1, h2, em, etc.

Remember that ASP.NET will degrade some of its functionality (e.g. client-side javascript validation) if it thinks the browser can't handle it. Since mobile browsers have a distinct user agent string, that means they'll be treated like a very basic web browser by ASP.NET. So you should make sure that your application still works (and looks ok) by using some emulators to test functionality.

Openwave Phone Simulator

Openwave provides a few versions of the Openwave Phone Simulator that lets you see how your site performs on the Openwave Mobile Browser. It's pretty easy to install -- log in, download the simulator, run it, & type in the URL you want to surf. Note that there are different versions of the simulator based on the browser version to want to emulate. So you can check this list of phones, see which version of the Openwave browser they use, & then get the matching Simulator version. So yes you're probably gonna be downloading at least 5.1, 6.2.2, and 7.0.

Generic devices on the Openwave Simulator version 7.0 (left) and version 6.2.2 (right):

CropperCapture[3].Jpg Openwave 6.2.2 on google.com

 

Windows Mobile Device Emulator

You can also use the Windows Mobile Device Emulator to emulate Pocket PC & Windows CE devices. Note that to use it easily you'll also want to install the Virtual Machine Network Driver and ActiveSync 4.2. Then reboot, even if it doesn't prompt you to.

Then in order to surf the web with your emulated mobile device, you

  • Open up Device Emulator Manager
  • Right-click an Emulated Phone & click Connect
  • Once the phone fires up, go into Device Emulator Manager, right-click the same phone and click Cradle.
  • After a few seconds, ActiveSync will open up & ask you what kind of connection to create. Choose a Guest connection.
  • Then you should be able to open up Internet Explorer on the emulated phone & surf around. You can type using your keyboard and navigate around the page using the arrow keys (on your keyboard).

Smartphone 2003 SE device profile on Windows Mobile Device Emulator:

Pocket PC

 

November 4, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Friday, November 03, 2006

I took a look at NaturalDocs today for documenting C# code.  It works by looking at normal comments (/* */ or //) above your methods. It then parses those comments & pretties them up.

All I can say is -- meh. It's very fast, but doesn't parse XML (triple-slash) comments, and it seemed to miss a number of my classes (I think partial classes messes it up).

I don't mean to slight it, because I think it's helpful and fast. I just think it's probably better for documenting stuff like Javascript, Actionscript, etc. If they added support for triple-slash comments & partial classes then it might be more useful for C# etc in terms of its sheer speed.

November 3, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]