Why won't my (j)query work?

D

David Mark

David has latched on to one very specific issue that he has researched
and apparently understands well, whereas many other javascript authors
do not.

I haven't latched on to any specific issue. I've pointed out
_hundreds_ of issues in your favorite script (much to your chagrin).
The problems are systemic and (as you well know) the authors are
incapable of solving them in a timely fashion (or at all). Why do you
keep popping up and blithering the same nonsense?

It is clear that a CSS selector based interface was a terrible idea
from the start and none of the various libraries came close to
realizing it (in three years!) As this is the primary interface that
is supposed to make it easy for neophytes to "Ajaxify" Web pages, I
think the point is clear.

And, of course, now that we have QSA (and no backward compatible
alternative), time has passed these things by (as evidenced by the
three-year low activity in the jQuery group.) ;)
He repeatedly argues this same point ad nauseum, twisting it
slightly to make new arguments and making long, repetitive posts here
which could best be summed up in one sentence - "Correctly handling
attributes requires considering some special cases and browser quirks,
which most libraries and js authors do not do correctly."

Don't be stupid. That was the discussion I had with - for example -
John Resig, over two fucking years ago. You were around for that.
Amnesia? And where does he get off designing something he can't write
and then slathering it all over the Web? What a mess. :(

And there couldn't be anything less useful than DOM libraries/
frameworks that can't even _read_ documents. What does that tell you
about the progress on those fronts? These are supposed to be the
magic solutions that take all the guesswork out of it for neophytes.
But the authors are guessing themselves (and not very successfully).

Do you not understand that everything is built on top of documents and
attributes?
Okay, we get it. Can we move on? Clearly, David has identified some
problems in major libraries.

Clearly you want attention. :)
Clearly, these problems are not as show-
stopping as he makes them out to be, otherwise the bug trackers for
each project would be filled with complaints from users.

They _are_ and you know it. I've posted _hundreds_ of links to just
such examples (and you bitch every time that I'm "making fun"). So
what are you trying to say now?!

And it is perfectly possible to waste tons of time working around the
land mines in something like jQuery, resulting in an app that
_appears_ to work, but will break when the next browser (or jQuery
version) comes out. We've been over this a million times.
If the error
results in a css selector engine returning an incorrect result in a
specific case using an attribute selector for a specific tag and
specific attribute, then that's a problem.

Obviously that's a problem, especially when it is correct in half and
wrong in the other half. Web developers aren't particularly vigilant
when it comes to testing you know.
But clearly not one that
most users will ever encounter,

What in the hell are you talking about? You should see the result map
for jQuery, YUI, etc. They are more red than green in anything but
the very latest browsers in standards mode. Great leveler those are.

But back up a second, even without the map, you should be able to
predict the spottiness based on what I've already told you. And you
know damned well that the typical jQuery user is clueless about such
things, so what will they do when things go wrong? Waste a bunch of
time furrowing their brows, post to the jQuery group and get a few
guesses in response, or perhaps give up and re-work their app to use
some other part of jQuery? Or maybe they try a wholesale substitution
hoping that jQuery has fixed itself. It's all a waste of time and
money. The marketing says the opposite and I'm tired of hearing you
parrot that message.
nor justification for throwing out
libraries entirely or declaring their authors inept.

It _is_ justification for throwing them out (the authors too). It's
been three years (going on four) of wasted time due to incompetence
(and blithering idiots like you). Do the world a favor and shut up
about this stuff.
Again, "don't
throw the baby out with the bathwater."

You always say that. What sort of baby is jQuery? Rosemary's baby?
He reminds me a bit of Gomer Pyle issuing a citizen's arrest:

You know you don't want to start up with that sort of shit,
Haney. ;) And this ain't about some hick town. These issues affect
the whole world. Basically, a small group of overconfident neophytes
thought they were starting a revolution... three years later, the Web
is completely fucked and nobody seems to know why. Get it?
What David is doing is publicity, nothing more.

That makes no sense at all. Why is it that my code and ideas always
end up (in some form) in jQuery, Prototype, etc. It's usually years
later after I've beat the authors over the head with them. Why should
it take such an effort to get people to see straight? And why are you
bitching about it? Oh, that's right. You want publicity for whatever
bullshit you are doing these days. ;)
He's said he's writing
a book about this stuff,

I am and several samples have already been posted (and appear to be
quite popular, thank you very much!)
and he is an independent js author trying to
seek attention.

What's an "independent js author?" I do a lot of consulting for Web-
centric companies, if that is what you mean. Yes, JS is typically
involved. Sue me!
He believes that destroying the reputation of the js
libraries will boost his credibility and put him in the position of
respected authority on the matter, which will help him push whatever
it is that he has to sell.

Fait accompli. :)
It's so transparent that it's just worthy
of an eye-roll at this point.

And the more you protest...

[...]
Nothing can be so amusingly arrogant as a young man who has just
discovered an old idea and thinks it is his own.
   -- Sidney J. Harris

Now that sounds like Resig and the rest. They "found" something that
existed years before (and then completely screwed it up for years,
eventually admitting they didn't understand it at all).
 
D

David Mark

Well said, thank you.

And which part did you _get_ before I posted it? ISTM that Matt Kruse
has been saying for years that there's nothing wrong with jQuery.
Then every time I point out another fatal flaw, he goes nuts and
blames me for "obsessing" about _his_ favorite library.
 
D

David Mark

I found it to be a quality article, though I didn't necessarily expect
posters in this particular thread to think so. The 'quickly dismiss'
type reaction from said posters was expected as well.

It is _not_ a quality article. It's a step backwards. Read it again.
That highly technical ~16 page FAQ article on a topic of such narrow
scope *is* the PR for MooTools, jQuery, YUI, etc.

What highly technical article? The one on browser sniffing? Is it
your contention that it is so thick as to drive people to use God-
awful scripts like jQuery, MooTools, YUI, etc.? Sounds like mass
hysteria to me. Just learn to read instead. ;)
If a thorough understanding of CLJ FAQ represents the alternative to
libraries -- particularly what's related to DOM and AJAX -- the
libraries have an exceptionally bright future.

Don't be silly (a tall order I know).

http://www.cinsoft.net/mylib.html
 
M

Matt Kruse

Surely you know you are trying to hide the many, many valid factual
criticisms by claiming they are all one point.

There are lots of valid criticisms. The relentless hammering of the
attribute issue is what has gotten tiresome. First in the form of
criticizing jQuery's attr(), then in jQuery's selectors, then
MooTools, then YUI, etc, etc.
No, I don't think you do get it.

Could you be more vague?

Matt Kruse
 
M

Matt Kruse

ISTM that Matt Kruse
has been saying for years that there's nothing wrong with jQuery.

If you check the archives, I believe you will find just the opposite.

Rather, I think I realize its flaws yet still acknowledge its value
and position in the world of browser scripting.

Matt Kruse
 
D

David Mark

There are lots of valid criticisms. The relentless hammering of the
attribute issue is what has gotten tiresome. First in the form of
criticizing jQuery's attr(), then in jQuery's selectors, then
MooTools, then YUI, etc, etc.

They all have the same basic problems in their lowest-level code.
Sounds like a plague? And none of them have fixed a bit of it in
three years (as you well know).

http://groups.google.com/group/jquery-dev/browse_thread/thread/baef5e91bd714033#

http://groups.google.com/group/jquery-dev/browse_thread/thread/fe658871a8bff208#

http://groups.google.com/group/jquery-dev/browse_thread/thread/db8554d10e2c1899#
Could you be more vague?

Could you be more blind? But that's an insult to blind people. The
first of the above linked examples is titled:-

"attr() is still very broken in 1.4a1" (By Matt Kruse)

....and this was two years since the original "argument" (here) between
you, me and Resig. It couldn't be a more critical issue. Of course,
your main concern seems to be PR at this point. ;)
 
D

David Mark

If you check the archives, I believe you will find just the opposite.

Hardly. First there was no browser sniffing, then voila! there was
tons of it (and you raced off to tell Resig why this was bad). Then
there were no "major bugs", no problems with attributes or queries,
etc. If I didn't tell you what to tell them, they'd be worse off than
they are now (hard to imagine).

From the fall of 2007:-

http://groups.google.com/group/comp...d1bcce6e6a/03c4d326340e7f7d?#03c4d326340e7f7d

Ever since, every time I point out another flaw in your "argument" for
jQuery (and things like it), you assert that "nobody would do that" or
it's an "edge case" or "I never had a problem like that". It's all
bullshit and you know it.

It's a 60K (approx.) blob of JS that you have been stuck with for
years because you made a terrible decision to use it in the first
place. As you have admitted, you are now _stuck_ with some old
version (one that uses UA sniffing) because there's just no way to
upgrade the thing without breaking your apps. You should rightfully
be out on the street for such buffoonery. Even if you are self-
employed, you should throw yourself out. :)
Rather, I think I realize its flaws yet still acknowledge its value
and position in the world of browser scripting.

And for that you look like a deluded jackass. Apparently I can't help
you recognize that.
 
M

Matt Kruse

I haven't latched on to any specific issue.
...
And there couldn't be anything less useful than DOM libraries/
frameworks that can't even _read_ documents.  

Well, there you go. See?
Do you not understand that everything is built on top of documents and
attributes?

Clearly, not everything, as I have never had issues with jQuery
accessing attributes.
What in the hell are you talking about?  You should see the result map
for jQuery, YUI, etc.  They are more red than green in anything but
the very latest browsers in standards mode.  Great leveler those are.

Because your tests focus on the problems. If your tests covered all
attributes and every situation you could dream up, the reds would be a
very small percentage of the total. The fact that they exist means
something should be fixed, but you're over-dramatic about it.
It _is_ justification for throwing them out (the authors too).  

We disagree...
Basically, a small group of overconfident neophytes
thought they were starting a revolution... three years later, the Web
is completely fucked and nobody seems to know why.  Get it?

You definitely have a flair for the dramatic.

On the contrary, the web is fine and there are a few problems. This is
the nature of any evolutionary, iterative process. Very few things
have the luxury of being designed from scratch by experts. Most things
evolve, and are built by those with the time and the big ideas but not
always the expertise, usually on top of what they already know and
built in a way that is familiar to them.

Is not the hardware you are probably using right now built on top of
short-sighted ideas, flawed designs, hacks, etc? No one in their right
mind would design PC hardware from scratch in the form it is now. It's
highly flawed and ends up costing countless dollars in support and
maintenance. Throw a highly flawed, evolved OS on top of the highly
flawed hardware and you have an insane mountain of patches on top of
patches on top of fundamentally short-sighted ideas. Yet somehow it
seems to work, and makes the internet what it is. Amazing, isn't it?
How something useful can come out of such imperfection?

There are countless examples of projects and products that have
serious flaws and suffer from poor/short-sighted initial design, yet
still function well enough to be useful and beneficial. If you
measured all devices and solutions by the same stringent requirement
of perfection that you expect of js libraries, you would surely be
living without any technology at all, for it is _all_ flawed in a
similar manner.

And this is the real nature of the disagreement all along - I
acknowledge your technical criticisms of these libraries. However, you
think these problems are their achilles heel and should prove them
unworthy of any use, while I accept the flaws as an unavoidable by-
product of progress and move forward in spite of them. This really
isn't much of a technical discussion at all (the flaws are quite
demonstratable) but more a philosophical one.
That makes no sense at all.  Why is it that my code and ideas always
end up (in some form) in jQuery, Prototype, etc.

Because you imagine it to be so? It's not like you are the only person
in the world capable of coming up with ideas and code similar to your
own.
You want publicity for whatever
bullshit you are doing these days.  ;)

Yes! Definitely, for all that stuff that I am doing. All of it. And
wow, let me tell you, there's a lot of it. So I need a lot of
publicity. For all the bullshit.
I am and several samples have already been posted (and appear to be
quite popular, thank you very much!)

Writing a book is a good thing. Being clear about your motivation for
all this criticism is important.
Now that sounds like Resig and the rest.

Certainly, and "the rest" surely includes most people in these
discussions as well.

Matt Kruse
 
D

David Mark

Well, there you go. See?

No. As you well know, there are at least a hundred others, starting
with browser sniffing. Go back and read my reviews over the years as
you seem to have focused on just one issue. ;)
Clearly, not everything, as I have never had issues with jQuery
accessing attributes.

There you go again. It doesn't matter what problems you and your
v1.2x preserve have run into. As you are using a UA-sniffing version
in an IE6-only environment (!), you really have no idea what issues
are present.
Because your tests focus on the problems.

Certainly not.
If your tests covered all
attributes and every situation you could dream up, the reds would be a
very small percentage of the total.

It doesn't get much more comprehensive than this:-

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

....and I have a similar one for queries that will be posted early in
the new year. It's just as comprehensive and jQuery's plot has more
than a spatter of red (and the freckles change position on clicking
the Compatibility Mode button in IE8). So they aren't even close in
the _latest_ version of IE.

Also, if you had an ounce of competence, you could predict the results
as I've already shown you the (one line of) code that throws
everything off.
The fact that they exist means
something should be fixed, but you're over-dramatic about it.

Don't be naive. Lots of things need to be fixed and you've tried to
convince them to do so. Years have gone by and nothing has changed.
They don't _understand_ the problems and their "reasoning" is always
very child-like. What are you clinging to?

And what if they did suddenly fix the most basic problems? How would
that help all of the sites and apps built with older versions? Are
they all to re-download the stupid thing and re-test everything? That
wasn't the deal, was it?

How much work did they have to do to make the thing work with IE8?
Seemed like an epic struggle to me. In contrast, I didn't lift a
finger to change My Library (or even bother to test it with IE8 until
six months later). Unsurprisingly, it all worked (yes, even the
attribute-based queries). That's how cross-browser scripting is
_supposed_ to work. It's "write once, do nothing" when done right.

Downloading a new set of misconceptions from Resig and co. every six
months is the antithesis. And you realize that his attribute queries
(among many other things) are completely fucked up _to this day_, with
no hope in sight of a resolution? So even if you downloaded it
_yesterday_, you are still waiting for him to wake up and solve
problems that should never have existed in the first place (IE6 came
out last century after all).
We disagree...


You definitely have a flair for the dramatic.

Oh shut up. I'm tired of you changing the subject to _me_. That's a
loser's resigned stance.
On the contrary, the web is fine and there are a few problems.

Oh brother. What does that even mean?
This is
the nature of any evolutionary, iterative process.

No, fucking up trivial little scripts for years is not some noble
scientific pursuit. It's just plain fucking up (and on a huge scale
as JS has grown in popularity due to the Ajax hysteria).
Very few things
have the luxury of being designed from scratch by experts.

I could write that miserable script from scratch every weekend if I
wanted to. Hell, I wrote a much better one in a weekend and it is
still standing.

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

And I'm certainly not alone in this ability. Why do we need a million
monkeys on this case?
Most things
evolve, and are built by those with the time and the big ideas but not
always the expertise, usually on top of what they already know and
built in a way that is familiar to them.

Big ideas?! Like browser sniffing? And whose ideas replaced those
for most of these scripts?

I've said this before, but you are a blithering fucking idiot.
There's just not much else to say at this point. How many years are
you going to keep your head in the sand? If you can't see reality,
reality can't see you?
Is not the hardware you are probably using right now built on top of
short-sighted ideas, flawed designs, hacks, etc?

Off in the weeds again. There's no parallel between jQuery and PC's.
There is a parallel between jQuery and the collected works of Ed Wood.

[snip rambling about PC's]
There are countless examples of projects and products that have
serious flaws and suffer from poor/short-sighted initial design, yet
still function well enough to be useful and beneficial.

jQuery was like "inventing" an eight-track player a decade after CD's
came out (and then bitching about critics for years while slowly,
painfully changing the design until it actually is a CD player). But
this ain't about entertainment is it? ;)
If you
measured all devices and solutions by the same stringent requirement
of perfection that you expect of js libraries, you would surely be
living without any technology at all, for it is _all_ flawed in a
similar manner.

No, stupid. This is about software. There are very definite
parameters for success. jQuery is an abject failure, even as a
hobbyist creation.
And this is the real nature of the disagreement all along - I
acknowledge your technical criticisms of these libraries.

Only after I beat you over the head with them for months and years.
You can't go back in time and change history.
However, you
think these problems are their achilles heel and should prove them
unworthy of any use, while I accept the flaws as an unavoidable by-
product of progress and move forward in spite of them.

See above (the blithering idiot comment).
This really
isn't much of a technical discussion at all (the flaws are quite
demonstratable) but more a philosophical one.

It's more like one person banging their head against the same wall for
years while rational observers try to talk them out of it. At this
point, I say knock yourself out. ;)
Because you imagine it to be so?

You are such a disingenuous ass. You _know_ it to be so. You've been
the proxy numerous times.
It's not like you are the only person
in the world capable of coming up with ideas and code similar to your
own.

Don't be an ass. There are plenty of examples where the cites lead
back to me (and many more where ideas were obviously appropriated
without permission). It's all a matter of public record. Start with
the browser sniffing and all of the various feature testing (and
attempts at it) that replaced it in jQuery (and others). Now who beat
those ideas into the public consciousness for _years_ to make that
happen?
Yes! Definitely, for all that stuff that I am doing. All of it. And
wow, let me tell you, there's a lot of it. So I need a lot of
publicity. For all the bullshit.

Do you have to blither so? It gives me a headache. :(
Writing a book is a good thing. Being clear about your motivation for
all this criticism is important.

Again. The criticism and resulting change in attitudes started long
before the book project. So what are you saying? It's all been a big
conspiracy to sell some stupid book? Hint: there's no real money in
books (that's one reason mine is overdue).
Certainly, and "the rest" surely includes most people in these
discussions as well.

What are you talking about?
 
D

David Mark

Indeed, if you chart the # of posts in a graph (assuming you even
accept the theory that # of posts is an indicator of use)

That was always your theory, genius. Well, until the slide started.
Now it's nonsense I guess. I say it makes sense that the more rubes
out there trying to use jQuery, the more questions will be posted (and
unanswered of course).
it doesn't
look like there is a nose-dive at all.

What data were you looking at?

4202 4167 3791 3351 2655 2904 2895 2650 2500
2251 2280 1790

Do you really need to chart that?

Empirical evidence points to
the same conclusion for me. *shrug*

What does that mean?
 
D

David Mark

Are the charts on that page showing anything real?

Almost certainly not.
For example, in the
'Distribution of the top web technologies' there's no mention of Dojo or
ExtJS. Surely Dojo or ExtJS would be as big, if not bigger than,
prototype, scriptaculous, or mootools?

To be fair, you don't see those two much on the public Web. But I
would expect at least a blip for each. Whatever.

And I contend that jQueery, Cowtools, Prototripe, FUI, etc. are more
public blunders than technologies. Yeah, we've got a little pet name
for everybody. ;)
 
S

S.T.

Are the charts on that page showing anything real? For example, in the
'Distribution of the top web technologies' there's no mention of Dojo or
ExtJS. Surely Dojo or ExtJS would be as big, if not bigger than,
prototype, scriptaculous, or mootools?

http://trends.builtwith.com/javascript/Ext-JS
http://trends.builtwith.com/javascript/Dojo-Toolkit

There are no perfect web analytics but there methodology seems
reasonable. Spider a couple pages on a couple million domains on a
regular basis looking for a presest list of libraries, MIME types, etc.
and log the results.
 
S

S.T.

....

That was always your theory, genius. Well, until the slide started.
Now it's nonsense I guess. I say it makes sense that the more rubes
out there trying to use jQuery, the more questions will be posted (and
unanswered of course).

Your contention is that when IE8 came out, there were such problems with
jQuery that the support forum... began to dry up? Does that make any sense?

Guessing fluctuations are more related to jQuery admin concluding Google
Groups is an awful support forum at 20K+ subscribers and beginning to
look elsewhere:
http://ejohn.org/blog/google-groups-is-dead/

.... along with typical yearly trends:
http://www.google.com/trends?q=jquery&ctab=0&geo=all&date=all&sort=0
 
D

David Mark

Because you imagine it to be so? It's not like you are the only person
in the world capable of coming up with ideas and code similar to your
own.

* isOwnProperty, isHostMethod, etc. (nod to Thomas on the latter)
* Detecting broken attribute implementations (e.g. MSHTML)

Remember Resig's question about a "magic flag" for attributes? I
do. ;)

http://groups.google.com/group/comp.lang.javascript/msg/56d22b30b168fbb5

A salient quote:-

"Error-prone? Doubtful. Where's your test suite-backed attribute/css
manipulation code, I'd love to see it!"

And before anyone chimes in about "helping out" (I'm the devil and
thank God for people like Matt Kruse). I gave him (Resig) the answer
later in that very thread. But he doesn't seem to understand
abstractions; he wants pictures. Then again, the pictures didn't help
either. :)

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

Here's another quote from him in that same thread:-

"Yawwwwnnnnn.... this is, quite possibly, the most inane set of
ramblings set up by someone who has obviously never created a
JavaScript library of any kind, nor has used JavaScript code in any
sort of production environment."

Yeah, the primary topics of those "ramblings" were that his browser
sniffing was unnecessary and error-prone (as he announced almost
exactly a year later) and that he was mixed up about attributes and
properties (never figured that one out).

* Detecting supported events (e.g. how do I know if mouseenter is
supported)

http://perfectionkills.com/detecting-event-support-without-browser-sniffing/

* Detecting proprietary styles (e.g. How do I set opacity cross-
browser?)

* The inject-and-detect pattern (mangled a year later by Resig as
"detect-and-inject")

I came up with those last two and Peter helped to refine them. Of
course, both of those ideas can be traced back further to Richard
Cornford. I don't think I've made any secret of the fact that his
ideas have influenced mine.

http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting

http://peter.michaux.ca/articles/cross-browser-widgets

And then there is the CWR project, which was discussed endlessly
here. I estimate I wrote 98% of _that_ code (and certainly influenced
the other 2).

* Virtually anything to do with the "unknown" properties in MSHTML ;)

Who else even knew about those, let alone made the connection to the
IUnknown interface? Every time I brought those up in here, it was
"what are you talking about?" And I mean even in the last year or
so. Perhaps that explanation should be in the FAQ as I have to repeat
it so often.

* Dynamic API to simplify feature detection

It seems like that last one is taking _forever_ to percolate. It
should be patently obvious that you can't abstract an unknown
environment with a static set of methods. Most inventions are simple
(sometimes too simple to recognize). ;)

Unfortunately, rubes like you like to chime in with "Maybe that's what
people are more comfortable with". Well, it's completely _impossible_
to do progressive enhancement (supposedly jQuery's reason for being)
that way. Think.

Example using My Library:-

if (Q.prototype.fadeIn) { // Obscure DOM tests behind the scenes
// Cool fading enhancement here
}

Now what would that look like in jQuery or any of the others? Like
this:-

// Cool fading enhancement here come hell or high water

....which is nothing but progressive destruction. That's why they keep
"raising the bar" for browsers (e.g. only supporting the very latest
versions). They are living in 2001 and the sequel is about to
hit. :)

Want to know what the future holds for JS libraries? Just follow my
posts. ;)

The last word on attributes:-

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

The last word on viewport measurement:-

http://www.cinsoft.net/viewport.asp

Further last words on keyboard monitoring and other hot topics coming
soon to a Website (and book) near you. Be sure to tell Resig to tune
in for the lesson on box models. :)

The epitaph for jQuery and the like:-

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

And, of course, the mother of all JS libraries, which has been aped
endlessly:-

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

If I left anything out, it's likely in there. :)
 
D

David Mark

Your contention is that when IE8 came out, there were such problems with
jQuery that the support forum... began to dry up? Does that make any sense?

For one, it's not exactly a support forum (they have one of those
too). For two, there's no way in hell that IE8's arrival caused
anything good to happen for those who had staked their careers on
jQuery. Seems there are a lot fewer of them around these days. I
don't need GG to tell me that. ;)
Guessing fluctuations are more related to jQuery admin concluding Google
Groups is an awful support forum at 20K+ subscribers and beginning to
look elsewhere:http://ejohn.org/blog/google-groups-is-dead/

The number of people who clicked the "subscribe" button in the past is
irrelevant. It doesn't mean they read (or even receive) messages from
the group. And that rant from Resig sounds like an excuse for the
decline in participation.

Posting a graph without drawing conclusions is pretty useless. What
are you trying to say? For example, one trend is that a lot of people
are reading articles critical of jQuery. ;)
 

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
473,787
Messages
2,569,629
Members
45,331
Latest member
ElaneLyttl

Latest Threads

Top