Hashing isn't really constant time. It's still logarithmic, just with a very small constant (if done well).
To see why, look at the length of the hash key. In order for an element to hash to a unique value the space of hash keys must be at least as large as the number of elements in the table. Therefore, to achieve a perfect hash the number of bits in the hash key must be at least log(elements).
Now, how about the computation of the hash key? Suppose we do something really simple, like xor the bytes (or log n chunks of bits) in the value. This isn't a constant time operation; it's linear in the number of bits in the key, or logarithmic in the number of elements, assuming a constant amount of hardware (obviously, if you assume an unbounded amount of hardware, the time could be constant, but that's not really very interesting).
Hash lookup is no better. You still have log n bits to recognize.
Maybe there are ways of performing lookup in less than log n time, but hashing is not one of those. In practice, hashing takes a small constant amount of time because we don't or can't optimize very well for very small hash tables. Computing a 16-bit hash isn't usually cheaper than computing a 32-bit hash, so we think of it as constant, but that's really not the case.
Remember what O(log n) really means. It means that as the problem size grows the amount of work grows asymptotically and proportionately (or maybe it's at worst proportionately, I don't remember all the notation details and I'm too lazy to fetch my copy of Cormen/Leiserson/Rivest from my bookshelf) to log n. It says nothing, however, about what the proportionality constant is. You could have one algorithm that's O(e^n) (exponential complexity) and another algorithm that's O(1) (constant complexity), and in practice the former could be more efficient -- the constant factor of the constant time algorithm may overwhelm the exponential (or worse) blowup for the problem sizes that will actually be encountered.
This brings up another point -- most practical algorithms and implementations have more than one limiting factor. The O notation only expresses the dominating limit (or limits, if a particular problem has multiple inputs) as the problem size gets arbitrarily large. So it is with hashing.
While I don't even own a 'Cat, I've finally gotten curious enough about this mishegoss to fire off a note about it.
From: Robert L Krawitz <rlk@alum.mit.edu>
To: ddavis@digitalconvergence.com
Subject: http://www.wired.com/news/culture/0,1284,39139-2,0 0.html
--text follows this line--
Mr. Davis, you are quoted as stating
"Just because I give you the Cat scanner, it does not immediately give
you the right to go into business against me with my own technology,"
Davis said. "We have an intended use for it."
I, along with many others, am curious as to precisely what legal
theory gives you the right to forbid people from making any use they
please of this device. Your intentions notwithstanding, when you mail
someone an item unsolicited it's theirs to keep and use as they
please, and when Radio Shack "sells" people these devices it is
represented as a sale, not a lease or any other kind of transaction.
You haven't (to the best of my knowledge) claimed any patent on the
device (much less one that would forbid someone from actually *using*
it in any way), and copyright on the software is also irrelevant
because the people using it in ways you have not intended are not
making any use of your provided software. Indeed, the most recent
work involves bypassing the firmware altogether, if somehow that could
be considered an issue. Trademark violations are not an issue if
people do not use your trademark, either. To the best of my (lay)
knowledge, those are the only kinds of IP extant. The device itself
is physical property.
I believe that a lot of people would like clarification on this
matter. I would myself, as it might actually be worth my time to stop
off at Radio Shack to pick one up to use to scan barcodes for assorted
purposes.
As others have pointed out at other times, most crypto schemes fail due to weaknesses in implementation or human protocol reasons, not due to weaknesses in the underlying cypher, so there is still plenty of latitude for the NSA. Have you tempest hardened your PC lately? Checked your keyboard for surreptitious key-logging gear? Installed 24/7 armed security guards in the server room?
Of course, the armed guards have to be sufficiently well-paid (and well-vetted). It's often even easier to compromise people than hardware.
Indeed. I suspect that both Apple and Amazon (even more than Apple) have a lot to gain from this. Amazon of course wants the patent validated, and Apple seems to also like to be nasty about IP. So I also wouldn't be the least bit surprised if Apple's not paying anything for this.
I personally am opposed to the concept of a patent, period. HOWEVER...
A Post-It is quite a different matter. There's the whole shebang of devising an adhesive that will adhere strongly to the note itself, but will not leave residue (or lift ink or paper fibers) from what it's stuck to. I'm willing to believe that that adhesive, and probably the particular paper, did require creativity and research. I'm sure it was very nonobvious to someone in the field.
Just because someone hasn't done something before doesn't make it such an earthshattering invention. Something might not have been done simply because nobody cared enough to actually bother with the trivial amount of work involved.
Privacy has nothing to do with it. If you want to keep it private, don't distribute it at all (or keep it internal to your organization -- RMS has made it clear that he doesn't consider that "distribution"). The GPL simply says that if you want to modify it and distribute the result, you have to play by the same rules as the original author.
Increasing freedom by decreasing freedom in some specific cases isn't doublespeak, and isn't inherently sinister. For example, the law increases your effective freedom by taking away someone else's freedom to kill you, or take away your property by force, or some such. "Your right to swing your fist ends where my nose begins" is not considered a particularly dangerous arrogation of power.
I just tried Profusion with Netscape 4.75 and had no trouble. Perhaps the combination of turning off Javascript and running a fairly strict filter helped, but there were no obvious problems at all.
Suppose the Word virus were to, say, search for a particular string in each file on your disk, and if it finds it, insert a URL containing that string, or the context surrounding it. Then whenever someone opens that document, the URL gets sent to the hostile server. There's a limit of about 1K (I think) in an actual URL, but that still allows for a fair bit of data. If multiple web bugs are embedded, of course, it's possible to send across even more data.
Remember that the web bug doesn't actually have to correspond to a real file on the hostile server; it just has to be something that the hostile server understands.
Nah. They really are this evil. Although, in theory, the RIAA winning their case against Napster (in addition to previous legal cases) just screwed them over big-time. You see, Napster's licence agreement said that users agreed not to trade copywritten files, and that Napster wasn't responsible for any files the users did trade. The RIAA sued them anyway and won. Does anyone know how strong this precident would be for the validity of post-sale click-through licencing? (Which is already illegal?)
I would expect that it would have no effect whatsoever on the validity of click-through licensing either way. The RIAA was not party to the agreement between Napster and the end users, and so can't be bound by it. Check with someone who actually is a lawyer, though.
As far as anti-discrimination laws go, there are, I believe, provisions for when a particular disability is material to job performance. That kind of provision doesn't sound too relevant here.
FWIW, Evelyn Glennie (one of the top classical percussionists presently, and one of the rather few such soloists) is deaf.
Well, from the standpoint of a Massachusetts consumer of milk, I get screwed by the Northeast Dairy Compact. Aside from milk generally being expensive here because of it, it's responsible for some other odd quirks in the law. For example, milk is one of the few products (along with tobacco, alcohol, and lottery tickets) for which stores can't double coupons.
UNIX is BUILT on highly modular components with a high level interface to glue them together. It's just that the components are command-line programs, and the glue is lines of text (records) through pipes.
Just because something's based on a command line with independent processes running in separate address spaces, and isn't object oriented, doesn't mean that it's not a modular, component-based architecture.
Yes, the government could easily pull funding for these computers entirely, with no constitutional issue at stake. However, when it requires that as a condition of funding libraries violate the free speech rights of the blocked sites, then it sure looks to me like Congress has taken an action abridging the freedom of speech.
Dunno about bloat, but diskless 3/50's were very popular as X terminals when people got tired of swapping and paging over the network. The SunOS 4.1.x core, with the minimum required to run X and do nothing else, fit quite nicely inside the 4 MB, so once things were running there was no network paging.
I really don't understand why so many people want to insist that X is so horrible because it's {bloated|slow|too network transparent to be efficient (!)|doesn't enforce UI policy}. I think that some of these people are only interested in games (which apparently run quite nicely), streaming video, or insisting that everyone's UI act the way they want THEIR UI to.
Jim Gettys & crew were absolutely on the money. I'm amazed that in these days of the Internet (back then, there were something like 300 hosts on the *ARPA*net, and Project Athena was just starting to take off), hand held (and smaller) devices that anyone would even CONSIDER a display that is NOT network transparent. For the people who insist that direct graphics access is the way to go, giving arbitrary user applications direct access to the hardware is suicide (not to mention not all that portable).
For those people who note that no one with any sense would play Quake with the raw display bits going over the network, of course not. But what does that have to do with the price of RAM?
It has long been established that (for better or for worse) students in schools have considerably fewer rights than people in other public places (the streets, public buildings, and other public land). If you're trying to get t-shirts that glorify alcohol, sex, violence, or indecent language banned from public places (in the US, at any rate), you will almost surely fail, if not initially, in the appeal. Obscenity (which does NOT mean the "seven dirty words") is not protected (unfortunately, IMHO).
If by "public mall" you really mean "convince the owner of a privately owned shopping mall to ban said shirts", you may have more success.
You're only required to make the source available to people you distributed it to. So if you want to sell your binaries, support, etc. for $10,000, you are only obligated to distribute the source for no more than reasonable media cost to the people you distributed the binaries to. If those people in turn redistribute the binaries, they're on the hook for the source to those downstream folks, you're not.
Other than the fact that you're not allowed to make it materially harder for people to get the source as to get the binaries, you're allowed to charge whatever you please. RMS has been quite clear that any restrictions on how much someone may charge for the software are in violation of the GPL.
You most definitely may charge for a GPL'ed program. What's more, you can charge for it, too -- witness Red Hat, SuSE, et al. You can also dual license it if you're the author -- GPL it, but also release it under a commercial license to people who want it under terms incompatible with the GPL.
Your posited GPL variant is really nothing more than a "community" license, anyway. Once redistribution can only be done with the explicit consent of the copyright holder, or to people already holding a license, then the whole point of the GPL has evaporated.
What bothers me about a lot of this discussion is the implication that if the author doesn't want to make money off it by keeping it secret, the least s/he can do is not be a spoilsport and require that others using the work play by the same rules. It comes across feeling like making money is the Highest Calling in Life, and helping others to make money at others' expense is next. Therefore, people releasing code under non-copyleft free licenses are doing a good deed, because they're enabling others to make money by basing proprietary products around it. Sorry, that won't wash.
If you're the AUTHOR of the code, you can, as I stated above, release it under any license you please. If you really want commercial advantage from it, you shouldn't be using the GPL, and so talking about a watered down GPL is nothing more than trying to use the good name (or "brand equity" for those of suitable disposition) of the GPL to bless outright commercial ventures having nothing to do with the goals of free software. Use a community source license or what have you, but don't try to invoke the name of the GPL.
If you're not the author, and your real aim is to use GPL'ed code in your proprietary product, then tough. As long as copyright exists, and gives the author the right to control distribution, an author is entitled to use the GPL to control the terms of the redistribution (or, in this case, ensure a controlled lack of control).
Finally, for the BSD folks (not all of them, but a vocal minority) who complain that Linux can freely take from BSD but that BSD can't put GPL'ed code in its kernel: that's the way you wanted it, right? The whole idea of the BSD license is to *permit* other people to use your code with basically no strings attached. Why is it suddenly so bad when Linux plays by those rules, but when Apple does the same thing, it's perfectly fine? If you really want to ensure that everyone using your code plays by the same rules you do, then use the GPL or the like!
I certainly have no problem with BSD, or with people using the BSD or MIT licenses for their work, but they shouldn't complain quite so loudly about other people following their choices to logical conclusions. And again, I don't want to paint all BSD advocates with the same brush, but there are some people who are rather vocal about this.
Yes, but what if they need your information to develop said treatments in the first place? The process is likely to take a long time to calculate the correct compunds/amounts so they'd need your information in advance to make this work. What then?
Doesn't change a thing. Why shouldn't I be allowed to decide that privacy of my DNA profile is more important to me than the potential of receiving this kind of treatment quickly. And lest you point out that it's easy to say that when I'm healthy but I may think differently when I'm sick, I will in turn note that making hard decisions is part of life, and it's not for you to second guess whatever decision someone makes.
They do indeed. However, that doesn't mean that that behavior should be encouraged. If a company realizes that releasing a driver without source loses sales to their competitors, they may be encouraged to open their source code. Such an outcome would be highly desirable.
Why not just release binary drivers as modules and specify which version of the Linux kernel is required? If people need your hardware, then they'd be delighted to run whatever version of Linux is required. (I'm talking about kernel versions, not distros.)
It's not that easy to separate a kernel version from the low-level user interface (libc, and some of the tools), for one. Also, suppose I need two pieces of hardware, and the supported kernel is different for both pieces?
As far as that's concerned, it's quite interesting how the very same companies screaming about the need to protect "intellectual property" refuse to acknowledge that an individual may have any "intellectual property" rights to personal information about him or herself. If an individual were recognized to have copyright on the information existing about herself (such as objective personal information, purchasing and browsing habits, and so forth), there might be a slightly more intelligent discussion of the whole issue.
Who are you to say that you want the source? Because you are a user?
Because I'm a prospective customer? Damn right! They don't have to open their source, I don't have to buy their product! What's more, I'm just as free to discourage other people from buying it, too.
Hashing isn't really constant time. It's still logarithmic, just with a very small constant (if done well).
To see why, look at the length of the hash key. In order for an element to hash to a unique value the space of hash keys must be at least as large as the number of elements in the table. Therefore, to achieve a perfect hash the number of bits in the hash key must be at least log(elements).
Now, how about the computation of the hash key? Suppose we do something really simple, like xor the bytes (or log n chunks of bits) in the value. This isn't a constant time operation; it's linear in the number of bits in the key, or logarithmic in the number of elements, assuming a constant amount of hardware (obviously, if you assume an unbounded amount of hardware, the time could be constant, but that's not really very interesting).
Hash lookup is no better. You still have log n bits to recognize.
Maybe there are ways of performing lookup in less than log n time, but hashing is not one of those. In practice, hashing takes a small constant amount of time because we don't or can't optimize very well for very small hash tables. Computing a 16-bit hash isn't usually cheaper than computing a 32-bit hash, so we think of it as constant, but that's really not the case.
Remember what O(log n) really means. It means that as the problem size grows the amount of work grows asymptotically and proportionately (or maybe it's at worst proportionately, I don't remember all the notation details and I'm too lazy to fetch my copy of Cormen/Leiserson/Rivest from my bookshelf) to log n. It says nothing, however, about what the proportionality constant is. You could have one algorithm that's O(e^n) (exponential complexity) and another algorithm that's O(1) (constant complexity), and in practice the former could be more efficient -- the constant factor of the constant time algorithm may overwhelm the exponential (or worse) blowup for the problem sizes that will actually be encountered.
This brings up another point -- most practical algorithms and implementations have more than one limiting factor. The O notation only expresses the dominating limit (or limits, if a particular problem has multiple inputs) as the problem size gets arbitrarily large. So it is with hashing.
While I don't even own a 'Cat, I've finally gotten curious enough about this mishegoss to fire off a note about it.
0 0.html
From: Robert L Krawitz <rlk@alum.mit.edu>
To: ddavis@digitalconvergence.com
Subject: http://www.wired.com/news/culture/0,1284,39139-2,
--text follows this line--
Mr. Davis, you are quoted as stating
"Just because I give you the Cat scanner, it does not immediately give
you the right to go into business against me with my own technology,"
Davis said. "We have an intended use for it."
I, along with many others, am curious as to precisely what legal
theory gives you the right to forbid people from making any use they
please of this device. Your intentions notwithstanding, when you mail
someone an item unsolicited it's theirs to keep and use as they
please, and when Radio Shack "sells" people these devices it is
represented as a sale, not a lease or any other kind of transaction.
You haven't (to the best of my knowledge) claimed any patent on the
device (much less one that would forbid someone from actually *using*
it in any way), and copyright on the software is also irrelevant
because the people using it in ways you have not intended are not
making any use of your provided software. Indeed, the most recent
work involves bypassing the firmware altogether, if somehow that could
be considered an issue. Trademark violations are not an issue if
people do not use your trademark, either. To the best of my (lay)
knowledge, those are the only kinds of IP extant. The device itself
is physical property.
I believe that a lot of people would like clarification on this
matter. I would myself, as it might actually be worth my time to stop
off at Radio Shack to pick one up to use to scan barcodes for assorted
purposes.
Sincerely,
Robert Krawitz
A better analogy would be disassembling your own copy of Photoshop. But ask a lawyer first.
Of course, the armed guards have to be sufficiently well-paid (and well-vetted). It's often even easier to compromise people than hardware.
Indeed. I suspect that both Apple and Amazon (even more than Apple) have a lot to gain from this. Amazon of course wants the patent validated, and Apple seems to also like to be nasty about IP. So I also wouldn't be the least bit surprised if Apple's not paying anything for this.
I personally am opposed to the concept of a patent, period. HOWEVER...
A Post-It is quite a different matter. There's the whole shebang of devising an adhesive that will adhere strongly to the note itself, but will not leave residue (or lift ink or paper fibers) from what it's stuck to. I'm willing to believe that that adhesive, and probably the particular paper, did require creativity and research. I'm sure it was very nonobvious to someone in the field.
Just because someone hasn't done something before doesn't make it such an earthshattering invention. Something might not have been done simply because nobody cared enough to actually bother with the trivial amount of work involved.
Privacy has nothing to do with it. If you want to keep it private, don't distribute it at all (or keep it internal to your organization -- RMS has made it clear that he doesn't consider that "distribution"). The GPL simply says that if you want to modify it and distribute the result, you have to play by the same rules as the original author.
Increasing freedom by decreasing freedom in some specific cases isn't doublespeak, and isn't inherently sinister. For example, the law increases your effective freedom by taking away someone else's freedom to kill you, or take away your property by force, or some such. "Your right to swing your fist ends where my nose begins" is not considered a particularly dangerous arrogation of power.
I just tried Profusion with Netscape 4.75 and had no trouble. Perhaps the combination of turning off Javascript and running a fairly strict filter helped, but there were no obvious problems at all.
Suppose the Word virus were to, say, search for a particular string in each file on your disk, and if it finds it, insert a URL containing that string, or the context surrounding it. Then whenever someone opens that document, the URL gets sent to the hostile server. There's a limit of about 1K (I think) in an actual URL, but that still allows for a fair bit of data. If multiple web bugs are embedded, of course, it's possible to send across even more data.
Remember that the web bug doesn't actually have to correspond to a real file on the hostile server; it just has to be something that the hostile server understands.
I would expect that it would have no effect whatsoever on the validity of click-through licensing either way. The RIAA was not party to the agreement between Napster and the end users, and so can't be bound by it. Check with someone who actually is a lawyer, though.
As far as anti-discrimination laws go, there are, I believe, provisions for when a particular disability is material to job performance. That kind of provision doesn't sound too relevant here.
FWIW, Evelyn Glennie (one of the top classical percussionists presently, and one of the rather few such soloists) is deaf.
Well, from the standpoint of a Massachusetts consumer of milk, I get screwed by the Northeast Dairy Compact. Aside from milk generally being expensive here because of it, it's responsible for some other odd quirks in the law. For example, milk is one of the few products (along with tobacco, alcohol, and lottery tickets) for which stores can't double coupons.
UNIX is BUILT on highly modular components with a high level interface to glue them together. It's just that the components are command-line programs, and the glue is lines of text (records) through pipes.
Just because something's based on a command line with independent processes running in separate address spaces, and isn't object oriented, doesn't mean that it's not a modular, component-based architecture.
Yes, the government could easily pull funding for these computers entirely, with no constitutional issue at stake. However, when it requires that as a condition of funding libraries violate the free speech rights of the blocked sites, then it sure looks to me like Congress has taken an action abridging the freedom of speech.
Set your threshold to -1 and you see everything. If you want to set a higher threshold, that's your business.
Dunno about bloat, but diskless 3/50's were very popular as X terminals when people got tired of swapping and paging over the network. The SunOS 4.1.x core, with the minimum required to run X and do nothing else, fit quite nicely inside the 4 MB, so once things were running there was no network paging.
I really don't understand why so many people want to insist that X is so horrible because it's {bloated|slow|too network transparent to be efficient (!)|doesn't enforce UI policy}. I think that some of these people are only interested in games (which apparently run quite nicely), streaming video, or insisting that everyone's UI act the way they want THEIR UI to.
Jim Gettys & crew were absolutely on the money. I'm amazed that in these days of the Internet (back then, there were something like 300 hosts on the *ARPA*net, and Project Athena was just starting to take off), hand held (and smaller) devices that anyone would even CONSIDER a display that is NOT network transparent. For the people who insist that direct graphics access is the way to go, giving arbitrary user applications direct access to the hardware is suicide (not to mention not all that portable).
For those people who note that no one with any sense would play Quake with the raw display bits going over the network, of course not. But what does that have to do with the price of RAM?
It has long been established that (for better or for worse) students in schools have considerably fewer rights than people in other public places (the streets, public buildings, and other public land). If you're trying to get t-shirts that glorify alcohol, sex, violence, or indecent language banned from public places (in the US, at any rate), you will almost surely fail, if not initially, in the appeal. Obscenity (which does NOT mean the "seven dirty words") is not protected (unfortunately, IMHO).
If by "public mall" you really mean "convince the owner of a privately owned shopping mall to ban said shirts", you may have more success.
You're only required to make the source available to people you distributed it to. So if you want to sell your binaries, support, etc. for $10,000, you are only obligated to distribute the source for no more than reasonable media cost to the people you distributed the binaries to. If those people in turn redistribute the binaries, they're on the hook for the source to those downstream folks, you're not.
Other than the fact that you're not allowed to make it materially harder for people to get the source as to get the binaries, you're allowed to charge whatever you please. RMS has been quite clear that any restrictions on how much someone may charge for the software are in violation of the GPL.
You most definitely may charge for a GPL'ed program. What's more, you can charge for it, too -- witness Red Hat, SuSE, et al. You can also dual license it if you're the author -- GPL it, but also release it under a commercial license to people who want it under terms incompatible with the GPL.
Your posited GPL variant is really nothing more than a "community" license, anyway. Once redistribution can only be done with the explicit consent of the copyright holder, or to people already holding a license, then the whole point of the GPL has evaporated.
What bothers me about a lot of this discussion is the implication that if the author doesn't want to make money off it by keeping it secret, the least s/he can do is not be a spoilsport and require that others using the work play by the same rules. It comes across feeling like making money is the Highest Calling in Life, and helping others to make money at others' expense is next. Therefore, people releasing code under non-copyleft free licenses are doing a good deed, because they're enabling others to make money by basing proprietary products around it. Sorry, that won't wash.
If you're the AUTHOR of the code, you can, as I stated above, release it under any license you please. If you really want commercial advantage from it, you shouldn't be using the GPL, and so talking about a watered down GPL is nothing more than trying to use the good name (or "brand equity" for those of suitable disposition) of the GPL to bless outright commercial ventures having nothing to do with the goals of free software. Use a community source license or what have you, but don't try to invoke the name of the GPL.
If you're not the author, and your real aim is to use GPL'ed code in your proprietary product, then tough. As long as copyright exists, and gives the author the right to control distribution, an author is entitled to use the GPL to control the terms of the redistribution (or, in this case, ensure a controlled lack of control).
Finally, for the BSD folks (not all of them, but a vocal minority) who complain that Linux can freely take from BSD but that BSD can't put GPL'ed code in its kernel: that's the way you wanted it, right? The whole idea of the BSD license is to *permit* other people to use your code with basically no strings attached. Why is it suddenly so bad when Linux plays by those rules, but when Apple does the same thing, it's perfectly fine? If you really want to ensure that everyone using your code plays by the same rules you do, then use the GPL or the like!
I certainly have no problem with BSD, or with people using the BSD or MIT licenses for their work, but they shouldn't complain quite so loudly about other people following their choices to logical conclusions. And again, I don't want to paint all BSD advocates with the same brush, but there are some people who are rather vocal about this.
And what is X if not a server-based system?
Doesn't change a thing. Why shouldn't I be allowed to decide that privacy of my DNA profile is more important to me than the potential of receiving this kind of treatment quickly. And lest you point out that it's easy to say that when I'm healthy but I may think differently when I'm sick, I will in turn note that making hard decisions is part of life, and it's not for you to second guess whatever decision someone makes.
They do indeed. However, that doesn't mean that that behavior should be encouraged. If a company realizes that releasing a driver without source loses sales to their competitors, they may be encouraged to open their source code. Such an outcome would be highly desirable.
It's not that easy to separate a kernel version from the low-level user interface (libc, and some of the tools), for one. Also, suppose I need two pieces of hardware, and the supported kernel is different for both pieces?
As far as that's concerned, it's quite interesting how the very same companies screaming about the need to protect "intellectual property" refuse to acknowledge that an individual may have any "intellectual property" rights to personal information about him or herself. If an individual were recognized to have copyright on the information existing about herself (such as objective personal information, purchasing and browsing habits, and so forth), there might be a slightly more intelligent discussion of the whole issue.
Because I'm a prospective customer? Damn right! They don't have to open their source, I don't have to buy their product! What's more, I'm just as free to discourage other people from buying it, too.
A free market cuts both ways, my friend.