IE was around for a long time and the FF
developers explicitly decided not to support
nonstandard features that not just IE but tens
of thousands of websites were using.
IE's nonstandard features are mostly hacks, and IE has only brain damaged support for CSS. If you ever try to build an actual application in javascript, you can't fail to notice this. Mozilla's decision of supporting whe W3C standards was done in order to have a truly powerful tool for web developers (i.e., people who want to build real *applications* in the web, not just homepages -- for these, i.e. is mostly OK). That, and the fact that it enables the applications themselves (Mozilla, Firefox, Thunderbitd, etc.) to be built in the same platform -- XUL, XBL, javascript and CSS.
The standards jihad has held back the Mozilla
project big time. Why not just display a "non
compliant code" icon on the status bar
somewhere... even display a security risk popup.
Mozilla has adopted some nonstandard features from IE, the most used ones are XMLHttpRequest and innerHTML. They are adopted when they are useful and make sense. There are discussions about adopting others, like document.all, but this can't be done easily, because many sites assume that if one nonstandard feature is present, then all of IE's quirks can be counted on: I can't tell you how many times I have seen this:
if (document.all) {/* IE stuff */ } else if (document.getElementById) {/* Mozilla stuff... */ } else {/* tell the user it won't work... */ }
The fact is, Mozilla trying to copy IE's quirky behaviour would most likely fail, because Microsoft would be free to make IE a moving target (the same way they have done countless times before) as soon as they felt threatened (which seems to be happening now -- witness the next "revolutionary" release of IE 7).
Re:Why isn't this already out?
on
Next Generation X11
·
· Score: 5, Insightful
While I agree with most of this, it should be pointed out that local X connections (i.e., the ones in which the server and the client run in the same machine) are usually done via UNIX sockets, not IP (witness the socket in the/tmp/.X11-unix directory while you are running an X session). The reason for it is that UNIX sockets offer less overhead than a TCP/IP stack.
Also, in modern toolkits (GTK, QT) images are usually sent via shared memory (again, only possible when the client and server are in the same machine), which is much more effecient than sending them through sockets.
While it may be true that none of these make sense, these are facts simply observed by humans.
Compare this with the Axiom of Choice, which is an idea created by humans that doesn't make sense in some different, really nasty way. If you think about it in some certain way, it looks obvious (and it would be really bad if it wasn't true); in another certain way, it seems absurd (and leads to some things that simply shouldn't be true).
A quote from Wikipedia:
The Axiom of Choice is obviously true, the well-ordering principle obviously false, and who can tell about Zorn's Lemma?
-- Jerry Bona
(the Axiom of Choice, the well-ordering principle and Zorn's Lemma are all different names to the same idea)
I don't see what's so wrong with this robots.txt, would you please elaborate?
If you mean that the specification doesn't say anything about "Allow:" records, then you have a point. BUT the spec says explicity that robots should ignore unknown "headers" (I take that to mean "records"). Not that it matters, anyway, because any robots other than Googlebot should ignore all "Allow" records.
Sounds mildly sane... but I still think the penalty is too stiff.
If a 16 year old student steals some test answers *in paper* from a teacher can he really go to jail? The teacher's privacy was violated the same way, but no one would *think* to apply a law that theoretically could put the guy in prision for *6 months*.
Or is the penalty way too harsh because what he has done simply involves computers and people just don't know yet how to handle these types of things?
There is no copyright license in the United States today more fitting to Thomas Jefferson's idea of copyright or indeed to the conception of copyright contained in Article 1 Section 8, than ours. [my emphasis]
Please note the concept of the copyright contained in the US constitution (which is more or less the same all around the world): copyright should promote the progress of science and useful arts, and this should be done by giving authors exclusive rights over their work for a while.
Eben Moglen meant that the GPL fits better in the concept of promoting the progress than any other license: most commercial licenses (e.g. MS EULA) seek simply to make money to the company; some free licenses (e.g. BSD) don't require future progress to be shared with society.
Well, for a quick and simple example, instead of writing
function f($a, $b) { return strcmp($b, $a); }
usort($array, 'f');
you could just write something like
usort($array, function ($a, $b) { return strcmp($b, $a); });
With this, functions would be first-class objects, which probably complicates the internals of the language, but it could be added when the reestructuring for improved OOP was done.
This is an unfortunate misconception propagated by people who don't know/undertand Unicode.
Unicode version 4 defines over 1 million code points (what you would call a "character"), including reserved ones. This means a "character" doesn't fit in 16 bits. Unicode doesn't even guarantee it will always fit 32 bits (although it's hard to imagine more than 4 billion characters will be defined some day).
The 16 bit figure derives from the unfortunate implementations of the "wide character" extension of C and C++ (a lot of implementations define a wchar_t having 16 bits, which is *NOT* in general enough to hold an Unicode character). The correct way to encode characters or strings in Unicode is using something like UTF-8 (Java uses this internally), UTF-16, etc.
I't better because every registered namespace has a standardized definition independent of the context. With XML (using the ISBN example), you could make a DTD for use by Amazon, but not everyone else would use this DTD. Some other bookstore (or library, etc.) could use instead a DTD where you should use.
With the new scheme, it's easy to see that "info:isbn:12345" refers to a book, no matter whether it appears as the value of the attribute "isbn" of a element (defined in such-and-such DTD) or somewhere else.
Not really. (...) MySQL used a SQL query, where as Prevayler just tranversed a set of objects. Since Prevayler doesn't include a query language, that's comparing apples to oranges.
I haven't looked at the benchmark, but it seems that Prevalayer traverses a set of objects in memory 3000 times faster that MySQL queries the database and traverses the results.
In other words, that *is* actually comparing apples to oranges.
Actually, the usual way science goes is: from repetitions of testable hypotheses you derive (through induction) axioms (or laws, if you want). Using deduction, you derive theorems from axioms. A "theory" is a set of correlated theorems that (try to) explain a fact.
Theorems are only proven wrong when the axioms they derive from are invalid (it happens sometimes in Physics, but never in Mathematics, where you decide what axioms you want to accept).
After all, in both cases (watching television and reading email) you are choosing to do so, and you are choosing to focus on a single instance (channel or particular email)
I don't think comparing email with TV is a good example. It would be better to compare email with telephone -- and no one thinks it is acceptable to receive tons of spams over telephone.
Telephone spam is usually not a problem, though, because it's much more expensive than email (you have to pay people to make the calls, etc.).
Also, I don't think anyone would argue that prohibiting someone to call me to advertise something hurts free speech. If you want to say something in public, go ahead and say it (or put it on a web site), but I don't have to listen to it, so please don't call me (or send me spam).
It is not possible. Consider the program A that takes as input the description of a program B and input W to the program B, and simulates B on input W, thus halting iff B halts on input W. Then, the associated program HA is exactly the program H which does not exist.
Ok, but I didn't say there's such a program A that works for ANY program B, that's exactly my point -- maybe for each program B, there exists a (unique) corresponding program A that does what you describe.
This is more obviously impossible. If you have an algorithm C that generates HP given P, then I can exhibit an H: on input P, run C on P to get HP, and then execute HP. However, H does not exist, so C does not exist.
Bad wording on my part. When I said "no one proved THIS is impossible" I meant you can generate HP given P, not that *there is* such generic algorithm: this would clearly be impossible.
Still, it might be possible that exists an algorithm that generates HP given any P up to some defined size.
But that doesn't take away from the fact that an intelligent human could look at a source printout and figure out if it halted or not, but no general algorithm can be deduced that would do so.
Well, that's what you're saying...
If you remember ol' Turing's proof, it goes like this:
Say we have a function H that gets the source of any program as argument and returns TRUE if the program halts, or FALSE if not. Now, it's easy to construct a program P that feeds its own source to H and halts if H returns FALSE, or goes into an infinite loop if H returns TRUE.
This clearly is a paradox: P halts iff it doesn't halt; so it's not possible that H exists.
Now, there's something some people don't realise: for this to work, it's necessary that H is included in P (hence H is smaller than P). It's still possible (I don't think it has been proved) that each program P has an associated function HP that decides if P halts or not (it may be the case that HP is bigger than P, hence Turing's proof don't apply).
Your argument only works if you think the human brain does some "magic" and avoid computing at all.
I think the human brain has limited power, so it can only generate H to a given size (well, if you have pen and infinite paper AND you know some algorithm to generate HP given P (again, no one proved THIS is impossible) you could generate an H of any size -- the same way a computer with infinite memory AND the said algorithm could.
IE's nonstandard features are mostly hacks, and IE has only brain damaged support for CSS. If you ever try to build an actual application in javascript, you can't fail to notice this. Mozilla's decision of supporting whe W3C standards was done in order to have a truly powerful tool for web developers (i.e., people who want to build real *applications* in the web, not just homepages -- for these, i.e. is mostly OK). That, and the fact that it enables the applications themselves (Mozilla, Firefox, Thunderbitd, etc.) to be built in the same platform -- XUL, XBL, javascript and CSS.
Mozilla has adopted some nonstandard features from IE, the most used ones are XMLHttpRequest and innerHTML. They are adopted when they are useful and make sense. There are discussions about adopting others, like document.all, but this can't be done easily, because many sites assume that if one nonstandard feature is present, then all of IE's quirks can be counted on: I can't tell you how many times I have seen this:
The fact is, Mozilla trying to copy IE's quirky behaviour would most likely fail, because Microsoft would be free to make IE a moving target (the same way they have done countless times before) as soon as they felt threatened (which seems to be happening now -- witness the next "revolutionary" release of IE 7).
While I agree with most of this, it should be pointed out that local X connections (i.e., the ones in which the server and the client run in the same machine) are usually done via UNIX sockets, not IP (witness the socket in the /tmp/.X11-unix directory while you are running an X session). The reason for it is that UNIX sockets offer less overhead than a TCP/IP stack.
Also, in modern toolkits (GTK, QT) images are usually sent via shared memory (again, only possible when the client and server are in the same machine), which is much more effecient than sending them through sockets.
Being Turing complete doesn't mean anything in this case.
If a program can't access the filesystem or the network, it doesn't matter what it does; it can't harm the user in any way.
For example: Java is Turing complete, but Java applets are designed to be safe to execute.
While it may be true that none of these make sense, these are facts simply observed by humans.
Compare this with the Axiom of Choice, which is an idea created by humans that doesn't make sense in some different, really nasty way. If you think about it in some certain way, it looks obvious (and it would be really bad if it wasn't true); in another certain way, it seems absurd (and leads to some things that simply shouldn't be true).
A quote from Wikipedia:
(the Axiom of Choice, the well-ordering principle and Zorn's Lemma are all different names to the same idea)
I don't see what's so wrong with this robots.txt, would you please elaborate?
If you mean that the specification doesn't say anything about "Allow:" records, then you have a point. BUT the spec says explicity that robots should ignore unknown "headers" (I take that to mean "records"). Not that it matters, anyway, because any robots other than Googlebot should ignore all "Allow" records.
Sounds mildly sane... but I still think the penalty is too stiff.
If a 16 year old student steals some test answers *in paper* from a teacher can he really go to jail? The teacher's privacy was violated the same way, but no one would *think* to apply a law that theoretically could put the guy in prision for *6 months*.
Or is the penalty way too harsh because what he has done simply involves computers and people just don't know yet how to handle these types of things?
There is no copyright license in the United States today more fitting to Thomas Jefferson's idea of copyright or indeed to the conception of copyright contained in Article 1 Section 8, than ours. [my emphasis]
Please note the concept of the copyright contained in the US constitution (which is more or less the same all around the world): copyright should promote the progress of science and useful arts, and this should be done by giving authors exclusive rights over their work for a while.
Eben Moglen meant that the GPL fits better in the concept of promoting the progress than any other license: most commercial licenses (e.g. MS EULA) seek simply to make money to the company; some free licenses (e.g. BSD) don't require future progress to be shared with society.
Well, for a quick and simple example, instead of writing
function f($a, $b) { return strcmp($b, $a); }
usort($array, 'f');
you could just write something like
usort($array, function ($a, $b) { return strcmp($b, $a); });
With this, functions would be first-class objects, which probably complicates the internals of the language, but it could be added when the reestructuring for improved OOP was done.
This is an unfortunate misconception propagated by people who don't know/undertand Unicode.
Unicode version 4 defines over 1 million code points (what you would call a "character"), including reserved ones. This means a "character" doesn't fit in 16 bits. Unicode doesn't even guarantee it will always fit 32 bits (although it's hard to imagine more than 4 billion characters will be defined some day).
The 16 bit figure derives from the unfortunate implementations of the "wide character" extension of C and C++ (a lot of implementations define a wchar_t having 16 bits, which is *NOT* in general enough to hold an Unicode character). The correct way to encode characters or strings in Unicode is using something like UTF-8 (Java uses this internally), UTF-16, etc.
I't better because every registered namespace has a standardized definition independent of the context. With XML (using the ISBN example), you could make a DTD for use by Amazon, but not everyone else would use this DTD. Some other bookstore (or library, etc.) could use instead a DTD where you should use .
With the new scheme, it's easy to see that "info:isbn:12345" refers to a book, no matter whether it appears as the value of the attribute "isbn" of a element (defined in such-and-such DTD) or somewhere else.
I haven't looked at the benchmark, but it seems that Prevalayer traverses a set of objects in memory 3000 times faster that MySQL queries the database and traverses the results.
In other words, that *is* actually comparing apples to oranges.
The XBox kernel only verifies if a game loaded off the DVD-ROM was signed by a Microsoft key, it doesn't have the key to sign games.
In this signature scheme (public key), the key has two parts:
Theorems are only proven wrong when the axioms they derive from are invalid (it happens sometimes in Physics, but never in Mathematics, where you decide what axioms you want to accept).
I don't think comparing email with TV is a good example. It would be better to compare email with telephone -- and no one thinks it is acceptable to receive tons of spams over telephone.
Telephone spam is usually not a problem, though, because it's much more expensive than email (you have to pay people to make the calls, etc.).
Also, I don't think anyone would argue that prohibiting someone to call me to advertise something hurts free speech. If you want to say something in public, go ahead and say it (or put it on a web site), but I don't have to listen to it, so please don't call me (or send me spam).
Well, since we're at it, the first sense of the phrase is explained here:
http://www.quinion.com/words/qa/qa-beg1.htm
It seems to have come from a bad translation from latin. If you ask me, the sense in which he used it seems much more logical.
Companies don't take away freedoms, they persuade you to buy their product.
Yes. But they also lobby congressmen to approve laws that take away your freedom to their advantage. And THAT's what he was taliking about.
Ok, but I didn't say there's such a program A that works for ANY program B, that's exactly my point -- maybe for each program B, there exists a (unique) corresponding program A that does what you describe.
This is more obviously impossible. If you have an algorithm C that generates HP given P, then I can exhibit an H: on input P, run C on P to get HP, and then execute HP. However, H does not exist, so C does not exist.
Bad wording on my part. When I said "no one proved THIS is impossible" I meant you can generate HP given P, not that *there is* such generic algorithm: this would clearly be impossible.
Still, it might be possible that exists an algorithm that generates HP given any P up to some defined size.
Well, that's what you're saying...
If you remember ol' Turing's proof, it goes like this:
Say we have a function H that gets the source of any program as argument and returns TRUE if the program halts, or FALSE if not. Now, it's easy to construct a program P that feeds its own source to H and halts if H returns FALSE, or goes into an infinite loop if H returns TRUE.
This clearly is a paradox: P halts iff it doesn't halt; so it's not possible that H exists.
Now, there's something some people don't realise: for this to work, it's necessary that H is included in P (hence H is smaller than P). It's still possible (I don't think it has been proved) that each program P has an associated function HP that decides if P halts or not (it may be the case that HP is bigger than P, hence Turing's proof don't apply).
Your argument only works if you think the human brain does some "magic" and avoid computing at all.
I think the human brain has limited power, so it can only generate H to a given size (well, if you have pen and infinite paper AND you know some algorithm to generate HP given P (again, no one proved THIS is impossible) you could generate an H of any size -- the same way a computer with infinite memory AND the said algorithm could.