From: David Mark on
On Jul 17, 9:41 pm, Garrett Smith <dhtmlkitc...(a)gmail.com> wrote:

[...]

>
> An example of this is seen in the opening lines to Sencha:
>
> | window.undefined = window.undefined;

Yes, I can't believe that breakthrough "HTML5 framework" opened with
that old groaner.

>
> Another is in dojo:
> dojo.isArray = function(it) {
>    return it&&(it instanceof Array||typeof it=="array");
>
> };

Is that *still* there?! If so, there is truly no hope for them.
IIRC, I explained to one James Burke that it was gobbledygook (and why
that was the case) and he asked me to show him a browser where it
"fails". :)

If the only justification for a line of code is that it appears to get
the right result, then that line of code has no place in a production
system. You've got to have at least some semblance of an idea of
*why* it should be expected to work.

For very good reason, programming has never been about mindless
observation. Rather it is about understanding abstractions. Testing
programs does involve observation, but only to confirm that there were
no misunderstandings. And in this business, a thousand positive test
results do not mean the code will work everywhere. That's where
experience and a knowledge of history come into play.

>
> The authors of Ext-js and dojo may have more experience than I do.

No, they are mostly Ajax-era greenhorns. Have you seen ExtJS? Er,
Ext-js. Or was it Ext JS? Whatever. Maybe the name change wasn't
such a bad idea after all (other than breaking a million Google search
results of course). :)

> What
> does that say when they continue to publish code that shows a lack of
> knowledge?

That they are ignorant. No news there. The usual "excuse" is that
they don't have time to learn. You've got to wonder why so many
developers are keen to use their scripts. Oh wait... We are talking
about Dojo and ExtJS after all. Of course, jQuery is just as
mystically silly and, inexplicably, Prototype was once popular. Then
there's MooTools...

Somebody asked me recently whether there was any framework I *do*
like. They asked in a nice enough way, but I could sense their
implication that I was a serial doubter. Of course, I asked them "a
framework for what?" The answer was: well, something like Dojo or YUI
or jQuery... In other words, something that makes outrageous false
claims about making browser scripting accessible to the masses.

>
> Code may be obscurely written, have an unrecognized flaw that applies
> exclusively to the situation (perhaps only in an uncommon case), provide
> a workaround to something irrelevant, contain misleading or obsolete
> comments, be mostly irrelevant, and can be full of bugs that exist in
> code paths that are untested but never reached. The same code may also
> fulfill the requirements.

Hence, "show me where it fails" is the rallying cry for incompetent JS
developers. Show them anything but the latest versions of three or
four major desktop browsers (in their default configurations) and they
assert that they don't "care" about those cases. Of course, it's
insanity to project the cares of deluded Web developers onto the
general public (who just want working documents).

>
> The author is of such code may be overlooking important considerations
> of code quality including clarity, efficiency, extensibility, etc.

....competence, sanity, etc.

>
> Sufficient criteria for the assessment of front end skill has not been
> formally established. You, I, and Cornford all have seem to have
> expressed that to some degree.

Then there are things like Dojo. I think most can agree that it does
not demonstrate skill on the part of its developers. Delusions yes,
proficiency no.

>
> A precursor to making assessments of front end skill is the ability to
> make assessments of the quality of front end code.

That much is clear. :)

> For that, I have been
> working on the code guidelines document.
>
> <http://jibbering.com/faq/notes/code-guidelines/>

I think I skimmed it at some point.

>
> This document can be improved and I would like more feedback on it.
>
> One thing that I have wanted to change is the "Avoid modifying objects
> you don't own. ". While that is a nice trite phrase, it doesn't cover
> the aspects of defining cohesive objects.

I think it gets the point across. It's very easy to by accident (or
in haste).

>
> "Define cohesive objects" is better but that does not imply that doing
> the opposite is wrong.

In contrast, I don't know what that means; so the first one is
definitely better.

>
> "Avoid interdependencies" is better

But something else altogether.

> and expounding on host object in
> that section is still appropriate, however some interdependencies make
> sense, so I can't say I'm satisfied with that, either.

Well, you can't satisfy everybody. :)
From: Garrett Smith on
On 2010-07-17 05:13 AM, Tim Streater wrote:
> In article <i1rkkj$lj0$1(a)news.eternal-september.org>,
> Garrett Smith <dhtmlkitchen(a)gmail.com> wrote:
>
>
>> That seems out of touch. Surveys aren't a big part of the user story.
>> Like help (F1), these don't get top priority in testing and I've
>> worked at out-of-touch companies that had such surveys along with
>> foreseeresults, and omniture. They employed these because they were
>> out of touch with the end user, ...
>
> What makes anyone think that F1 is Help? Or that "you can add this link
> to your favorites (sic) by typing ctrl-d" or whatever it is? The former
> applies to nothing on my computer and the latter to only one out of five
> browsers I have.
>

Well, sure, F1 might not be help, ctrl + D might not be a bookmark,
backspace might perform scrolling, navigation, or nothing at all.

Those things depends on the app. The point I was trying to make, and
what Richard's popup feedback survey example showed, was that such
features may not be as well tested as the rest of the application.

Additionally help is often a failed user experience. When the user gets
to that point, it can often be considered a problem. User usually does
not want to launch help. Help takes time to launch and use. Even if it
is only 10 seconds, that is still a lot of time for the user. Help also
changes context and focus of what he was doing and might not even have
the answer for what he's trying to get done.

Things such as as "help" or "surveys" tend to be not as well-tested.
They are sometimes irrelevant and may be an indication that the
application developers are out of touch.

This is generally the case with foreseeresults, which opens windows in
popups (that can fail), asks questions that are irrelevant (if the user
ever sees them) using marketing lingo. They rely on cookies to determine
if the customer has been provided with the survey and since that can
fail, the user can get the same survey again and again.

Any company that uses foreseeresults is clearly out and using
foreseeresults won't help change that.

Sorry if that was too long-winded. In short, F1 could be anything and
web surveys and help are usually indicators of a company that is out of
touch with the user.
--
Garrett
From: Kenneth Tilton on
David Mark wrote:
> On Jul 17, 4:04 pm, Scott Sauyet <scott.sau...(a)gmail.com> wrote:
>> David Mark wrote:
>>> Kenneth Tilton wrote:
>>>> Using a little FUD to keep
>>>> those billing rates up, are we? Best of luck, these are tough times.
>>> FUD? That's what the displaced Java developers behind Dojo were
>>> saying back around 2007.
>> Is that true, Dojo was written by people who thought in Java? It
>> would explain a lot.
>>
>
> Yep and it does indeed. Avoid like the plague. :)
>

I agree. And we would be in de facto agreement over JS libraries were it
not for qooxdoo (and possibly the proprietary library I gather qooxdoo
was modelled after). Most JS libraries are bad beyond salvation by
bugfix. But engineering is like that: eventually someone gets it right.

One thing they got right is hiding HTML/CSS so a new generation of
developers need not mess with those. ie, The library is not an
additional learning curve, it replaces several.

Until I see a widget set like qooxdoo's and other things like the
messaging mechanism and their databinding mechanism and their
sophisticated layout API in some raw HTML/CSS library, I'll be using
qooxdoo.

And I am an NIH kinda developer, preferring to roll my own rather than
sort through someone else's mess in the time I could develop my own.

kt

--
http://www.stuckonalgebra.com
"The best Algebra tutorial program I have seen... in a class by itself."
Macworld
From: David Mark on
On Jul 18, 11:57 am, Kenneth Tilton <kentil...(a)gmail.com> wrote:
> David Mark wrote:
> > On Jul 17, 4:04 pm, Scott Sauyet <scott.sau...(a)gmail.com> wrote:
> >> David Mark wrote:
> >>> Kenneth Tilton wrote:
> >>>> Using a little FUD to keep
> >>>> those billing rates up, are we? Best of luck, these are tough times.
> >>> FUD?  That's what the displaced Java developers behind Dojo were
> >>> saying back around 2007.
> >> Is that true, Dojo was written by people who thought in Java?  It
> >> would explain a lot.
>
> > Yep and it does indeed.  Avoid like the plague.  :)
>
> I agree. And we would be in de facto agreement over JS libraries were it
> not for qooxdoo (and possibly the proprietary library I gather qooxdoo
> was modelled after).

And it is likely not a coincidence that you have hitched your wagon to
qooxdoo's star. Perhaps you have a special place in your psyche for
that one?

http://en.wikipedia.org/wiki/Cognitive_dissonance

> Most JS libraries are bad beyond salvation by
> bugfix.

That's 100% correct. Most developers realize that trying to solve
every problem for every conceivable context is the wrong approach.
Scripts must be downloaded, JS is single-threaded, etc. Logic says
that context-specific scripts are needed to make non-trivial scripts
download and execute fast enough. Furthermore, solving every problem
for every *browser* is virtually impossible, so it is necessary to
design around some problems, which you can't do if the stated goal is
to tackle everything at once.

So it follows that working on such projects is left to inexperienced
and/or hopelessly deluded developers who clearly have no shot at
making such omnipotent designs a reality. They carry on year after
year, giving up on last year's browsers and redirecting their efforts
to the latest in a never-ending quest to do the impossible. They are
cheered on by have-nots (typically non-programmers or fellow
greenhorns) who desperately want to develop cross-browser scripts, but
require a magical solution to handle every conceivable cross-browser
issue for them. Inevitably, with time and experience, rational
developers realize that the "anti-library zealots" were right all
along.

> But engineering is like that: eventually someone gets it right.

You don't seem to understand the basic concept, which is that the
library authors are chasing an ill-advised and untenable goal. You
can never get a wrong design right. :)

And seeing as IE6 came out around the turn of the century, it is not
2010 and none of the "major" efforts (presumably with armies of
developers behind them) haven't gotten close to getting that browser
"right". Same for IE7. The inevitable "solution" is for them to
throw in the towel (which many are now advocating). Doesn't that tell
you something?

Furthemore, the major browsers (the only ones these efforts seek to
"fix") have been converging for years (recently and most dramatically
illustrated by the preview of IE 9) further reducing the need for
monolithic libraries to "smooth over" the ever-decreasing differences.

As for widget frameworks, they are invariably built atop incompetently-
written libraries, so can be dismissed out of hand. And as HTML5
creeps in to the picture, they will become increasingly less
attractive (who needs a qooxdoo date picker if the browser has one
built-in?)

Predictably there are already "HTML5 frameworks" popping up, even
before the recommendation is finalized. And predictably they are
taking the usual approach of ignoring built-in degradation mechanisms
(which they can't can and brand) in favor of dubious hacks (e.g.
browser sniffing).

>
> One thing they got right is hiding HTML/CSS so a new generation of
> developers need not mess with those.

As you've been told repeatedly, "hiding" HTML/CSS means short-
circuiting built-in browser behavior (e.g. layout) and then trying to
rebuild it all with (single-threaded) scripts. That's obviously
folly.

One pervasive example is the "CSS reset" which wipes out default
styles and then tries to build an "ideal" set that will be appropriate
for every agent. That clearly makes no sense as default styles are
chosen by browser developers to suit specific environments (e.g.
desktop, phone, tablet).

Another much-maligned practice is sizing everything with pixel units,
which breaks accessibility. For example, the text zooming feature in
IE breaks completely. The framework developers know this, but
typically argue that the user should simply use the general zoom
feature and stop getting in the way of their quest to control every
aspect of the browser. Of course, zooming *everything* causes
horizontal scroll bars, which futher impairs readability.

In reality, they are simply trying to compensate for their ill-advised
GP scripts which are predictably overwhelmed by the diversity of
browsers. Then there is the antiquated notion that every document
must look exactly the same in every browser (when in fact the goal
should be to leverage each agent as best as possible without breaking
accessibility).

Also, qooxdoo does not have a monopoly on such ill-advised and
overbearing strategies (see ExtJS, Cappuccino, etc.) The authors of
these scripts just don't get it. Either that or they refuse to get it
as that would get in the way of book sales.

> ie, The library is not an
> additional learning curve, it replaces several.

It certainly is an additional learning curve and it (sort of) replaces
many built-in and standard features that you could have gotten for
free with dubious and ever-shifting scripts that cost dearly in terms
of performance and usability. In short you are learning the wrong
things.

>
> Until I see a widget set like qooxdoo's and other things like the
> messaging mechanism and their databinding mechanism and their
> sophisticated layout API in some raw HTML/CSS library, I'll be using
> qooxdoo.

The widgets are slow, bloated, over-engineered junk and nothing you
are writing needs the overkill of messaging and data-binding
mechanisms. As for the "sophisticated" layout API, it is demonstrably
less sophisticated (and far less useful) than the built-in mechanisms
it aspires to replace. And these pipe dreams come at a price that is
prohibitive (as evidenced by your recent "train wreck" example).

>
> And I am an NIH kinda developer, preferring to roll my own rather than
> sort through someone else's mess in the time I could develop my own.
>

In the time you've spent sorting through qooxdoo (with no end in
sight), you could have learned how to leverge the browser's built-in
layout engine, XHR, etc. to create your algebra application in
something far less than 1MB. Also, unlike qooxdoo, those represent
marketable skills. ;)
From: Kenneth Tilton on
David Mark wrote:
> On Jul 18, 6:53 pm, Kenneth Tilton <kentil...(a)gmail.com> wrote:

>>> And these pipe dreams come at a price that is
>>> prohibitive (as evidenced by your recent "train wreck" example).
>> It's kinda sad when someone of your supposed intellect and expertise
>> tries a cheap shot like that. A moment of silence for your self-respect.
>
> You are the one who labeled it a "train wreck", remember? I'm just
> pointing out the irony that you seem to have been emboldened by the
> experience.

Yeah, I did, in reference to the ongoing development on my end. So it's
a cheap shot to present that as qooxdoo being a problem, given that I
was at the same time raving about qooxdoo (and linking to non-rave
experiences with other JS libraries).

I'll give you the benefit of the doubt that you lost that context.

kt

--
http://www.stuckonalgebra.com
"The best Algebra tutorial program I have seen... in a class by itself."
Macworld