I just noticed that this classic piece of advice has never been directly posted to HN.
I think that giving "things" a name is one of the hard problems that programmers tackle every day. Normally our success or failure at choosing good names is kept hidden, and can only be seen by those who look at our code. Websites are one of the rare places where the world at large has to deal with our mistakes.
At least make urls all lower case. Consider how tedious it is spell out a url over the phone which happens quite often. "... dot com forward slash u s e r ... no, capital U on user ... upper case U ... user is upper case U ... no, the rest of user is lower case ...after the slash ... the forward slash... I'll start again..."
Unfortunately, search engine optimization is moving people to put even more topic-related words in URLs than they did 10 years ago when this was written.
Extension-less URLs are great, but I'm not a fan of content negotiation. I like to be able to copy and paste a URL to someone and know that they are going to retrieve the same piece of content as I did. I don't like language negotiation for the same reason - if someone finds a typo on my French language site and sends me a link to the page but I see it in English I won't know what they're talking about.
I think that giving "things" a name is one of the hard problems that programmers tackle every day. Normally our success or failure at choosing good names is kept hidden, and can only be seen by those who look at our code. Websites are one of the rare places where the world at large has to deal with our mistakes.