home · blog · groups · about us · contact us
DevelopmentNow Blog
 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]



 Sunday, October 29, 2006
 
 

http://ankhsvn.tigris.org/screenshots.htmlRC4 of AnkhSVN, a Visual Studio plugin that works with Subversion, was released yesterday. From the site:

AnkhSVN is a Visual Studio .NET addin for the Subversion version control system. It allows you to perform the most common version control operations directly from inside the VS.NET IDE. Not all the functionality provided by SVN is (yet) supported, but the majority of operations that support the daily workflow are implemented.

A screenshot from the screenshots page:

Code | Tools
October 29, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]