top | item 5880490

Website mistakes that are easily fixed

79 points| lauriswtf | 12 years ago |hanselman.com | reply

68 comments

order
[+] jakub_g|12 years ago|reply
I particularly hate when someone does things like (1)

  <a href="navigateToFoo()">
when it should be

  <a href="foo.htm">
so I can't middle click it or Ctrl-click it to open in a new tab. Even worse if there's (2)

  href="#"
added, which upon middle click will happily load the page I'm currently on inside the new tab.

I have an extension in Firefox which changes the mouse cursor for (1) from pointer (hand), so I can easily distinguish that case, I hope this became a W3C standard somehow (though the standard way for executing JS are buttons, not anchors, so probably it won't ever become standardized).

[+] derefr|12 years ago|reply
I'm surprised that no browser has done the obvious yet: treat middle-clicking a DOM element with a bound onclick handler the same as left-clicking that DOM element, but override window.open and window.location.redirect within the context of that handler call to open links in a new tab instead.
[+] jakub_g|12 years ago|reply
*should have been

  <a onclick="navigateToFoo()">
[+] zalew|12 years ago|reply
> There can be a whole list of languages in the Accept-Language header, in the order the user prefers them! Use that data, it's there for you to use.

Yet it takes only jumping a plane for a few hours to get Google to think I can and want to read Georgian. Google's i18n for anonymous users (I'm not logged in on my phone's browser) is the most ridiculous I've experienced, every border I cross I get a different language.

[+] thedufer|12 years ago|reply
I think that's the point. They're using IP geolocation when the article suggests that the Accept-Language header would be a better choice.

I don't know whether this is generally true, but it sounds like it would probably help your situation.

[+] sk00byd00|12 years ago|reply
Go to http://www.google.com/ncr and it will forward you to the main US version of Google (it will also set your language preference which helps if you find yourself being redirected to the local countries Google domain later).
[+] Mahn|12 years ago|reply
Yeah, I hate this. Can we all agree on just notifying the user of the existence of the localized version of the page in these cases, without explicitly and automatically forcing the localized version on them? I'm pretty sure this can be done elegantly from an UX point of view, and Internet would be a much better place if everyone did this.
[+] 1morepassword|12 years ago|reply
Not just anonymous users. Even as a logged-in user with set preferences Google constantly knows better than you which language you want.

"Oh, so you did a local search for hardware stores in insert-country-here? Well, than let's change your default settings to insert-language-here, regardless of what you told us you wanted."

This nightmare grows exponentially if you're in a multilingual country.

[+] gallerytungsten|12 years ago|reply
I'm really annoyed by those sites that insist on having a non-removable top bar overlaying the text. Because they break the page-down key. You page down, but part of the unread text scoots under the top bar. Arrrg.
[+] lukifer|12 years ago|reply
Bootstrap helped popularize this pattern, and I don't think it's been good for the web. It also steals valuable screen real estate for tiny laptops, like the 11" Air.
[+] chrismorgan|12 years ago|reply
If you use Firefox, since about version 17 or 18 it adjusts the amount that Page Down/Page Up/Space/Shift+Space scroll by if it detects a fixed header. It doesn't always work (non-full-width headers it doesn't typically catch) but it's absolutely marvellous to have.

It's the funny thing about floating navigation; usability testing and A/B testing show that it's good for conversion/engagement/whatnot, but until Firefox fixed it I absolutely hated the pattern for this very reason.

[+] jakub_g|12 years ago|reply
When you connect this with the usage of Zoom Text Only option in Firefox, due to zoom (bigger text) + an overflow (if divs do not fit any longer within the parent width) the top bar can take substantial part of the screen on desktop also. Quite annoying indeed.
[+] midas|12 years ago|reply
When websites do it well I love it! They can pick the most important links for me and put them in the nav so they're always available without me having to scroll around.
[+] Domenic_S|12 years ago|reply
Here's one he missed: your "country" dropdown has a list of every country in existence, alphabetically. So for the US you have to scroll down to near the end of the list past hundreds of other countries.

Instead, put your audience up top (Canada, US, GB maybe) and then alphabetically list the rest.

[+] Semiapies|12 years ago|reply
I've gotten good use out of this script: http://baymard.com/labs/country-selector

Populate it with the data on names and alternates and priority, and it knows gets you to a short list with "un" (with "United States" first), while also offering Germany for "deu" or the United Kingdom for "bri".

It solved so many hassles for a client's internal online ordering system. Beautiful work, really.

[+] tfountain|12 years ago|reply
Actually the solution you're suggesting is one of my pet hates. An alphabetical list of countries should be alphabetical! If you put some countries out of order you just make it more difficult for people to find their country if theirs isn't the one pre-selected.

If your audience is mainly US, then by all means pre-select the US, but keep the list alphabetical. If your audience isn't mainly in one country, either don't select anything, or for extra bonus points, do a Geo IP lookup and pre-select the country they're in.

[+] SkyMarshal|12 years ago|reply
I've also found it helps to use a divider to separate your audience section from the rest. If you just lump them together with US at the top you're more likely to get grumblings about "US-centric" this or that, but the divider helps communicate "this is our expected audience and we're making it easier for them, but we're inclusive of everyone else below as well".
[+] cdmckay|12 years ago|reply
You can press U to skip to the Us.
[+] yogo|12 years ago|reply
Asking for city, state and zip code is my favorite on the list. Plus the country should be asked for first then if US only get the street and zip code.

There was a link on HN sometime ago that showed that people trusted the form/page more when complete address information was requested (I believe the conclusion was that people were used to doing it that way) so maybe there is a downside to the shorter version.

[+] apendleton|12 years ago|reply
Funny. This is the one to which I had the most negative response. Zipcodes are terrible for inferring anything geographically interesting. A single zipcode is just a collection of USPS postal routes; nothing more, nothing less. They don't have to be contained within a single city, or even a single state, nor do they have to be contiguous, and they can overlap with one another. New ones are also added all the time, and no publicly available databases of them handle any of these problems well. Most applications that try to use them for anything end up running across edge cases that show users incorrect data, often without ever realizing it. It's especially unfortunate because so many startup-y people live in urban areas where zipcodes cover small, regular geographic areas, and have no idea they're potentially creating terrible user experiences for people who live elsewhere.

For a particular case study of sorts, see: http://sunlightfoundation.com/blog/2012/01/19/dont-use-zipco...

[+] rhplus|12 years ago|reply
The UK postcode system is accurate enough that a lot of online retailers will ask you first for the postcode (5 - 7 character) and then they'll offer the short selection list of valid addresses (mostly just house numbers) for that code. It's great.
[+] pbreit|12 years ago|reply
I always find it jarring when a site does this inference since it's so uncommon and really doesn't save much time or mental capacity.
[+] durkie|12 years ago|reply
godamn credit card forms! those get me the most because we're at the moment where i'm trying to give you money, and they pull some passive-aggressive bullshit like limiting the field length to 16 characters.

i can almost type in my whole card number, but then i can go no further and i have to manually go back and remove all the spaces and then go to the end of the number and enter the last digit. class act.

[+] alxndr|12 years ago|reply
> like limiting the field length to 16 characters

Or worse: requiring the spaces. Or maybe they want dashes.

[+] joshuahedlund|12 years ago|reply
> <input type="radio" name="fruit" id="banana" /><label for="banana">Banana</label>

Slightly pedantic, but it's even easier than that if you don't have any elements separating them - you don't even need the id:

> <label><input type="radio" name="fruit" /> Banana</label>

This adds convenience on desktop, but it's really annoying not to have it on smaller mobile screens.

[+] wiradikusuma|12 years ago|reply
Accept-Language header is not reliable esp for non-English speaking countries. Many computers/browsers are by default EN, esp if the O/S doesn't support local language.

For example, Indonesians speak and read Bahasa all the time, but most browsers there report EN.

[+] gioele|12 years ago|reply
WRT language selection and availability, I developed a small Rack gem `i18n_best_langs` that could be useful to web devs.

https://github.com/gioele/rack-i18n_best_langs

It picks up clues from various HTTP pieces (headers, URI) and generates a list of locales in order of possible user preference. It is then up to the web application to make good use of this list of preferences.

It is alpha quality but I would love some criticism about it from HN readers.

[+] mwcampbell|12 years ago|reply
I'm glad I'm not the only one who's anal about redirecting to the canonical host name. Now, let the bike-shedding begin: should the canonical host name be www.foo.com or foo.com?
[+] scottbruin|12 years ago|reply
It should be www., generally, unless you're a huge site and then you can do whatever you want (cf. Twitter)

The reason I say this is for smaller operators who may not be running multicast'ed servers in 3+ geographical areas, then you'll probably want most of your traffic pointing to a CNAME of a CDN or at least a cloud-hosted load balancer.

[+] lukifer|12 years ago|reply
I say "www." needs to die in a fire. It's ugly and pointless, and doesn't stop you from using other subdomains if you want them.
[+] pinterface|12 years ago|reply
I'm a fan of web.foo.com, personally. Much easier to pronounce. ;)
[+] legutierr|12 years ago|reply
www allows for the use of CNAMEs (which, as I understand it, is why the www convention was established in the first place).
[+] mehulkar|12 years ago|reply
At the end of the day, it's never about what we can do, it's what we can do within the budget and time that we think is appropriate for what we want to do.
[+] jakub_g|12 years ago|reply
One more thing that's been getting a lot of traction recently is CSS transitions. Some devs are using them for hell everything, because they can. When it's too much of it, it feels like old shiny GIFs whenever you change the zoom level of the text.

I've saved in bookmarks one page that made my eyes bleed due to it, but I don't have access to it right now. Stay tuned, I'll post it on Monday :)

[+] thehme|12 years ago|reply
I specially agree with the "Download the app now" messages. I hate those because I know how to look those up if I really want to, so just let me get to what I came to this site for.
[+] nleach|12 years ago|reply
Annoying, maybe, but I don't think it really fits with the theme of the rest of the list. Providing the user with a potentially helpful shortcut to an app doesn't really compare to breaking deep links for the mobile web.
[+] jiggy2011|12 years ago|reply
I don't mind the flags thing, yes I sometimes roll my eyes when I have to hit the stars and stripes for "english", but I can spot it or a union jack out of a set of flag pictures faster than I can find the word "english".

You also have the case of foreign users on public computers who may be unable to fiddle with the language settings.

[+] franzwong|12 years ago|reply
User are afraid to set any browser setting. It would be better for them to choose the language through web page.

You should also consider user may not be able to switch the language of a public computer. The setting may be locked, or the operating system is in another language, e.g. Chinese, user doesn't even know where the "setting" button is.

[+] yareally|12 years ago|reply
I didn't see it listed so far, but checkout forms that require you to select the type of credit card you have. Since the card (Mastercard, Visa, Discover, AMEX) can be determined by the first digit.

I don't see too many sites that require something like this anymore, but every now and then one pops up.

[+] itsybitsycoder|12 years ago|reply
I absolutely hate it when I'm paying with Paypal and you make me enter my shipping address. It's not only a waste of time, but if I have to type in something over and over for every order, it's much more likely I'll make a mistake than if I only have to do it once through the Paypal site.
[+] gambler|12 years ago|reply
So true. It's frustrating to see people spend hundreds of hours to advance some "fringe" web technologies that don't really affect much in the end, while stuff that we use every day, everywhere continues to have the same (solvable) issues year after year.
[+] hobb0001|12 years ago|reply
Regarding the title of his article, as a someone who routinely uses TCP/IP for tasks other than transmitting HTML, I find his concept of "internet" to be rather myopic.
[+] hamburglar|12 years ago|reply
I find it difficult to believe that you are actually bothered by web developers referring to what they work on as "the internet."

Can we please suppress the burning need to find something "wrong" to nitpick in every headline? I know it's really satisfying to be the HN Superstar that points out a blatant error, but sometimes it just makes you look desperate.