What I learned building sparkbox.com
The problem came while trying to make the pages still work for browsers that don’t support history.pushstate (IE), or those that will only let you change the hash portion of the URL (Firefox 3). I really wanted to maintain the cool Ajax functionality of the page, but without the history.pushstate support the URL wouldn’t reflect the current content. To solve this problem I came up with a system of changing the URL from sparkbox.com/about/username to sparkbox.com/about#username for browsers lacking the proper history.pushstate support. This worked for Firefox, but it was still failing in IE. Then we realized that for some reason it was only working in Firefox if Firebug was open (what?!). It was beginning to feel more and more like a dirty hack than an elegant solution.
I started thinking about just removing the hack for the older browsers and realized that just made sense. This would remove a buggy solution to a problem that wasn’t even really a problem for the users. If the user had a newer browser (Chrome, Safari, Firefox 4 beta) they would get the functionality I wanted. This is the very essence of progressive enhancement. Everyone has access to the same content, but those with a more advanced browser get a better experience.
The bottom line
Progressive enhancement in effect.
If you’re interested in finding out more about the browser’s history methods, then I suggest you check out the Mozilla Developer Network.