Clearly you didn't read the patent, or even the abstract. Here's the abstract:
Entertainment content complementary to a musical recording is delivered to a user's computer by means of a computer network link. The user employs a browser to access the computer network. A plug-in for the browser is able to control an audio CD or other device for playing the musical recording. A script stored on the remote computer accessed over the network is downloaded. The script synchronizes the delivery of the complementary entertainment content with the play of the musical recording.
It really amazes me that/. readers never seem to realize that patents, even technical ones are written for and approved by lawyers, not for technical people. That's why patent titles never seem to make sense, folks. (HHOS)
Second, the actual database itself is composed of submissions. Unless, I explicitly disclaim ownership of the submitted data, how can
cddb claim to own it? As far as I know, you need to explicitly give away rights, they cannot be taken. Also, none of the CDDB programs
have any sort of EULA about this?
nope, sorry. Regardless of whether or not cddb can claim to own the accumulated data (and I think they could probably get away with that), the patent is on a process or a technique. They might hold a copyright on the data, but they hold a patent on what they do with the data. Now, I agree that what they're patenting (essentially, a way to provide content based on what CD you're listening to) is pretty shaky, but that has nothing to do with the CDDB data.
BTW, back before CDDB was "CDDB.com", it was under a "free-to-use but restricted" license. IIRC, the fellow who came up with it got "implicit consent" from you when you submitted the data. Just because they're giving something away doesn't mean they can't patent it, either.
Indeed. Perhaps LaTeX should be examined, not as a replacement for HTML, but for Acrobat.
I don't know if this is a good idea or not. PDF is basically compressed PostScript, and as such is a vector-based physical markup language. You can translate LaTeX to PostScript, just as you can translate JPEG images to PostScript. You don't want LaTeX (a high-level language) replacing PostScript (a low-level language) any more than you'd want to replace assembly language with C.
LaTeX is great. I use it for writing papers, documentation, personal correspondence, etc. (I even used LaTeX as an undergrad to typeset music history papers, including score examples.) However, while it is a (mostly) logical document markup language, there are many "physical" aspects that do not translate to the Web, such as font size, badness (word spacing), and so on.
For example, I have a LaTeX macro which will quote and cite from a source in the margin of my document. The Web has no concept of a margin. Sure, I could make Netscape 4.76 lay out a web page as if it were a technical paper, but why should I have to "flip pages" on the Web? And what if I want to read this super LaTeX-enabled web page in lynx? on my Visor? on my cell phone? with a screen reader?
Sure, you can simulate a lot of physical markup items with style sheets, but that's not the point. The point is, HTML is designed to embellish text with simple, logical markup; one of HTML's greatest strengths is that it can be rendered faithfully by a variety of different tools with myriad differences in capability. LaTeX, OTOH, is designed to target one medium: a DVI file which is tied to a particular page size. So you have some logical markup, but in general a lot of the "logic" is tied to physical realities of the page. (how many times have you typed \vspace{1.0cm}, for -- albeit a trivial -- example?)
In addition, LaTeX doesn't lend itself to interpreting -- the more powerful features, like indexing, citations, and TOCs all require multiple passes. Add to this that it's a LOT harder to parse and (to be honest) to write than semi-valid HTML, and it's just not a viable standard. The final nail is inertia. The web is based on HTML, and it has for a long time. People are OK with extending HTML in bizarre ways to give them an approximation of TeX-like control over their document's appearance, so there's no room for a better, cleaner language.:-)
...and if the US SC had overturned the FL SC decision, it would be in favor of states' rights in doing so. The FL SC (according to the Bush camp's argument) violated the doctrine of separation of powers by changing a law rather than interpreting a law.
If the US SC determines that this is the case, then restoring the Florida legislature's power (by restoring the laws established before the election) is a win for Florida and all states, since it reaffirms that the judicial branch (generally non-elected at the SC level, although FL has a "no-confidence" process for their SC) may not hold the other (generally elected) branches of government hostage by altering laws ex post facto.
I don't know if I'm being as clear as I need to here, so let me reiterate in the abstract. The Bush camp is presenting this as a case about seperation of powers, about proper delegation of powers. A SC ruling in favor of proper delegation is a moral victory for those who wish to see power delegated differently to the states, as well as those who are strong believers in the Constitution.
I don't see how Bush's lawyers are betraying
his ideology here, even though just about anyone running for president (with a few exceptions, Nader fans) is really a whore in a suit.
Kernel profiling, instrumentation, and dynamic rewriting has been done in kernel space (on stock, unmodified, closed-source kernels, no less), by the KernInst group at Wisconsin. One of my officemates is currently working on this project, and it is an "offspring project" to the research group that I work for. They managed to improve squid's performance by altering the behavior of (IIRC) open() with O_TRUNC.
The original (sparc solaris) port has been going on for over four years now, with several graduate students working on it. There is an i386 linux port in progress, but I don't know if it's generally available yet. I'd suggest reading the papers (the above link), as there are a lot of fascinating "gotchas" and the ways that these were dealt with are quite clever. (For example: how do you atomically insert a sequence of two instructions into a process that you can't stop?)
In any event, the papers are good reading, and will be very useful to your research. (BTW, the student who started this project is finishing his PhD this winter and has a "killer job" waiting for him.:-) )
~wog
My views are my own and do not reflect those of my university or research group.
That doesn't seem to be panning out as well under Windows, but who knows, maybe time will tell.
That's what I meant by my comment. Of course, if you can analyze a core dump, then you can get a pretty good idea of what went wrong, so there's not a lot of difficulty in the UNIX arena. I'll admit that I'm a bit ignorant about developing under Windows, but I was under the impression that there's not a similar facility in the MS world. (Or do you get a stack trace if you install Microsoft VisualMagicWizardDevInterStudio2K.NET with the all-singing, all-dancing debugger?)
The 1995 version of the paper was never actually published. Nevertheless, it's one of the most popular papers ever published at UW/Madison.
The SWEng community who were refereeing it wanted to see more stuff about testing methodology, whereas the fuzz tests are incredibly simpleminded in their approach and don't fit in to any of the accepted "testing paradigms". That's not to the tests' discredit at all, though, as what they exposed (the incredible fragility of many common C programs) is absolutely amazing.
I went to a talk that Prof. Miller gave on fuzz about a month ago, discussing the 2000 NT results. I'd personally be really interested to see where the blame for this lack of robustness lies: the applications, the MFC, or the Win32 API. Unfortunately, there's really no way to do that with such simple testing tools.
You can see Prof. Miller's fuzz page here. Bart Miller is a great professor and researcher; as an aside, you should really check out the Paradyn project (which is sadly slightly less well-known than fuzz outside of the scientific computing communities) and its child, the dyninst API; the purpose of these projects is to allow alteration and instrumentation of stock binaries.
~wog
My opinions are my own and not those of the research group or the university that I am affiliated with.
There are also COM-to-Java bridges, both payware (JIntegra, which I've used), and free-beer (bridge2java, available from IBM Alphaworks. bridge2java requires JNI; I haven't used it, but I have friends and colleagues who swear by it.
That's a little extreme, of course, but replication is a very nasty problem, and there are very good reasons why people don't do it. See "The Dangers of Replication and a Solution" (also published in the 1996 SIGMOD proceedings) by Jim Gray and others for more information.
Basically, there are two ways to preform replication: "lazy replication" and "eager replication". "Eager replication" means that all updates are atomic across all nodes and that transactions are serializable. However, the problem with "eager replication" is that as you increase the number of nodes n, the probability of deadlock increases on the order of n^5. The "solution", such as it is, is to remove the expectation of serializabilty, using timestamps for concurrency control, only allow commutative transactions on your data, and use two-tier replication. This works for banks and others whose database applications consist mainly of commutative transactions, but won't for many others: YMMV. (Gray's paper also details the differences between having a single "master" node that "owns" all db objects and having each node own several objects.)
IIRC, the way Notes does it is by queuing updates at the local node and using an optimistic concurrency control mechanism when the local node connects to replicate. This is great for the application domain that Notes caters to: I "own" my own calendar, and if I'm out of the office (and have my node -- notebook -- with me), you can't schedule me for an appointment until I come back. However, for many application domains, this won't work.
In any case, that's why Notes does it -- because it can, thanks to the nature of its data domain -- and why most people don't -- because it's hard/impossible for the general case.
~wog PS -- If you can't get into the ACM Digital Library, check out these lecture notes from Stonebraker's anthology at Berzerkeley.
to transfer database files. Basically, a file corresponding to a database table, index, etc. does not necessarily correspond to a consistent database at any given time. The file you transfer might have uncommitted data, data from a transaction which has aborted, index entries corresponding to deleted tuples, or worse. (You might not even get all of the committed data; much of it remains in the buffer pool for some time.)
If you want cheap replication and a consistent db, your best bet (for now) is to use pg_dumpall to make periodic backups of the db, transfer them (perhaps using scp and host-based authentication), and then use psql to restore them. To see how the dump/restore process works, look at the man page for pg_dumpall. You can likely do this all from a cronjob.
If you do it with stock pg_dumpall, you will probably need to take the site down for a few minutes or else risk odd service interuptions. However, "pg_dumpall -d" will dump tuples as SQL insert statements; this will allow you to put the data in a running db. Be aware that the dump/restore process can be quite taxing (especially on a production db where you likely don't want to turn off fsync() calls for the bulk copies). I don't know the requirements of your application, but you'll likely want to strike some sort of compromise between speed and up-to-date correctness.
The UAE emulator will do dynamic recompilation from 68k to x86 (or not. as a run-time option). Check it out here.
It works quite well for some applications, but not as well for the Amiga games, which were really exploiting the processor and hardware to begin with and do not lend themselves to easy analysis/translation. I don't suppose I need to mention that this is basically what Transmeta does in hardware....
That's great news about the Genesis emu. However, you can get a free-beer SNES emulator for the dreamcast now, from this site. It isn't super fast, but I've been playing Donkey Kong Country on my DC quite a bit lately....
PostgreSQL increases total throughput with an increased number of clients, although it does not do so linearly. That's not the same as "increased performance". Think "scale-up", not "speed-up".
Why? The answer is simple: load controlling. Basically, as concurrency increases, the cost of locking and that of buffer pool misses become prohibitive and transactions begin to starve. So most "smart" DBMSes will queue a few transactions for later processing after a certain point.
Because MySQL uses such coarsely-grained locks (at the table level), the opportunity for concurrency is very low to start with; hence the decreased throughput and starvation.
If you're interested in this stuff, look at Jim Gray's seminal paper "Granularity of Locks and Degrees of Consistency in a Shared Database" and Chou and DeWitt's "An Evaluation of Buffer Management Strategies for Relational Database Systems." You should be able to find either from the ACM Digital Library or in an anthology (like Stonebraker's _Readings in Databse Systems_).
ESR lives (IIRC) in Malvern or West Chester, PA, which are less than an hour's drive from Lehigh (except you get to deal with PA roads...ugh). You could have someone pick him up. I met him in person once at a party in Malvern, where he mentioned that he lived "down the street" from the hosts (friends of mine).
You can buy the Java VM specification or read it for free on-line. So there is a de jure standard. As for de facto, there are over 130 languages that can be compiled to JVM bytecode. There's even a GCC *backend* for Java (no, not the gcj *frontend*), which seems like it would obsolete this "Internet C++" project in short order.
It really amazes me that /. readers never seem to realize that patents, even technical ones are written for and approved by lawyers, not for technical people. That's why patent titles never seem to make sense, folks. (HHOS)
~wog
nope, sorry. Regardless of whether or not cddb can claim to own the accumulated data (and I think they could probably get away with that), the patent is on a process or a technique. They might hold a copyright on the data, but they hold a patent on what they do with the data. Now, I agree that what they're patenting (essentially, a way to provide content based on what CD you're listening to) is pretty shaky, but that has nothing to do with the CDDB data.
BTW, back before CDDB was "CDDB.com", it was under a "free-to-use but restricted" license. IIRC, the fellow who came up with it got "implicit consent" from you when you submitted the data. Just because they're giving something away doesn't mean they can't patent it, either.
~wog
Good luck!
I don't know if this is a good idea or not. PDF is basically compressed PostScript, and as such is a vector-based physical markup language. You can translate LaTeX to PostScript, just as you can translate JPEG images to PostScript. You don't want LaTeX (a high-level language) replacing PostScript (a low-level language) any more than you'd want to replace assembly language with C.
~wog
For example, I have a LaTeX macro which will quote and cite from a source in the margin of my document. The Web has no concept of a margin. Sure, I could make Netscape 4.76 lay out a web page as if it were a technical paper, but why should I have to "flip pages" on the Web? And what if I want to read this super LaTeX-enabled web page in lynx? on my Visor? on my cell phone? with a screen reader?
Sure, you can simulate a lot of physical markup items with style sheets, but that's not the point. The point is, HTML is designed to embellish text with simple, logical markup; one of HTML's greatest strengths is that it can be rendered faithfully by a variety of different tools with myriad differences in capability. LaTeX, OTOH, is designed to target one medium: a DVI file which is tied to a particular page size. So you have some logical markup, but in general a lot of the "logic" is tied to physical realities of the page. (how many times have you typed \vspace{1.0cm}, for -- albeit a trivial -- example?)
In addition, LaTeX doesn't lend itself to interpreting -- the more powerful features, like indexing, citations, and TOCs all require multiple passes. Add to this that it's a LOT harder to parse and (to be honest) to write than semi-valid HTML, and it's just not a viable standard. The final nail is inertia. The web is based on HTML, and it has for a long time. People are OK with extending HTML in bizarre ways to give them an approximation of TeX-like control over their document's appearance, so there's no room for a better, cleaner language. :-)
~wog
If the US SC determines that this is the case, then restoring the Florida legislature's power (by restoring the laws established before the election) is a win for Florida and all states, since it reaffirms that the judicial branch (generally non-elected at the SC level, although FL has a "no-confidence" process for their SC) may not hold the other (generally elected) branches of government hostage by altering laws ex post facto.
I don't know if I'm being as clear as I need to here, so let me reiterate in the abstract. The Bush camp is presenting this as a case about seperation of powers, about proper delegation of powers. A SC ruling in favor of proper delegation is a moral victory for those who wish to see power delegated differently to the states, as well as those who are strong believers in the Constitution.
I don't see how Bush's lawyers are betraying his ideology here, even though just about anyone running for president (with a few exceptions, Nader fans) is really a whore in a suit.
~wog
Don't write your own hash table. MIT Scheme has a built-in hash table facility.
er, I mean "C API calls". In any case, the SILK->JDBC approach is better.
~wog
Instead, use bigloo, scheme48, or some other Scheme with a decent FFI. Then you can use the native Scheme calls.
An even-better alternative is to use SILK or KAWA, which are scheme systems that can interface with Java, thus using JDBC.
There's a great paper called "Java reflects easily through Scheme" which discusses SILK and extending Scheme to allow access to Java code.
Good luck -- but with Scheme, you won't need it. What a great language!
~wog
"TheLinuxPimp.org" uses *SHOCKWAVE*? The only way you can view that in Linux without crashing netscape is under VMWare... :-)
~wog
PS- only kidding
The original (sparc solaris) port has been going on for over four years now, with several graduate students working on it. There is an i386 linux port in progress, but I don't know if it's generally available yet. I'd suggest reading the papers (the above link), as there are a lot of fascinating "gotchas" and the ways that these were dealt with are quite clever. (For example: how do you atomically insert a sequence of two instructions into a process that you can't stop?)
In any event, the papers are good reading, and will be very useful to your research. (BTW, the student who started this project is finishing his PhD this winter and has a "killer job" waiting for him. :-) )
~wog
My views are my own and do not reflect those of my university or research group.
The NT paper in HTML or PDF
The 1995 "fuzz-revisited" paper in PDF
The original 1990 paper PDF
cheers,
~wog
That's what I meant by my comment. Of course, if you can analyze a core dump, then you can get a pretty good idea of what went wrong, so there's not a lot of difficulty in the UNIX arena. I'll admit that I'm a bit ignorant about developing under Windows, but I was under the impression that there's not a similar facility in the MS world. (Or do you get a stack trace if you install Microsoft VisualMagicWizardDevInterStudio2K.NET with the all-singing, all-dancing debugger?)
~wog
The SWEng community who were refereeing it wanted to see more stuff about testing methodology, whereas the fuzz tests are incredibly simpleminded in their approach and don't fit in to any of the accepted "testing paradigms". That's not to the tests' discredit at all, though, as what they exposed (the incredible fragility of many common C programs) is absolutely amazing.
I went to a talk that Prof. Miller gave on fuzz about a month ago, discussing the 2000 NT results. I'd personally be really interested to see where the blame for this lack of robustness lies: the applications, the MFC, or the Win32 API. Unfortunately, there's really no way to do that with such simple testing tools.
You can see Prof. Miller's fuzz page here. Bart Miller is a great professor and researcher; as an aside, you should really check out the Paradyn project (which is sadly slightly less well-known than fuzz outside of the scientific computing communities) and its child, the dyninst API; the purpose of these projects is to allow alteration and instrumentation of stock binaries.
~wog
My opinions are my own and not those of the research group or the university that I am affiliated with.
There are also COM-to-Java bridges, both payware (JIntegra, which I've used), and free-beer (bridge2java, available from IBM Alphaworks. bridge2java requires JNI; I haven't used it, but I have friends and colleagues who swear by it.
~wog
Basically, there are two ways to preform replication: "lazy replication" and "eager replication". "Eager replication" means that all updates are atomic across all nodes and that transactions are serializable. However, the problem with "eager replication" is that as you increase the number of nodes n, the probability of deadlock increases on the order of n^5. The "solution", such as it is, is to remove the expectation of serializabilty, using timestamps for concurrency control, only allow commutative transactions on your data, and use two-tier replication. This works for banks and others whose database applications consist mainly of commutative transactions, but won't for many others: YMMV. (Gray's paper also details the differences between having a single "master" node that "owns" all db objects and having each node own several objects.)
IIRC, the way Notes does it is by queuing updates at the local node and using an optimistic concurrency control mechanism when the local node connects to replicate. This is great for the application domain that Notes caters to: I "own" my own calendar, and if I'm out of the office (and have my node -- notebook -- with me), you can't schedule me for an appointment until I come back. However, for many application domains, this won't work.
In any case, that's why Notes does it -- because it can, thanks to the nature of its data domain -- and why most people don't -- because it's hard/impossible for the general case.
~wog
PS -- If you can't get into the ACM Digital Library, check out these lecture notes from Stonebraker's anthology at Berzerkeley.
If you want cheap replication and a consistent db, your best bet (for now) is to use pg_dumpall to make periodic backups of the db, transfer them (perhaps using scp and host-based authentication), and then use psql to restore them. To see how the dump/restore process works, look at the man page for pg_dumpall. You can likely do this all from a cronjob.
If you do it with stock pg_dumpall, you will probably need to take the site down for a few minutes or else risk odd service interuptions. However, "pg_dumpall -d" will dump tuples as SQL insert statements; this will allow you to put the data in a running db. Be aware that the dump/restore process can be quite taxing (especially on a production db where you likely don't want to turn off fsync() calls for the bulk copies). I don't know the requirements of your application, but you'll likely want to strike some sort of compromise between speed and up-to-date correctness.
HTH.
~wog
It works quite well for some applications, but not as well for the Amiga games, which were really exploiting the processor and hardware to begin with and do not lend themselves to easy analysis/translation. I don't suppose I need to mention that this is basically what Transmeta does in hardware....
~wog
That's great news about the Genesis emu. However, you can get a free-beer SNES emulator for the dreamcast now, from this site. It isn't super fast, but I've been playing Donkey Kong Country on my DC quite a bit lately....
~wog
Why? The answer is simple: load controlling. Basically, as concurrency increases, the cost of locking and that of buffer pool misses become prohibitive and transactions begin to starve. So most "smart" DBMSes will queue a few transactions for later processing after a certain point.
Because MySQL uses such coarsely-grained locks (at the table level), the opportunity for concurrency is very low to start with; hence the decreased throughput and starvation.
If you're interested in this stuff, look at Jim Gray's seminal paper "Granularity of Locks and Degrees of Consistency in a Shared Database" and Chou and DeWitt's "An Evaluation of Buffer Management Strategies for Relational Database Systems." You should be able to find either from the ACM Digital Library or in an anthology (like Stonebraker's _Readings in Databse Systems_).
~wog
I was just trying to be funny. 4dwm pretty much blows.
wog
IRIX has come with a *four*-dimensional window manager for years: 4dwm.
wog
ESR lives (IIRC) in Malvern or West Chester, PA, which are less than an hour's drive from Lehigh (except you get to deal with PA roads...ugh). You could have someone pick him up. I met him in person once at a party in Malvern, where he mentioned that he lived "down the street" from the hosts (friends of mine).
You can buy the Java VM specification or read it for free on-line. So there is a de jure standard. As for de facto, there are over 130 languages that can be compiled to JVM bytecode. There's even a GCC *backend* for Java (no, not the gcj *frontend*), which seems like it would obsolete this "Internet C++" project in short order.
~wog
Yes, sorry for the ambiguity.