One of my favorite time killers is going to phpclasses.org and window shop for code. Sure, a lot of the classes aren't php5 ready, and the documentation sucks in a huge proportion of the classes, but I love this site.

That being said, it's PAINFUL to visit because, for some STUPID reason, the owners of the site (probably management) think it's ok to freeze my computer trying to open popup windows. This seems to happen at 2 regular times; on first visit and login and in both IE7 and FireFox2.

Now, I'm all for advertising on web sites, and popups don't really bother me on sites I visit regularly, but how is allowing your users experience to degrade by locking up the browser acceptable? I guess they must be counting on the tenacity of thier users to want to come to the site to put up with this level of disrespect.

Still, it just feels slimy to have a website that locks up a users browser, for up to a 5 minutes, attempting to bypass a users popup blockers.

They've recently started a program where you can buy into a membership that will bypass these annoyances. I'm not really sure how this is a good idea either though. For one, it's already been proven, time and time again, that people won't pay for what they can get for free, with or without a negative experience. For another, this actually makes them come across as more slimy. It's as if they're acknowledging there's an issue but instead of fixing it they decided to monetize it instead.

What they should do would be to change display more of the header interrupt ad pages if the popup windows can't be opened. Off the top of my head it would go something like this:

Attempt to open poup window

If successful, set cookie marking the occassion.

On every page request check if the previous cookie exists. If not run the page interrupt alogrithm.

I'm definitely over simplifying the solution but the basic gist is there.

The one thing to take away from all this is that it is possible to maintain a proper user experience as well as advertising. You just have to think it through and put the user first.