Thursday, February 23, 2006

Today's Word: Ignorance

Before I go any further, let me say that though I write this about ignorance in developers, I do not mean this necessarily as willful ignorance. Instead: I put the blame for this ignorance on Microsoft's monopoly and IE's complete saturation of the browser space.

Because such a high percentage of users use this browser (and such a fucking scary amount of them don't know that Internet Explorer does NOT equal the goddamn internet), a correspondingly high percentage of designers and developers code for Internet Explorer first and others second, if at all. This strange mentality often comes from the misconception that you can only code for one browser at a time, and you should always code for the one with the biggest userbase. Either that, or you should code for the most widely used browser first and then fix for everyone else.

I get that you need to support the biggest userbase - no argument there! However.

I'll give you reasons to code for standards first:

1. Forget the idealistic "oh, standards will save the poor!" kind of reason for now: coding shit for Internet Explorer first makes more work for you. Yes, you. Have a look at the fixes for CSS bugs in IE7. Have a look at the fixed box model in IE7. Look at the IE-specific crap people put in their CSS (JavaScript evaluation in statements? What the fuck did they do that for?), their AJAX-related code (ActiveX objects, woo-hoo!), their DOM manipulation code (totally fucking different and broken). Write all that for IE and then try to "tack on" support for everyone else? Why not just write it using the standards first and then put an if/else here and there where IE flips out?

2. Government contracts. This may not impact everyone, but going back to the "future-proof" concept, you'll have to re-code everything to pass Section 508 testing. I don't give a shit if 90% of government sites don't pass it now: most of them got uploaded by small offices (or large, ignorant ones) years ago. The templates simply stuck and now a single region of an agency can have a quarter of a million static fucking pages that don't validate. Now in order to get government contracts, by law, you will need to make things accessible. It doesn't matter if your government contact tells you that it doesn't have to pass: if they get sued it falls on you.

3. Maintenance. If you code like we've gone back to '99 or earlier and refuse to give up putting a font tag in every single table cell in your nested-table layout, you will hate yourself when the time comes to redesign. It will go faster to dump the entire codebase and start from scratch. Split things up into structure (markup), look and feel (stylesheets), and content (for fuck's sake, use templates...), switching looks or adding a new disclosure link at the bottom of each page will pass by infinitely faster.

4. Bandwidth costs money. The bigger the site (in traffic) or the denser the intranet web application, the more bandwidth you need per hit. Even without reducing the amount of code, if you pull styles out into external stylesheets, browsers can now cache that. Same for JavaScript files. Then, reduce your markup to hold nothing but the structure and suddenly your 80k - 100k hits weigh in at 10k.

5. Microsoft won't improve shit that so much badly written code still relies on. Think about user-agent strings ( Holy fuck, how did we end up with so many? Now guess how many non-mozilla browsers have "Mozilla" in them? Internet Explorer 7b2 on Longhorn even has "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)" Mozilla/4.0?! Guess why: people coded dumb browser-specific shit and forgot about it.

Thanks to Internet Explorer and Microsoft's way of convincing the world that they can't access the internet without it and web apps won't reach the world unless you code for it first, seemingly intelligent designers and developers still write bad, browser-specific code and think you should, too.

Labels: ,

Sunday, February 05, 2006

Just so IE7 doesn't feel left out: phishing detection

IE7 introduces a whole lot of new functionality that many of us developers have waited five years for.

...and some new crap that nobody asked for.

For instance: IE7 now looks at sites you navigate to in order to try to catch phishing sites. Sounds cool, right? order for them to pull this off, they send every fucking site that opens in your browser (news, mail, porn, political opinion) to their own goddamn servers.

Now, some of you may think,"Of course, they won't keep track of anything you view," or,"Why do you care? Do you have something to hide?"

To those of you who live in the U.S. (a fair amount who do would say something like that), I say,"Read your fucking Constitution one more time. Better yet, print it out and read it every goddamn morning. If you still don't get it: thank you for reading Mr. President."

For those of you running Windows: most likely you run anti-virus software. When that software wants to test a file for known viruses, I can pretty much guarantee you that it doesn't fucking upload the file to a server somewhere, check it, and return the results to you. No, it periodically updates a database on your machine and checks against that.

Just for an added note to those who may stupidly ask why they should care if they don't view anything they don't need to hide:

If it relies on a remote server, someone could attack you by sticking a worm on your machine that redirects all traffic going to the "help, does this look like a phishing attempt?" site MS setup to another page that simply approves everything. Which means that feature now does jack shit to protect you.

Labels: ,