jquery vs dojo vs yui etc

D

David Mark

This is always what I suspected a portion of the animosity was based on.
A fear that opening up DOM manipulation and AJAX to the masses cheapens
a particular skill set.



Huh? What indicators show its "clearly growing"?

The fact that since I started promoting it (about six months ago),
people have started using it.
Aside from David's 14
posts, mostly replying to himself, the "support group" shows five posts
from two authors so far this month.

It's not a "support group", but a general discussion group. Some
months it is busy, some months it isn't. Perhaps the recent lack of
posts indicates users are content with the offering as it is.

And "replying to myself" indicates adding additional thoughts to a
previous announcement (e.g. IE 9 fixing a bug).
Not exactly a booming community.

And you are not exactly making sense. What makes you think that
everyone who downloads the script(s) posts messages to the discussion
group?
I've never actually *seen* 'My Library' in use on a live site.

So what?
Have you?
Yes.

Tough to gauge growth rates when the benchmarks hold steady at zero.

Tour observations are not benchmarks.
Until something suggests otherwise I'll stand by my conclusion the
project is dead, and always was dead, as the result of largely
non-technical factors.

It is certainly not dead. I'm the only one who can declare such a
state. As for "always was dead", I've said for years that you
shouldn't need to use any GP library (including mine). Recently I
have decided to do (very limited) promotion as I am tired of seeing
far inferior libraries plastered all over the Web. Clearly the masses
are going to use something and it shouldn't be jQuery, Prototype, etc.

And I shouldn't have to sell you code (a la John Resig) anyway. Your
"arguments" are centered on the idea that my code is superior but you
won't use it because I refuse to produce flashy informercials to ram
it down your throat. Your ADHD is not my problem.
I know David Mark's online persona is that of an asshat.

That's your idiotic "opinion". The fact is that lots of GP library
authors are pissed off at me because I have pointed out numerous
shortcomings in their efforts over the course of several years. You
are simply parroting them from the cozy confines of an anonymous
posting account. In other words, you have no persona at all.
That's about
all I know about DM.

Which is absolutely nothing.
Maybe he's a stand-up rational guy in the real
world. I have no idea.

Exactly. No ideas, but plenty of free time to speculate about things
you know nothing about.
If you think there's something more involved here, like I'm in the midst
of a several-year mission to discredit a javascript library and it's
author, running to various online forums constantly posting the same
arguments over and over and over... well, those sorts of actions would
border on lunacy.

I have no idea what you are doing (or where you are doing it). You
don't even have a name. Your initials do seem to repeat the same
"arguments" here though. Any time I point out flaws in "major"
libraries, I know serial apologists like Matt Kruse and yourself will
pop up out of nowhere to cluck about how I "don't get it". Rest
assured, I get it. What I don't understand is why you try so hard to
obscure the real issues and confuse those who truly don't get it.
 
D

David Mark

Thomas 'PointedEars' Lahn :


That, exactly, is what bothers me in those discussions : the issue seems
to be *the people* writing those libraries. Technical objections alone
would hardly justify personal smears.

When choosing a script, the relative proficiency of the author(s) is
certainly relevant.
 
D

David Mark

S.T. said:
[in response to Matt Kruse]
You are in a small subset of developers that use jQuery by choice, yet
are also highly critical of it. In fact you might be the only person
I've read that shares those characteristics. Not that there's anything
wrong with that, just a somewhat unique view.

You can put me in that category as well.

The category of those who abdicate responsibility for cross-browser
scripting to the jQuery authors (of all people), despite being told
repeatedly of their collective incompetence?
I find that JQuery often
simplifies my development, but I recognize many flaws in it and would
love to see something more solid come along to take it's place.

It only allow creates the illusion of simplifying your development.
Odd that you can't see that after all of the related discussions.

And why do you need something to take its place? It's a 70K QSA
wrapper. As we've been over repeatedly, CSS selector queries are
highly ill-advised and there aren't many "supported" browsers left
that lack QSA anyway. What's left to replace? A ham-fisted API that
is completely inappropriate for browser scripting?
But
those need to be libraries that I would feel comfortable handing off
to a client to continue with, which leaves out, for instance, My
Library.

That makes no sense at all. You'd feel comfortable handing off a
script that you know is full of holes? And unlike jQuery, the code in
My Library is relatively easy to follow. So what's your point? If
the client Googles the name they won't find tons of gushing blog posts
and bad examples?
At the moment, JQuery seems the best of a fairly bad bunch.

And what seems to indicate that? Like the rest, it calls QSA (with
very little in the way of feature testing) and hands off to a proven
mess of unfinished nonsense in the event of an error.

http://www.cinsoft.net/slickspeed.html

But, of course, you've already seen that. IIRC, your position was
that the demonstrably execrable results were somehow my fault for
"trying to break it". :(
But I
really don't want to skip a library altogether.

Why? Cross-browser scripting is relatively easy these days, making
jQuery and the like antiquated notions. By far, they create more
problems than they solve.
Yes, I trust my own
skills enough to believe I could do everything that's done in those
libraries, but I really don't want to spend the time.

And therein lies the problem. If you would stop and think about it,
you would realize that you don't need most of what is in those
libraries, not to mention the fact that those libraries have failed
miserably (over the course several years) at their shared goal. They
are selling both problems and (very bad) solutions. Using them over
and over leaves you with no solutions of your own, which is your own
fault.
And I don't
think it's *that* bad.

Software either works or it doesn't. Software authors have talent or
they don't. Some apologists like to point to Windows as a product
that is not "that bad", but still pervasive. Of course, the
difference between a completely transparent 70K script and an OS
should be apparent.

What has jQuery done for you, other than leave you short of time and
code and therefore perpetually dependent on it? And what will you do
when new browsers shed more light on its appalling inferences? Go
back and "upgrade" all of your clients to a new jQuery and hope that
it all works out? Seems like a hard way to go, particularly in light
of the ongoing education of the script's authors and their penchant
for breaking compatibility (with browsers as well as their own
scripts). Assuming the applications don't fall apart (something that
will take new rounds of QA testing to determine), do your clients then
need to post disclaimers about the new jQuery breaking anything
released since last year? And will the end-users even know what to
make of such a disclaimer?

In stark contrast, I didn't have to alter a single line to accommodate
IE 8, FF 3, Safari 4, Chrome, Opera 9.5, Opera 10, Opera 10.5, etc.
And I recently tried out the Build Test page in the IE 9 "preview" and
everything worked in both HTML and XHTML DOM's. Furthermore, my users
(as well as participants in this group) have tried it in all sorts of
mobile devices (from brand new to ancient), game consoles, etc.
without issue.

That doesn't mean it is perfect (it isn't), just demonstrably superior
to the "major" libraries, each of which has required frantic efforts
to "keep up" with just the latest versions of a handful of modern
desktop browsers (in their default configurations) and left a trail of
broken browsers behind them (e.g. Opera 9.x, FF2, etc.) To this date,
none of them have come close to "solving" IE 6 and 7, which are
largely the same and by far the most used browsers of the last
decade. Recently, they've taken to calling for a "ban" on those
browsers (despite the obvious futility and IE7's persistence in IE8)
as a substitute "solution".

I have recently fixed bugs for ancient browsers that the other
libraries couldn't support if they wanted to and that gives me
confidence that the script will run in browsers that I haven't heard
of or have never tested (including those that haven't been invented
yet). None of the fixes involved browser-specific code and most were
trivial (e.g. one line to fix an FF1.0 issue, two lines to fix NN4,
another line to fix Opera 6, etc.) I had never bothered to look at
such browsers and clearly didn't write perfect feature detection/
testing for every conceivable environment. But plugging the holes
didn't have the slightest effect on the code's size, performance or
the compatibility with the more recent browsers.

Why should such a contrast exist? Because, relatively speaking, the
authors of jQuery, Prototype, YUI, Dojo, Qooxdoo, SproutCore,
Cappucinno, Closure, etc. haven't got the slightest idea what they are
doing. Over the years, overwhelming evidence has been published (here
and elsewhere) to prove this fact beyond any reasonable doubt. The
only people who fail to grasp this are those who lack a basic
understanding of the subject and those who are completely out to lunch
(e.g. VK). Even the authors of some of these libraries have woken up
of late and decided to scrap their previous efforts and start over
(e.g. Prototype). And to address a previous "point" made earlier in
this interminable thread, stating such is not a "personal smear". I
mean, would you buy an English-language book by an author with a
demonstrably shaky grasp of the English language? By the same token,
you shouldn't abdicate responsibility for browser scripting to
author(s) with a demonstrably shaky grasp of Javascript and its
interaction with browsers.

Unsurprisingly, I have clients who have been using custom builds of My
Library for years without issue. Still more use context-specific
scripts that continue to perform properly, despite the lack of any
sort of GP library. Others simply write (or IM) when they find
themselves stuck (and perhaps leaning towards using a bad script) and
invariably I talk them down by suggesting a solution that avoids the
problem. That's how professional browser scripting is supposed to
work. It requires experience, thinking and yes, actually writing code
rather than piggy-backing on top of popular junk found on the Web. On
the other hand, selling lifetime subscriptions to dubious open source
projects is about as unprofessional as it gets. In many cases it is
downright fraudulent.
 
R

Richard Cornford

No, it really did simplify the development, and it saved me a day
of work. Here's the case story: a relatively simple website which
didn't use a lot of JavaScript ... Lightbox clones out there.
The best clone I found was a jQuery plugin. I gave it a shot and
it worked very well. It may have all the drawbacks that jQuery
brings with it, but in this case, I didn't care anymore. They
wanted Lightbox, I gave them Slimbox2, and didn't look back.

I'm not a fan of jQuery by any means, and I know its weak points
well enough. In this case, however, it did save me a lot of work.
<snip>

Doesn't that story boil down to 'JQuery allowed me to take the money
and run'?

Richard.
 
T

Thomas Allen

I see really no discussion of the (de)merits of MooTools in this
topic, a library that I have found to be very useful over the years. I
see attribute getter/setter methods consistently criticized, and for
good reason in that they typically offer little. I think that
MooTools' implementation of "get" and "set" for Element is otherwise
in that it is intended to allow for an intermediary layer of element
data "storage," although in my own code that use case is infrequent.

Thomas
 
G

Gregor Kofler

Am 2010-07-15 16:17, Stefan Weiss meinte:
One more thing. I am a JS developer (among other things), and I am able
to create these things if I want to. Other people, including many web
designers and amateur bloggers, webmasters, etc, don't have that
experience. They can either use the best existing script they can find,

....or leave it to someone experienced in those things.
 
G

Garrett Smith

I see really no discussion of the (de)merits of MooTools in this
topic, a library that I have found to be very useful over the years. I

It is generally a very good idea to review the source code for any third
party javascript library.

With the dynamic nature of javascript the dynamic nature of the web, and
web browsers, a script may have problems that are not immediately
apparent. It may have errors but they not necessarily be seen either
immediately or ever.
see attribute getter/setter methods consistently criticized, and for
good reason in that they typically offer little. I think that
MooTools' implementation of "get" and "set" for Element is otherwise
in that it is intended to allow for an intermediary layer of element
data "storage," although in my own code that use case is infrequent.
Discussions of problems of MooTools have included problems such as:
* unrelated inferences / browser sniffing, including using nonstandard
Gecko-only etBoxObjectFor (which they deprecated)
* modification DOM prototypes and other host objects; use of expandos
* needless interdependency/tight coupling
* The dollar function (meaningless)

Some of these things were discussed in "MooTools: An Objective Look".

See also:
[1] <http://jibbering.com/faq/notes/detect-browser/>
[2] <http://perfectionkills.com/whats-wrong-with-extending-the-dom/>
 
S

Scott Sauyet

David said:
Scott said:
S.T. said:
[in response to Matt Kruse]
You are in a small subset of developers that use jQuery by choice, yet
are also highly critical of it. In fact you might be the only person
I've read that shares those characteristics. Not that there's anything
wrong with that, just a somewhat unique view.
You can put me in that category as well.

The category of those who abdicate responsibility for cross-browser
scripting to the jQuery authors (of all people), despite being told
repeatedly of their collective incompetence?

No, you must have misread. I was discussing the category of people
who use their clients' and employers' resources wisely, using tools
that work well for the environments those clients care about, people
who understand enough about browser-scripting to do the work
themselves but choose to use a library that substantially speeds up
certain parts of the job, people who make up their own minds about the
competence of their tools and the authors of those tools.

It only allow creates the illusion of simplifying your development.
Odd that you can't see that after all of the related discussions.

No. In fact, it does simplify my development. Odd that you think you
can see over my shoulders from way back there. Are you really as
arrogant as you come across?

And why do you need something to take its place?  It's a 70K QSA
wrapper.  As we've been over repeatedly, CSS selector queries are
highly ill-advised and there aren't many "supported" browsers left
that lack QSA anyway.  What's left to replace?  A ham-fisted API that
is completely inappropriate for browser scripting?

As we've been over repeatedly, CSS-selectors are often the very best
tools for the job. And I know that you've read enough of jQuery's
source to realize that the selectors engine is probably 15% - 20% of
the total.


That makes no sense at all.  You'd feel comfortable handing off a
script that you know is full of holes?

No. I am willing to hand off code that I know is not perfect, if I
can comfortably describe its limitations and flaws, and if it works
reliably. What I'm not comfortable doing is handing off code that I
think the client cannot fix themselves or for which they cannot find
simple help fixing. I'm afraid right now that any clients I have who
do not have the expertise to fix things themselves would not get
helpful responses from the minimal community around My Library.

 
And unlike jQuery, the code in
My Library is relatively easy to follow.  So what's your point?  If
the client Googles the name they won't find tons of gushing blog posts
and bad examples?

No, that doesn't bother me much. Frankly, it's you and the attitude
you display here that prevents me from even considering suggesting My
Library to any clients.

And what seems to indicate that?  Like the rest, it calls QSA (with
very little in the way of feature testing) and hands off to a proven
mess of unfinished nonsense in the event of an error.

http://www.cinsoft.net/slickspeed.html

But, of course, you've already seen that.  IIRC, your position was
that the demonstrably execrable results were somehow my fault for
"trying to break it".  :(

I'm afraid you don't recall correctly. My position was simply that
you were misusing the speed test as a conformance test,
misrepresenting the other libraries thoroughly in the process.

Why?  Cross-browser scripting is relatively easy these days, making
jQuery and the like antiquated notions.  By far, they create more
problems than they solve.

They haven't for me or my clients.

And therein lies the problem.  If you would stop and think about it,
you would realize that you don't need most of what is in those
libraries, not to mention the fact that those libraries have failed
miserably (over the course several years) at their shared goal.  They
are selling both problems and (very bad) solutions.  Using them over
and over leaves you with no solutions of your own, which is your own
fault.

I've written table-striping code for when I can't add the "odd"
classes on the server. I've written several different version of such
code. It's not at all difficult to write. But including that code in
my build and adding whatever calls are needed to apply it is more
difficult than doing this:

$("#myTable tbody tr:eek:dd").addClass("odd");

Moreover if I decide I want to apply it to a certain class of tables
instead, I don't need to ensure that I can collect them by class name
and then run a loop over the bunch. I can do this instead:

$("table.zebra tbody tr:eek:dd").addClass("odd");

I don't have to want to use all the code that jQuery supplies, just
enough of it that it's worth my time dealing with its flaws.

Software either works or it doesn't.  

Software either meets your needs or it doesn't.

Doesn't it annoy you when posters come here complaining just that
their script "doesn't work?" We need to know what they expect before
we can tell for ourselves that it doesn't work. The same holds true
for libraries. What I expect out of them is clearly something less
than what you expect. So you shouldn't use them, clearly. But your
evangelizing against them has really not convinced me that these
libraries are inherently flawed.

Software authors have talent or they don't.

Do you think Donald Knuth never wrote any bad code? Was Edsger
Dijkstra's code so perfect that no one would ever find a flaw in it?
Talent is only part of the story. It's important, but there is more
to well-built software, especially software built by a community.

 Some apologists like to point to Windows as a product
that is not "that bad", but still pervasive.  Of course, the
difference between a completely transparent 70K script and an OS
should be apparent.

It seems apparent to me, but in a manner that belies the rest of your
argument. Which do you think you should trust more, a reasonably
small script that you can understand in detail with some concentrated
effort, whose flaws you can detail for yourself efficiently -- or a
50+-million lines-of-code behemoth that you can only treat as a black
box?

What has jQuery done for you, other than leave you short of time and
code and therefore perpetually dependent on it?  

I think it might do that for script kiddies. But for competent
developers, it's just a collection of short-cuts for things they could
do themselves if they really wanted to.

I do a lot of work in Java. And years ago I wrote logging systems to
fit my needs. They were better adapted to exactly what we wanted to
do than any general-purpose logging library ever could be. But I
would probably never write one again, because the general-purpose
libraries have gotten so useful, and they work well-enough for my
needs, and they come without several weeks worth of development.
[too much more for me to respond to right now.]
 
K

Kenneth Tilton

Richard said:
Kenneth Tilton recently demonstrated a similar inexperience based
short-sightedness in his 'this site is a train wreck' warring; where
everything on the screen is put there by javascript, including the
warring that things may not work correctly, then when the javascript
doesn't work correctly the odds are pretty good that the warning will
not be shown. The path of the reasoning is obvious, but you have to be a
little more experienced in the field in order to take the first step.

Yeah, I am really worried about people who have JS turned off during
this stage of development when I am just running the site to keep my
morale up and sharing with programmers who might be interested in
driving qooxdoo from lisp. Not.

Hell, I am not even worried about the template Algebra hints sometimes
failing to locate the operands they try to lift from the problem at
hand, so the hints can be that much easier to connect with the problem.

That comes soon, tho, because my port of a full-blown desktop app to the
Web (http://teamalgebra.com/) is going so well (thanks to qooxdoo:
http://qooxdoo.org/) that in a week or two I will want to share it with
normal people vs Lisp/javascript geeks.

Speaking of which, any lisp/js geek who gets curious about my
lisp/qooxdoo library and checks it out without having javascript turned
on -- um, I think I'm OK with the probable outcome.

As for this group bravely standing up for clients in the face of
scurrilous thieving lying consultants who rip themm off by using a JS
library, um, I /am/ the client. When I do have clients they ask me to
check out different libraries they themselves have come across, and one
explicitly encouraged me to use a /big/ library like Dojo instead of a
small one like jQuery so I would not be re-inventing the wheel.

Tilton's Law: Solve the right problem. In this case, if the problem is
that a JS library has a bug, the solution is to fix the bug, not burn
the library and have every programmer who wants to put up a web page
spend five years learning HTML and CSS and browser variability.

That's actually rather obvious, so it's fun seeing the alpha males
around this NG forever arguing against it. Using a little FUD to keep
those billing rates up, are we? Best of luck, these are tough times.

kt
 
G

Garrett Smith

Particularly as I tend towards the cynical.


The 'if' supposes that those were the only two alternatives.


Sometimes there are client who get what they deserve. Unfortunately
there are also clients who do not deserve what they get.


The "trouble" isn't just uploading a new JQuery version every couple of
years, it is uploading a new JQuery version and then doing a full
regression test of the functionality of the whole site, and then fixing
anything that may have been broken by non-back-compatible changes in
JQuery (and that may not be necessary every couple of years, but instead
following a first update rapidly followed three or four similar cycles
as bugfix releases rapidly follow a major version release (based on
previous releases)). Of course formal (or even effective) QA/regression
testing is nearly unheard of in general web development so its implied
expense is avoided, and in return the expense is experienced in the
negative impact of non fully functional websites going unnoticed for
indeterminate periods of time and not achieving whatever they were
intended to achieve during that time.


Does "web designers" mean (effectively) graphical designers working
on/producing websites? (as distinct from 'web developers' responsible
for code/application architecture design, UI interaction design,
database design (in relation to websites), server configuration design,
and so on.)


No, they (mostly) do not. That is not an unexpected situation as
realistically most people do not have experience in most (more than
slightly) specialised things. Generally that is not a problem as
(effectively) we sell our own specialised experience in order to
purchase the experience (or products of the experience) we need/want of
others. And faced with a lack of experience/knowledge in an area most
people are happier (and probably better off) purchasing that experience
than trying to do it themselves.

Almost nobody, for example, would contemplate making their own china,
even though it would not be at all physically difficult to do so (at
least using available fabrication techniques that do not include
throwing posts on a potter's wheel).

There are many interesting things to do in the world and many of them
are also dangerous.

[...]
So the inexperienced can easily make their own china, but they risk
doing significant harm to themselves in the process, and could create
something that is hazardous to use and unacceptably short lived. There
is much to be said for understanding the consequences of actions,
particularly in terms of avoiding the bad ones.



A different moral dilemma might apply to them. Granted, if you are
talking about a complete armature doing what they like to please
themselves then any consequences (good or bad) fall only on them. But as
soon as someone is acting in the role of 'client' is involved the
consequences of design decisions are no longer local. Yet without the
experience that would have informed the 'designer' about what
consequences were likely to follow from particular design decisions no
anticipation can be exercised, and negative consequences cannot be
avoided. Which doesn't mean that there necessarily will be negative
consequences, everything may be just fine, but the point is that the
inexperienced designer will not know one way or the other.

Experience without knowledge isn't much use. I would say there are
posters of this NG that are more experienced than I am (I base this on
having read their stories of Netscape 3, etc), yet these same posters
still post up code examples that seems to me to be in very poor
judgment, using conditional comments to identify which browser might
support attachEvent, etc.

I was interviewed about two years ago by a senior front end engineer
with 15 years experience. The first and only technical question was to
build a rich text editor. He asked me to start with a TEXTAREA, and so I
wrote that HTML on the whiteboard. I suspected that he was going to fall
into the trap of trying to add HTML to the textarea's value and sure
enough, he did just that. We proceeded for probably not much more than a
minute when I mentioned that setting the TEXTAREA's `value` property to
have '<' and '>' characters would result in those characters being
rendered as text. I think I may have dropped that as a question, as "how
are you going to get '<b>' to be parsed?

I assume that he realized the problem because he ended that question
right there and the interview finished soon thereafter. The rest of the
interview revolved around Ext-js.

Another type of thoughtless experience is copying.

A third type of thoughtless experience is outright bs. Recall the
example of the "enterprise level" jQuery developer who was using a
namespacing technique which was nothing more than a useless call to
`Function.prototype.apply` and did not create any namespace.

There is no substitute for knowledge [Deming]. Blindly copying the wrong
thing does not improve the situation and although it may result in a
desirable outcome (as you point out below), it is only by limited luck.

Recommend reading (for anyone reading this message): Carefully review
each of Deming's 14 points listed on Wikipedia and for each point,
consider how it applies to software development. You may find it
enlightening:

<URL: http://en.wikipedia.org/wiki/W._Edwards_Deming>

[...]
Just yesterday I encountered what was probably another example of this
on a site that I use fairly frequently. It was my first visit to the
site since its UI had been redesigned (and AJAXed) and as I logged out I
noticed IE 8 show that strip at the top that announces that it has
blocked a pop-up. Ah, I thought, that is going to be survey about what I
think of the new UI, and as I wanted to tell them that they had rendered
it significantly slower, more clunky and expended the number of clicks
between me and what I actually wanted to do (figuring that they would
only have tested it locally and be under the impression that they had
somehow improved the site with AJAX), I used the 'allow the pop-up'
option. IE then re-loads the page in its 'pop-ups allowed' state, but of
course, being AJAXed, the site has lost its context and no longer thinks
it is my first visit to the new UI, and so no longer wants to show me
the survey pop-up. A cynic might think that the designers of the new
AJAXed UI had done that deliberately in order to avoid the survey
generating negative feedback, but, on the principle that you should
never attribute to malice anything that can be explanted by ignorance, I
concluded that web developers responsible where too inexperienced to
have taken into account the (default) behaviour of IE 8 with regard to
pop-ups.

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, did not have user stories (!) and were
probably required to show some sort of accountability to the parent
company (eBay). It is a public site I worked on and need not be
mentioned here (it is embarrassing, but was well-paid).

The problem with the survey is that when the site has problems like
that, the user may just move along to the next site, unless he feels
like being helpful.

Instead, it is better build a user experience design that lets the user
get done what he wants easily.
 
T

Tim Streater

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.
 
J

John G Harris

What makes anyone think that F1 is Help?
<snip>

Once upon a time, when IBM made Personal Computers, they invented a
design standard for Graphical User Interfaces. It said, for instance,
that the menu bar had File at the left hand end and Help at the right
hand end. And it said that F1 is the Help key, preferably context
sensitive.

This standard became so common that people still assume that F1 will be
the Help key, and they are often right.

John
 
T

Tim Streater

John G Harris said:
<snip>

Once upon a time, when IBM made Personal Computers, they invented a
design standard for Graphical User Interfaces. It said, for instance,
that the menu bar had File at the left hand end

Really? Before Apple did it? When was this then?
and Help at the right hand end. And it said that F1 is the Help key,
preferably context sensitive.

This standard became so common that people still assume that F1 will be
the Help key, and they are often right.

Even if they are "often" right, that's still no reason for things like
"Press F1 for Help" or "Press CTRL-D to add to favorites" (sic) to
appear on websites, and such website-creators should be smacked.
 
J

Jeremy J Starcher

Really? Before Apple did it? When was this then?

Oh yes. [File] on the left hand end was common long before Apple. You
*do* realize that we used computers long before they had graphics, don't
you? Text screens that still used a 'quasi GUI' by drawing 3D effects
and shadows ....

I can't swear to it ... but it seems like Turbo Pascal for the CP/M
machines had a 'file' drop down in the left corner and I do have a word
processor for my Sol/Helios machine (running PT-DOS on an 8080 S100 bus)
that has 'File' in the correct place.

The next oldest machine I have prints direct to paper, so we won't count
that.
 
T

Tim Streater

Jeremy J Starcher said:
Really? Before Apple did it? When was this then?

Oh yes. [File] on the left hand end was common long before Apple. You
*do* realize that we used computers long before they had graphics, don't
you?

:)

First computer I saw was a KDF9 in 1963. First one I programmed was an
Elliott 803 in 1965. I used Newton's method to calculate square roots
and learnt about precision in floating point arithmetic, how you better
not test for equality.
 
D

David Mark

When I do have clients they ask me to
check out different libraries they themselves have come across, and one
explicitly encouraged me to use a /big/ library like Dojo instead of a
small one like jQuery so I would not be re-inventing the wheel.

You've certainly got fools for clients. :) In the case of Dojo, the
"wheels" they invented are non-starters (think square). That's why
they are constantly trying to re-invent themselves. Like Prototype,
I've heard they have plans to scrap most of what has come before and
build a new "Dojo" from the ground up. Which raises the question of
what is a "Dojo" or a "Prototype"? AFAICT, they are simply brand
names that are largely synonymous with futility.
Tilton's Law: Solve the right problem.

Oh brother.
In this case, if the problem is
that a JS library has a bug, the solution is to fix the bug, not burn
the library and have every programmer who wants to put up a web page
spend five years learning HTML and CSS and browser variability.

There are so many things wrong with that, I don't know where to
start. For one, JS is intended and best-used for enhancing HTML and
CSS. It's not a substitute. And "browser variability" is no big deal
these days (provided authors do not attempt to solve every conceivable
problem for everybody). Yes, the GP library authors fail to get this
basic concept, so they perpetually make browser cross-scripting look
much harder than it is. It's not the browsers; it's *them*. If they
weren't trying to do way more than is needed for any given site or
application (i.e. design a monolithic do-everything JS library), they
wouldn't have so many problems. Can't fix their mindsets, so the only
alternative is to warn beginners to avoid their ill-conceived
products.

Furthermore, I've done more charity work in this area than anybody and
it is typically unappreciated by needy library authors who very
quickly grow confused and irritable and dismiss suggestions as less
than constructive. Then, a year or two later, something clicks and
they announce to the world that *they* have figured it out (see John
Resig and the case of jQuery's UA sniffing). And in the interim,
thousands more blissfully download defective versions, polluting the
Web with garbage code that somebody will eventually have to clean up.
That's actually rather obvious, so it's fun seeing the alpha males
around this NG forever arguing against it.

Arguing against what?
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. They didn't listen to their critics, didn't
learn from their mistakes and just look at them today (going back to
the drawing board). I have clients who tried Dojo at some point and
I've heard the horror stories. I'm sure most of them wish they had
never listened to parrots like you. FUD, squawk! Re-inventing the
wheel! Write from scratch; write from scratch; assembly language;
snark; ivory tower; tweet! Use Dojo. Who's a pretty boy? :)

And as for high billing rates, those are a welcome side effect of mass
ignorance and impotence in this area. The fewer competent JS
developers, the better. ;)
 
S

Scott Sauyet

David said:
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.

-- Scott
 
G

Garrett Smith

The (snipped) story about the dangers of home-made china, while
interesting, is not a very good analogy to what amateurs are doing on
the web. At the very least, the analogy grossly exaggerates the
consequences: build your own china, and people can die from lead
poisoning; use a substandard script you copied from somewhere, and your
homepage could break for a certain percentage of visitors.

I realize that this is going to be a minority opinion in a technically
oriented group such as this, but I still think that everybody - even the
most clueless newcomers - should be allowed, and even encouraged, to
play on the web any way they like. Let them use huge animated GIFs,
background sounds,<blink> tags, UA sniffing, jQuery or any other JS
library, let them proclaim that "this site is best viewed with
{browser}", etc. Anything to get them interested and give them a sense
of achievement. Some will become fascinated enough that they'll
eventually learn how to do it right. Other's will not.

I'm firmly convinced that the low barrier of entry, combined with the
openness of the basic technologies is what allowed the Web to become
widely accepted and grow to what we see today. Had it been necessary to
hire a professional to build a homepage, none of this would have happened.

The low barrier of entry has its downsides, of course. Fred (to use a
random name) looks at the source code of a document, decides to try this
out for himself, writes 'alert("Hello, world")', and is delighted with
the result. Three days later Fred's applying for a job as a JavaScript
developer. At the time, there isn't any useful certification process or
formal training which can be used to decide if Fred really knows what
he's talking about. I know that some companies use certifications to
screen applicants, but that's a very bad practice, IMO. Many of the most
talented people I've met are self trained. I've also seen some of those
certifications and heard some enlightening anecdotes about how to get
them in a few days, provided you know the right people or are willing to
invest some cash. The technology is too new and moves too fast for these
types of indicators to work. This leaves us with a gazillion
web/software "developers" and even so-called "engineers", and no
objective way to tell what that means. If he's got a nice homepage, and
the interviewer doesn't know the right questions to ask, Fred may even
get the job. And maybe he'll even grow into it, who knows.

Lack of skill is a fundamental cause of problems with the web.
Hallvord's blog covers many such examples.

I have interviewed at two design firms where I was brouht into a sort of
"demo" meeting room where I was asked to pull some URIs of things I've
worked on on the big monitor. "What a stupid idea," I thought, while
obliging their requests, showing various widgets I've made and sites
that I have worked on; including those whose code is so embarrassingly
bad that I won't even mention them here, yet the clients were impressed
with that awful code. They seem to have observed those works as
resembling something of competence, they did not look at any of the
source code to see that they were a total disaster, which is what I do,
and had done prior to regretfully taking one of the admittedly well-paid
jobs.
These are not the people I'm competing with. As far as I'm concerned,
they're playing a completely different game. I don't offer "scripting"
or "web design" or "programming". I'm hired for my experience, past
successful projects, my network of colleagues with different special
areas, the infrastructure I can supply, and my ability to talk to both
customers and colleages in a friendly and professional manner. But the
main difference to people like Fred is experience. I wrote my first
program at 13. In the past 11 years, after dropping out of university, I
have worked with many different OSs, on different hardware
architectures, in very different organizational environments, used
different languages (computer and natural), different frameworks and
paradigms, alone or in teams, client side and server side, etc. This
gives me a perspective that newcomers cannot possibly have, and that
experience goes into my hourly rate (the project mentioned earlier
notwithstanding). After hiring 2-3 Freds, customers usually want to "do
it right this time" and hire an expert.


Absolutely.

While that is true, if the understanding is actually a misperception of
consequences, then a false principle has been created and will be
misapplied in the future.

What it really boils down to is knowledge.
Everybody starts at square one. I'm not particularly proud of the work I
did 12 years ago. Looking back at that time, I certainly wasn't
qualified for some of the tasks I was given, but that was at the height
of the dot-com bubble, and companies were desperate to hire just about
anybody who knew what a computer looked like. So I got to work on real
projects. I don't see any other way for newcomers to get hands-on
experience. Of course, they should be honest and not inflate their own
abilities, or call themselves "gurus" or "ninjas" after a year or two.
Or ever ;-)

These terms, "ninja" and "guru", are applicable to acts of mysticism.
Individuals employing what Richard likes to term "mystical incantations"
don't really understand what they are doing but get a result and may
apply a post hoc thesis which may or may not be correct. To the observer
who understands nothing, the outcome of the result cannot be explained
and so the programmer providing not providing an explanation of the
outcome is irrelevant.

A consequence of producing an inexplicable result is that those who
create such results can be named as "ninja" or "guru" -- entirely
meaningless terms that come with a negative connotation to a very
limited number of individuals (myself included).
I was interviewed about two years ago by a senior front end engineer
with 15 years experience. The first and only technical question was to
build a rich text editor.

Write a rich text editor from scratch? Did he want that with or without
a flight simulator plugin? What an odd thing to ask as a demonstration
from a job applicant.

(quote reordered)
Experience without knowledge isn't much use. ...
There is no substitute for knowledge [Deming].

I respectfully disagree (with you and Prof. Deming). Knowledge can be
acquired in a short time, if necessary, but experience can't. Deming
died before information systems like the web made it trivially easy to
retrieve required facts from online references. For example, I often
don't remember the exact name or order of arguments for a method, but I
know from experience that such a method exists, and that I can look it
up when I need it. If I can't find the required information, I know
(again, from experience) where I can ask questions and how to formulate
them. There's a German expression which unfortunately can't be directly
translated into English: "Fachidiot". The word describes a person who is
an expert in a limited area, but ignorant about everything outside his
field of expertise. Such a person would have a lot of knowledge about
his area, but _experience_ goes further than that. It implies that
you've seen things fail when you thought that was "impossible", it
implies that you've learned how to deal with difficult co-workers, and
it also implies that you can judge the consequences of your
implementation on systems outside of your own area. For example, from a
JS point of view, that would include issues relating to server-side
proxies, security, network problems, version control, and even
psychology: an experienced person will have heard about ways to improve
the user perception of a piece of software, and the best way to
formulate error messages. A knowledgable newcomer will still have to
learn these things.
That newcomer is missing knowledge.

That newcomer may continue about the way he has done things all along
with varying degrees of success. He may do so for many years and may
gain experience in doing these things without being able to explain
them. This describes an individual who is experienced but lacks knowledge.

The difference between an individual who can explain something vs one
who cannot explain comes down to knowledge and understanding. As was
demonstrated in my interview with the senior front end engineer,
experience was not a substitute for knowledge.

An experienced developer may, for example, formulate a solution which
works based on trying to replicate what worked in the past and may enjoy
varying degrees of success with this.

An example of this is seen in the opening lines to Sencha:

| window.undefined = window.undefined;

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

The authors of Ext-js and dojo may have more experience than I do. What
does that say when they continue to publish code that shows a lack of
knowledge?

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.

The author is of such code may be overlooking important considerations
of code quality including clarity, efficiency, extensibility, 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.

A precursor to making assessments of front end skill is the ability to
make assessments of the quality of front end code. For that, I have been
working on the code guidelines document.

<http://jibbering.com/faq/notes/code-guidelines/>

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.

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

"Avoid interdependencies" is better 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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,077
Messages
2,570,567
Members
47,203
Latest member
EmmaSwank1

Latest Threads

Top