D
David Mark
Have you seen the shiny new Dojo Toolkit site? Well, it's really more
of a page that leads to other sites. There's the aforementioned (and
jQuery-fied) Nabble forum and documentation and then there is the
execrable foundation site. That last one is the worst of the bunch. If
you don't get your resolution just "right" (i.e. matching whatever the
developers envisioned as "normal"), you are screwed. Gives new meaning
to the word incompetence.
So the page has some pretty graphics and a headline that blares
"Unbeatable JavaScript (sic) Tools". The pitch reads:-
"Dojo saves you time, delivers powerful performance, and scales with
your development process. It's the toolkit experienced developers turn
to for building great web (sic) experiences."
What experienced developers? What Web? Where? And scales?! I've yet
to see a site out of this bunch (even a basic page) that doesn't
download ten times what it should. A quick glance shows that the front
(well only) page of the aforementioned Foundation site weighs in at:-
Total HTTP Requests: 45
Total Size: 454259 bytes
So that's nearly half a MB to create one of the worst "sites" I've ever
seen. In its defense, it does have some pretty graphics, but IIRC those
account for only a fraction of the waste.
Now, I've talked to these people. Every one of them really, truly
believes themselves to be experts in their field (whatever that is).
Specifically, they are supposed experts at HTML and CSS. And when I
chastised one of them for using XHTML-style markup for every site, I was
informed that he was not only an expert with markup as he had been doing
it for x number of years (!) but was also a good enough JS "hacker" to
write scripts for _Google_ (I didn't argue that point).
So, this is one of their latest efforts. You be the judge.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Okay, mea culpa. This is my legacy. I'm afraid I have influenced this
particular cargo cult in ways I could never have imagined when I was
trying to teach them the basics of Web development. I beat them over
the head with the faux XHTML so often that they finally did something
about it. Of course, changing the doctype is irrelevant to _browsers_.
It will make validation a bit difficult, but this bunch considers
validation to be a "waste of time". In their mind, they are now using
HTML strict (just like me!) Of course, they didn't bother to change the
markup, which will still have to be error corrected by the browsers.
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Well, at least that sort of matches now.
<title>The Dojo Toolkit - Unbeatable JavaScript Tools</title>
Bullshit. Give me any random person off the street and a few hours and
I can produce a better JS programmer than anybody working on these
"tools." The delusions at work here are truly unimaginable in both
scope and intensity. Somewhere, somebody actually signed off on this
shit and believed that reasonable people would buy it. The reality is
that even the lowliest Web developers are going to howl at this whopper.
<style type="text/css">
@import
"/dojango/dojo-media/release/1.4.0-20100212/dojo/resources/dojo.css";
@import
"/dojango/dojo-media/release/1.4.0-20100212/dijit/themes/tundra/tundra.css";
</style>
Right, well we'll skip those. Needless to say the themes are garbage.
And they seem to be singularly focused on churning more of them out to
compete with "juggernauts" like Cappuccino (another massive folly that
has no shot of ever gaining acceptance on the Web).
<script type="text/javascript">
var djConfig = {
'isDebug':false,
'parseOnLoad':true,
'baseUrl':"/dojango/dojo-media/release/1.4.0-20100212/dojo/"
};
Why would they need to explicitly specify that debugging is off?
</script><script type="text/javascript"
src="/dojango/dojo-media/release/1.4.0-20100212/dojo/dojo.js"></script>
The kiss of death.
<!-- Meta Tags -->
Typical cargo cult comment.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Haven't we met before?
<meta name="keywords" content="The Dojo Toolkit, dojo, JavaScript
Framework" />
Useless and they apparently can't spell the language they are using (or
their own name).
<meta name="description" content="The Dojo Toolkit" />
Very descriptive.
<meta name="author" content="Dojo Foundation" />
Having seen their site, I can buy that. But in reality, this is the
work of one massively deluded individual.
<meta name="copyright" content="Copyright 2006-2009 by the Dojo
Foundation" />
No worries. Nobody in their right mind would copy any of this.
<meta name="company" content="Dojo Foundation" />
The foundation is clearly cracked.
<link rel="shortcut icon"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/favicon.ico"
type="image/x-icon" />
Just put the freaking icon in the root.
<!-- CSS -->
<link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/site.css"
type="text/css" media="all" /><link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/print.css"
type="text/css" media="print" /><link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/handheld.css"
type="text/css" media="handheld" /><link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/aural.css"
type="text/css" media="aural" />
I won't go into those. They definitely copied me on the handheld and
aural stuff. But like any cargo cult, they didn't know what they were
copying.
<!-- Init JavaScript -->
<!-- Favicon -->
<link rel="shortcut icon" href="" type="image/ico" />
Another one. Different MIME type, empty href. WTF?! The only possible
explanation is this was all just copied and pasted together until it
appeared to "work." If these people did this to one of my enterprises,
I wouldn't just sack them, I'd physically throw them out the nearest
window. Barring a convenient window, I think I'd try to create one with
the first one I could snatch up.
</head>
<body class="tundra">
Redundant (as seen in the corresponding CSS).
<div class="accessibility">
<a href="#intro">Skip to Content</a>
|
<a href="#nav">Skip to Navigation</a>
</div>
Copying again.
<hr class="hide" />
Same.
<div id="page" class="homePage">
The camel-case class name must have seemed like a cool idea (of course,
it isn't). And what sort of ID is "page?"
<div id="header">
<div class="container">
Semantically bankrupt div-itis (of course). And what sort of class name
is "container?"
<span id="logo"><a href="/" title="Homepage">
Homepage? What sort of word is that?
<img
src="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/logo.png"
alt="Dojo Toolkit" /></a></span>
The outrageously long paths for every asset are ridiculous.
<ul id="navigation">
<li class="download"><a
href="/download/">Download</a></li>
<li class="docs"><a
href="/documentation/">Documentation</a></li>
<li class="community"><a
href="/community/">Community</a></li>
<li class="blog"><a href="/blog/">Blog</a></li>
</ul>
Glad they learned something useful about semantics, but why are those
classes and not ID's? Will there really be more than one of each per page?
<form method="GET" action="http://www.google.com/search" id="search">
<span>
<input type="text" name="q" id="query" value="Search" />
Ugh. Name/ID mismatch.
</span>
And what's with the funny span?
<input type="hidden" name="sitesearch" value="dojotoolkit.org" />
<button type="submit">Search</button>
Yes, they like BUTTON's.
<div id="resultbox" style="display:none">
That's ridiculous on a number of levels. Why inline? How do they know
that they will be able to reverse the effect of the display:none style?
I guess I am asking too much of them on that last point, but these are
professed "experts."
<div class="googleheader"></div>
<div id="googlesearch"></div>
<div id="searchClose"><a>Close</a></div>
Interesting use of the A element.
</div>
</form>
</div>
</div>
<hr class="hide" />
<div id="intro">
<div class="innerBox">
Another interesting class name.
<div class="line">
Again.
<div class="unit size1of1 firstUnit homeIntro">
Four more. And will other pages have a "homeIntro" class?
<span class="version"><h1>1.4</h1> <span>Instantly Better Web
Apps</span></span>
Am I seeing things? An H1 inside of a SPAN? And what sort of top-level
headline is "1.4?" No, these are not experts. These are not even
competent beginners.
<h1 class="introText">
Unbeatable JavaScript Tools<br />
</h1>
Ah, another H1. And the BR seems randomly tossed in.
<h2 class="introSubText">
Dojo saves you time, delivers powerful performance, and scales with your
development process. It’s the toolkit experienced developers turn
to for building great web experiences.
As mentioned, not in this lifetime.
<a href="/download"><img
src="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/buttons/getDojoButton.png"
alt="Get Dojo" /></a>
<img
src="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/browsers.png"
class="browsers" />
That's the shiny browser icons. No ALT text, which begs the question of
why they are worried about such accessibility esoterica as aural style
sheets (assuming they even knew what they were copying there).
</h2>
[...]
<span class="redundant">©</span> <a
href="http://www.dojofoundation.org">The Dojo Foundation</a>, All Rights
Reserved.
[...]
There's the proverbial smoking gun. The "redundant" class is defined in
the aural style sheet to stop screen readers and the like from repeating
the word "copyright". They definitely copied _that_. So how do you
copy my stuff and come up with such a complete boondoggle? By not
knowing the first thing about what you are doing.
They actually didn't need my explicit permission to copy this stuff, but
I do wish they hadn't fucked it up so badly. Would have behooved them
to seek my input on its usage, that's for sure.
<script type="text/javascript">
dojo.require("dtk.dtk");
</script>
That's a synchronous Ajax request, which blocks the browser UI until it
completes. Judging by the performance of their servers so far, that
could be anywhere from a second to forever.
<script type="text/javascript">
</script>
That's the most sensible script on the page.
</body>
</html>
Start over.
of a page that leads to other sites. There's the aforementioned (and
jQuery-fied) Nabble forum and documentation and then there is the
execrable foundation site. That last one is the worst of the bunch. If
you don't get your resolution just "right" (i.e. matching whatever the
developers envisioned as "normal"), you are screwed. Gives new meaning
to the word incompetence.
So the page has some pretty graphics and a headline that blares
"Unbeatable JavaScript (sic) Tools". The pitch reads:-
"Dojo saves you time, delivers powerful performance, and scales with
your development process. It's the toolkit experienced developers turn
to for building great web (sic) experiences."
What experienced developers? What Web? Where? And scales?! I've yet
to see a site out of this bunch (even a basic page) that doesn't
download ten times what it should. A quick glance shows that the front
(well only) page of the aforementioned Foundation site weighs in at:-
Total HTTP Requests: 45
Total Size: 454259 bytes
So that's nearly half a MB to create one of the worst "sites" I've ever
seen. In its defense, it does have some pretty graphics, but IIRC those
account for only a fraction of the waste.
Now, I've talked to these people. Every one of them really, truly
believes themselves to be experts in their field (whatever that is).
Specifically, they are supposed experts at HTML and CSS. And when I
chastised one of them for using XHTML-style markup for every site, I was
informed that he was not only an expert with markup as he had been doing
it for x number of years (!) but was also a good enough JS "hacker" to
write scripts for _Google_ (I didn't argue that point).
So, this is one of their latest efforts. You be the judge.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Okay, mea culpa. This is my legacy. I'm afraid I have influenced this
particular cargo cult in ways I could never have imagined when I was
trying to teach them the basics of Web development. I beat them over
the head with the faux XHTML so often that they finally did something
about it. Of course, changing the doctype is irrelevant to _browsers_.
It will make validation a bit difficult, but this bunch considers
validation to be a "waste of time". In their mind, they are now using
HTML strict (just like me!) Of course, they didn't bother to change the
markup, which will still have to be error corrected by the browsers.
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Well, at least that sort of matches now.
<title>The Dojo Toolkit - Unbeatable JavaScript Tools</title>
Bullshit. Give me any random person off the street and a few hours and
I can produce a better JS programmer than anybody working on these
"tools." The delusions at work here are truly unimaginable in both
scope and intensity. Somewhere, somebody actually signed off on this
shit and believed that reasonable people would buy it. The reality is
that even the lowliest Web developers are going to howl at this whopper.
<style type="text/css">
@import
"/dojango/dojo-media/release/1.4.0-20100212/dojo/resources/dojo.css";
@import
"/dojango/dojo-media/release/1.4.0-20100212/dijit/themes/tundra/tundra.css";
</style>
Right, well we'll skip those. Needless to say the themes are garbage.
And they seem to be singularly focused on churning more of them out to
compete with "juggernauts" like Cappuccino (another massive folly that
has no shot of ever gaining acceptance on the Web).
<script type="text/javascript">
var djConfig = {
'isDebug':false,
'parseOnLoad':true,
'baseUrl':"/dojango/dojo-media/release/1.4.0-20100212/dojo/"
};
Why would they need to explicitly specify that debugging is off?
</script><script type="text/javascript"
src="/dojango/dojo-media/release/1.4.0-20100212/dojo/dojo.js"></script>
The kiss of death.
<!-- Meta Tags -->
Typical cargo cult comment.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Haven't we met before?
<meta name="keywords" content="The Dojo Toolkit, dojo, JavaScript
Framework" />
Useless and they apparently can't spell the language they are using (or
their own name).
<meta name="description" content="The Dojo Toolkit" />
Very descriptive.
<meta name="author" content="Dojo Foundation" />
Having seen their site, I can buy that. But in reality, this is the
work of one massively deluded individual.
<meta name="copyright" content="Copyright 2006-2009 by the Dojo
Foundation" />
No worries. Nobody in their right mind would copy any of this.
<meta name="company" content="Dojo Foundation" />
The foundation is clearly cracked.
<link rel="shortcut icon"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/favicon.ico"
type="image/x-icon" />
Just put the freaking icon in the root.
<!-- CSS -->
<link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/site.css"
type="text/css" media="all" /><link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/print.css"
type="text/css" media="print" /><link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/handheld.css"
type="text/css" media="handheld" /><link rel="stylesheet"
href="/dojango/dojo-media/release/1.4.0-20100212/dtk/css/aural.css"
type="text/css" media="aural" />
I won't go into those. They definitely copied me on the handheld and
aural stuff. But like any cargo cult, they didn't know what they were
copying.
<!-- Init JavaScript -->
<!-- Favicon -->
<link rel="shortcut icon" href="" type="image/ico" />
Another one. Different MIME type, empty href. WTF?! The only possible
explanation is this was all just copied and pasted together until it
appeared to "work." If these people did this to one of my enterprises,
I wouldn't just sack them, I'd physically throw them out the nearest
window. Barring a convenient window, I think I'd try to create one with
the first one I could snatch up.
</head>
<body class="tundra">
Redundant (as seen in the corresponding CSS).
<div class="accessibility">
<a href="#intro">Skip to Content</a>
|
<a href="#nav">Skip to Navigation</a>
</div>
Copying again.
<hr class="hide" />
Same.
<div id="page" class="homePage">
The camel-case class name must have seemed like a cool idea (of course,
it isn't). And what sort of ID is "page?"
<div id="header">
<div class="container">
Semantically bankrupt div-itis (of course). And what sort of class name
is "container?"
<span id="logo"><a href="/" title="Homepage">
Homepage? What sort of word is that?
<img
src="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/logo.png"
alt="Dojo Toolkit" /></a></span>
The outrageously long paths for every asset are ridiculous.
<ul id="navigation">
<li class="download"><a
href="/download/">Download</a></li>
<li class="docs"><a
href="/documentation/">Documentation</a></li>
<li class="community"><a
href="/community/">Community</a></li>
<li class="blog"><a href="/blog/">Blog</a></li>
</ul>
Glad they learned something useful about semantics, but why are those
classes and not ID's? Will there really be more than one of each per page?
<form method="GET" action="http://www.google.com/search" id="search">
<span>
<input type="text" name="q" id="query" value="Search" />
Ugh. Name/ID mismatch.
</span>
And what's with the funny span?
<input type="hidden" name="sitesearch" value="dojotoolkit.org" />
<button type="submit">Search</button>
Yes, they like BUTTON's.
<div id="resultbox" style="display:none">
That's ridiculous on a number of levels. Why inline? How do they know
that they will be able to reverse the effect of the display:none style?
I guess I am asking too much of them on that last point, but these are
professed "experts."
<div class="googleheader"></div>
<div id="googlesearch"></div>
<div id="searchClose"><a>Close</a></div>
Interesting use of the A element.
</div>
</form>
</div>
</div>
<hr class="hide" />
<div id="intro">
<div class="innerBox">
Another interesting class name.
<div class="line">
Again.
<div class="unit size1of1 firstUnit homeIntro">
Four more. And will other pages have a "homeIntro" class?
<span class="version"><h1>1.4</h1> <span>Instantly Better Web
Apps</span></span>
Am I seeing things? An H1 inside of a SPAN? And what sort of top-level
headline is "1.4?" No, these are not experts. These are not even
competent beginners.
<h1 class="introText">
Unbeatable JavaScript Tools<br />
</h1>
Ah, another H1. And the BR seems randomly tossed in.
<h2 class="introSubText">
Dojo saves you time, delivers powerful performance, and scales with your
development process. It’s the toolkit experienced developers turn
to for building great web experiences.
As mentioned, not in this lifetime.
<a href="/download"><img
src="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/buttons/getDojoButton.png"
alt="Get Dojo" /></a>
<img
src="/dojango/dojo-media/release/1.4.0-20100212/dtk/images/browsers.png"
class="browsers" />
That's the shiny browser icons. No ALT text, which begs the question of
why they are worried about such accessibility esoterica as aural style
sheets (assuming they even knew what they were copying there).
</h2>
[...]
<span class="redundant">©</span> <a
href="http://www.dojofoundation.org">The Dojo Foundation</a>, All Rights
Reserved.
[...]
There's the proverbial smoking gun. The "redundant" class is defined in
the aural style sheet to stop screen readers and the like from repeating
the word "copyright". They definitely copied _that_. So how do you
copy my stuff and come up with such a complete boondoggle? By not
knowing the first thing about what you are doing.
They actually didn't need my explicit permission to copy this stuff, but
I do wish they hadn't fucked it up so badly. Would have behooved them
to seek my input on its usage, that's for sure.
<script type="text/javascript">
dojo.require("dtk.dtk");
</script>
That's a synchronous Ajax request, which blocks the browser UI until it
completes. Judging by the performance of their servers so far, that
could be anywhere from a second to forever.
<script type="text/javascript">
</script>
That's the most sensible script on the page.
</body>
</html>
Start over.