I also expect more new languages to have dynamic instead of static typing, which is also a way to attain higher programmer productivity (especially for refactoring) at the cost of compiler/runtime efficiency.
well, i agree with most of your well-reasoned post but disagree with you here.
static typing actually improves programmer productivity by reducing error rates. however, it requires an advanced language for it to really work. for instance, in C one often has to "break" strong typing in order to implement a generic callback (for instance, g_hash_table_foreach from glib). modern languages that allow for closures and multiple inheritance make strong typing viable.
why don't you people stop making like you're being forced to buy more from Microsoft? The only real taxes are those collected by the government with guns to back them up.
well, all the time i order machines that i intend to install linux on from vendor X, and i say, "i don't want windows installed on the machine, and i don't want to pay for a windows license". however, thanks to microsoft's bulk licensing approach with vendors, this is not possible.
no guns, but i am forced to buy what i don't want, and put $60 in the coffers of a company i don't like.
now, one could say that exchange is a totally optional product, and that one is not forced to buy it, so the concept of "M$ tax" doesn't apply to this case. fair enough. however it does apply to some cases, and is a valid term.
Record companies were to provide a means for exposure; now that the Internet provides near-universal exposure at comparatively no cost, the record companies' utility has expired.
Record companies also provide the valuable service of manipulating governmental organizations into passing laws to artificially maintain the viability of selling data as a business model.
Perhaps the artists could form a collective, organized through the internet, whereby they can cut out the middleman and buy legislators directly!
Sorry, but you are wrong. In the DEVEL release of MySQL 4.xx the client lib is GPL, in the 3.xx version, which is still the version in wide use except for those willing to use pre-release software in production environments, the client lib is LGPL.
You might want to make sure you are right before telling others they are inaccurate.
Well, since this is for posterity (you know people will be digging into the obscure flamewars of this thread in the archives for years:) ), I feel compelled to note that, from the mysql website, we have:
The software from MySQL AB that you can download from the pages listed below, are licensed under the GPL license and is provided "as is" and is without any warranty.
Reading the license term for MySQL it seems pretty clear that Novell has no choice in choosing the license model. According to the terms at the MySQL page, MySQL is only GPL if the whole system is open sourced or GPL:ed. N'est ce pas?
Actually this points to an important weakness in the GPL... it only applies if you link against code.
It is possible, for instance, to write your own mysql client library, which then communicates with the mysql server over a socket. Separate programs, no license infringements, so your code (with your special client library) can be closed source even if you use the mysql GPL license (and, when you distribute your complete product, be sure to include a copy of the mysql source).
However, most people use (link against) the (GPL'd) mysql client library to talk to the mysql server, and that's what gets them.
It is for this reason that I suspect mysql's protocol and client documentation is nonexistant. Contrast to the extensively documented PostgreSQL protocol and client libraries, which is a BSD license product. There is no incentive for the PostgreSQL guys to create impediments to custom engineered client libraries.
On NT, however, any user can have an ACL that denies the sysadmin rights to access a file or folder, and can log attempts by anyone including the sysadmin to do so.
Sounds interesting... however, isn't it the case that, as the system administrator, one could edit the access log, or log in as the user whose authorized as the ACL, etc. ?
Honestly, I don't know the answer, because I know basically zero about NT administration... but from what I remember from the VAX days, these finer grained permission systems still had a concept which was equivalent to super-user (e.g., assign capabilities, or something like that).
So maybe the UNIX guys are just lazy, saying, well it's functionally equivalent to root, so why not, which is of course a refutation of the idea of defense in depth.
i predict this book will be popular with those who do the work, and they will highly recommend it to those who schedule the work, who will find its arguments less persuasive.
slightly off topic, but i've found that ccache to be amazing at speeding up compiles when developing code.
it basically hashes (after a cpp pass) and caches. alot of times one has to make clean, tweak a Makefile.am, change a preprocessor variable, or work with multiple different branches, such that most source files are still the exactly the same. in that case, huge speedups.
i hope everybody noticed they got a $2 million dollar grant from NIST to develop this technology.
your hard earned tax dollars, not going to towards things like a faster internet, faster genome sequencing, or an aerospace plane, but instead to pay to develop a technology that will make some guy rich helping hollywood fight a fringe form of copy protection that will be dwarfed by the possibilities of direct digital piracy that will be opened up by the digital distribution/projection infrastructure this proposed technology depends upon.
as has been previously noted, the functional vs. non-functional distinction is only one of several, e.g., declarative vs. imperative, strongly-typed vs. weakly-typed, compiled vs. interpreted, etc.
the promise of all newer programming languages is that they are easier to develop, understand, and maintain, because the programmer is elevated to thinking about the "big picture".
i think it's possible to do great things in old languages like C. what it comes down to is, you need discipline. if the compiler/language design has discipline for you, great. otherwise, if you have alot of experience with alot of languages, and are anal, you'll do ok in a small group of similarly talented anal people. in a larger group or project, any not-automatically-enforced discipline will eventually be broken.
unfortunately (?) i still do most of my programming in C/perl. that's because a) i need the solutions i'm developing to work 100%, and i can't afford to run into obscure under the hood problems in still-maturing technologies like ghc, and b) i like to leverage the huge body of existing libraries out there, and c) i have only worked on small projects (
however personally, i like to keep as much of my computer life under CVS as possible, because recovering deletion is just one aspect of the many ways in which i screw up regularly. that includes my home directory, zone files, system configuration files, etc.
it would be neat if a distro (like debian!) put/etc under CVS automatically, even though it's easy to do yerself.
The big advantage of libtrash is simplicity (it's a preloaded shared library - no recompiling or modifications required) and it's user space (no changes to the US).
As opposed to kernel-space changes, which do require amending the constitution of the US.
technology development leverages technology development. that's been the history of mankind. the fact that engineers no longer need the skills of the previous generation is not something to be sad about, it's something to rejoice!
Forget transactions -- you can fake that with LOCKs. But when are subselects coming to MySQL? It's not about poorly written queries, there are just some things you cannot do without subselects.
Fair enough. However, a great many subselects can be handled by select-ing into temporary tables and then joining appropriately.
Stepping back a bit, MySQL is a solid product, at an awesome price, which is invading the market from below. would it better with feature X? sure. is feature X worth the price differential between what you pay now ($0 for gpl license) and what you would pay with oracle/db2/sql server? for some people, maybe. for most people, no. and that is the problem that all disruptive technologies exploit... namely, that the mainstream product starts to overdeliver performance relative to market demand.
what i like about this is that this is something the traditional television networks would have trouble doing since it's not clear how to capitalize it.
pbs thus can take a near monopoly on a new paradigm in (video) content production and distribution, and it might raise their donations as well.
in fact, to prognosticate a little, perhaps the future of content in a p2p world is higher quality, less lowest-common-denominator stuff, since the only viable business models are donations (pbs) and pay-for-premium-content (hbo).
The real problem is that because the anti-nuke lobby has made it uneconomical to run nuclear power plants, we currently get almost all our power from coal and gas burning plants. These guys are not very efficient at making electricity, a least not compared to the super efficient engines in the hybrids.
Not saying you are wrong, but this goes against my understanding, and common sense as well. Basically, if all the electricity generation is centralized, one gets economies of scale, such that the costs of very advanced heat->energy conversion techniques and pollution reduction techniques can be amortized over the entire user base.
I poked on google and found an article which suggests that while fuel cell based vehicles are more efficient than the current generation of central power plants, that is not true for fossil fuel based vehicles including hybrids. To quote:
Even taking into account 7-8% transmission line losses, centrally generated power is nearly twice as efficient as a gasoline internal combustion engine, and their emissions are more easily monitored and controlled, as well.
So essentially pure EV, implented on today's central power plants, would be an improvement.
well, hindsight is 20/20, but if you'd archived your collection in a lossless format, you wouldn't have this problem now.
lossless encodings are, by definition, bit by bit identical to the original. obviously, the compression isn't as good, i get about 2x from flac (i.e. about 300mb per cd), but hey, harddrives are cheap.
But the real advantage of the Bayesian approach, of course, is that you know what you're measuring. Feature-recognizing filters like SpamAssassin assign a spam "score" to email. The Bayesian approach assigns an actual probability. The problem with a "score" is that no one knows what it means.
The score for feature X in spamasassin is equivalent to log-likelihood ratio p (X | SPAM) / p (X | not SPAM). The scores are added together, which is equivalent to a conditional independence assumption. The spam threshold is equivalent to a certain prior probability ratio p (SPAM) / p (not SPAM) combined with a certain cost ratio cost (false positive) / cost (incorrect rejection).
In short, spamassassin is the classic naive bayesian classifier, although I admit the spamassassin designers might not know this.
Having said that, single word frequencies are clearly another important feature that could also be incorporated into spamassassin's framework.
MySQL is a great product, but only for the things it does well. If you try to make it do things that it can't, of course you're gonna get burned.
I think this idea, which is fairly common, comes from less than recent experience with mysql. With the innodb table handler, one gets BEGIN/COMMIT/ROLLBACK semantics. With master/slave replication, one gets hot failover backup.
This is a textbook example of progression of disruptive technology. Commercial database offerings have far exceeded the performance and feature requirements of the typical user. MySQL has been invading the market from the low end, is both cheaper and far more convenient to administrate, and is now starting to achieve higher-end features.
Some things about MySQL are inconvenient, like lack of multi-table updates or sub-selects. But, every time I've ever done a database app, it's always been three tiered, so I just work around these limitations in the middle tier. I wouldn't call that getting burned. I would call it extra typing and (sometimes) additional network I/O.
-- p
well, i applaud their work and understand their practical market-driven motivation. however i do not think the cassette metaphor (linear access) is the best way to navigate data of any kind, including music. one really wants constant time random access.
i think what is really needed is some interface innovation to help people manage thousands of hours of music available from their car stereo in a random access fashion. that's what's holding back car mp3 imho. maybe voice control is the best way, given the attentional demands and safety concerns inherent in driving.
one, the postgresql protocol is extremely well documented, making it easy to implement a database handle, e.g., for a gsk style main loop or even in a language like haskell. the mysql protocol is completely undocumented.
second, the mysql client libraries are gpl licensed. postgresql is bsd.
these two points are related because 1) i can't really effective reimplement a mysql client library without good protocol documentation and 2) i can't distribute the mysql client library without releasing all my code, and sometimes from a commercial standpoint that's not an option. i could suck it up and get a mysql commercial license, but at that point, i'll also consider other commercial rdbms's.
i would also like to note that in the case the bsd license is actually indirectly incentivizing better documentation.
that article mentioned some commercial software due out by the end of the year to make dj-ing with mp3s easy.
time to shamelessly plug gdam an open source mp3 dj-ing app some friends of mine have been hacking for over three years now, which imho is totally awesome. using gtk and runs under linux, os/x, and maybe even windows (don't know about that last one for sure).
one of the main developers is a dj in the burgeoning new york electronic dj scene.
I also expect more new languages to have dynamic instead of static typing, which is also a way to attain higher programmer productivity (especially for refactoring) at the cost of compiler/runtime efficiency.
well, i agree with most of your well-reasoned post but disagree with you here.
static typing actually improves programmer productivity by reducing error rates. however, it requires an advanced language for it to really work. for instance, in C one often has to "break" strong typing in order to implement a generic callback (for instance, g_hash_table_foreach from glib). modern languages that allow for closures and multiple inheritance make strong typing viable.
-- p
why don't you people stop making like you're being forced to buy more from Microsoft? The only real taxes are those collected by the government with guns to back them up.
well, all the time i order machines that i intend to install linux on from vendor X, and i say, "i don't want windows installed on the machine, and i don't want to pay for a windows license". however, thanks to microsoft's bulk licensing approach with vendors, this is not possible.
no guns, but i am forced to buy what i don't want, and put $60 in the coffers of a company i don't like.
now, one could say that exchange is a totally optional product, and that one is not forced to buy it, so the concept of "M$ tax" doesn't apply to this case. fair enough. however it does apply to some cases, and is a valid term.
-- p
Record companies were to provide a means for exposure; now that the Internet provides near-universal exposure at comparatively no cost, the record companies' utility has expired.
Record companies also provide the valuable service of manipulating governmental organizations into passing laws to artificially maintain the viability of selling data as a business model.
Perhaps the artists could form a collective, organized through the internet, whereby they can cut out the middleman and buy legislators directly!
-- p
is responsible for this DDOS attack? :)
-- p
Sorry, but you are wrong. In the DEVEL release of MySQL 4.xx the client lib is GPL, in the 3.xx version, which is still the version in wide use except for those willing to use pre-release software in production environments, the client lib is LGPL.
:) ), I feel compelled to note that, from the mysql website, we have:
You might want to make sure you are right before telling others they are inaccurate.
Well, since this is for posterity (you know people will be digging into the obscure flamewars of this thread in the archives for years
The software from MySQL AB that you can download from the pages listed below, are licensed under the GPL license and is provided "as is" and is without any warranty.
'nuff said.
-- p
The reasoning is somewhat inaccurate here. The mysql client library is LGPL, making it prefectly ok to link in non-GPL software.
...
Actually, it's GPL not LGPL. Talk about inaccurate.
Glad to see that the (inaccurate) response to my post got moderated at +4, while my post was +2.
hmmm
-- p
Reading the license term for MySQL it seems pretty clear that Novell has no choice in choosing the license model. According to the terms at the MySQL page, MySQL is only GPL if the whole system is open sourced or GPL:ed. N'est ce pas?
... it only applies if you link against code.
Actually this points to an important weakness in the GPL
It is possible, for instance, to write your own mysql client library, which then communicates with the mysql server over a socket. Separate programs, no license infringements, so your code (with your special client library) can be closed source even if you use the mysql GPL license (and, when you distribute your complete product, be sure to include a copy of the mysql source).
However, most people use (link against) the (GPL'd) mysql client library to talk to the mysql server, and that's what gets them.
It is for this reason that I suspect mysql's protocol and client documentation is nonexistant. Contrast to the extensively documented PostgreSQL protocol and client libraries, which is a BSD license product. There is no incentive for the PostgreSQL guys to create impediments to custom engineered client libraries.
-- p
On NT, however, any user can have an ACL that denies the sysadmin rights to access a file or folder, and can log attempts by anyone including the sysadmin to do so.
... however, isn't it the case that, as the system administrator, one could edit the access log, or log in as the user whose authorized as the ACL, etc. ?
... but from what I remember from the VAX days, these finer grained permission systems still had a concept which was equivalent to super-user (e.g., assign capabilities, or something like that).
Sounds interesting
Honestly, I don't know the answer, because I know basically zero about NT administration
So maybe the UNIX guys are just lazy, saying, well it's functionally equivalent to root, so why not, which is of course a refutation of the idea of defense in depth.
-- p
geez peets. its not enough that they stole every innovation mac made in their product ... now they have to steal their marketing too?
-- p
i predict this book will be popular with those who do the work, and they will highly recommend it to those who schedule the work, who will find its arguments less persuasive.
-- p
slightly off topic, but i've found that ccache to be amazing at speeding up compiles when developing code.
it basically hashes (after a cpp pass) and caches. alot of times one has to make clean, tweak a Makefile.am, change a preprocessor variable, or work with multiple different branches, such that most source files are still the exactly the same. in that case, huge speedups.
-- p
i hope everybody noticed they got a $2 million dollar grant from NIST to develop this technology.
your hard earned tax dollars, not going to towards things like a faster internet, faster genome sequencing, or an aerospace plane, but instead to pay to develop a technology that will make some guy rich helping hollywood fight a fringe form of copy protection that will be dwarfed by the possibilities of direct digital piracy that will be opened up by the digital distribution/projection infrastructure this proposed technology depends upon.
wtf.
-- p
as has been previously noted, the functional vs. non-functional distinction is only one of several, e.g., declarative vs. imperative, strongly-typed vs. weakly-typed, compiled vs. interpreted, etc.
the promise of all newer programming languages is that they are easier to develop, understand, and maintain, because the programmer is elevated to thinking about the "big picture".
i think it's possible to do great things in old languages like C. what it comes down to is, you need discipline. if the compiler/language design has discipline for you, great. otherwise, if you have alot of experience with alot of languages, and are anal, you'll do ok in a small group of similarly talented anal people. in a larger group or project, any not-automatically-enforced discipline will eventually be broken.
unfortunately (?) i still do most of my programming in C/perl. that's because a) i need the solutions i'm developing to work 100%, and i can't afford to run into obscure under the hood problems in still-maturing technologies like ghc, and b) i like to leverage the huge body of existing libraries out there, and c) i have only worked on small projects (
-- p
first, i commend this cute hack.
/etc under CVS automatically, even though it's easy to do yerself.
however personally, i like to keep as much of my computer life under CVS as possible, because recovering deletion is just one aspect of the many ways in which i screw up regularly. that includes my home directory, zone files, system configuration files, etc.
it would be neat if a distro (like debian!) put
-- p
The big advantage of libtrash is simplicity (it's a preloaded shared library - no recompiling or modifications required) and it's user space (no changes to the US).
As opposed to kernel-space changes, which do require amending the constitution of the US.
Sad thing is, that might be true one day.
-- p
technology development leverages technology development. that's been the history of mankind. the fact that engineers no longer need the skills of the previous generation is not something to be sad about, it's something to rejoice!
Forget transactions -- you can fake that with LOCKs. But when are subselects coming to MySQL? It's not about poorly written queries, there are just some things you cannot do without subselects.
... namely, that the mainstream product starts to overdeliver performance relative to market demand.
Fair enough. However, a great many subselects can be handled by select-ing into temporary tables and then joining appropriately.
Stepping back a bit, MySQL is a solid product, at an awesome price, which is invading the market from below. would it better with feature X? sure. is feature X worth the price differential between what you pay now ($0 for gpl license) and what you would pay with oracle/db2/sql server? for some people, maybe. for most people, no. and that is the problem that all disruptive technologies exploit
-- p
what i like about this is that this is something the traditional television networks would have trouble doing since it's not clear how to capitalize it.
pbs thus can take a near monopoly on a new paradigm in (video) content production and distribution, and it might raise their donations as well.
in fact, to prognosticate a little, perhaps the future of content in a p2p world is higher quality, less lowest-common-denominator stuff, since the only viable business models are donations (pbs) and pay-for-premium-content (hbo).
-- p
The real problem is that because the anti-nuke lobby has made it uneconomical to run nuclear power plants, we currently get almost all our power from coal and gas burning plants. These guys are not very efficient at making electricity, a least not compared to the super efficient engines in the hybrids.
Not saying you are wrong, but this goes against my understanding, and common sense as well. Basically, if all the electricity generation is centralized, one gets economies of scale, such that the costs of very advanced heat->energy conversion techniques and pollution reduction techniques can be amortized over the entire user base.
I poked on google and found an article which suggests that while fuel cell based vehicles are more efficient than the current generation of central power plants, that is not true for fossil fuel based vehicles including hybrids. To quote:
Even taking into account 7-8% transmission line losses, centrally generated power is nearly twice as efficient as a gasoline internal combustion engine, and their emissions are more easily monitored and controlled, as well.
So essentially pure EV, implented on today's central power plants, would be an improvement.
-- p
well, hindsight is 20/20, but if you'd archived your collection in a lossless format, you wouldn't have this problem now.
lossless encodings are, by definition, bit by bit identical to the original. obviously, the compression isn't as good, i get about 2x from flac (i.e. about 300mb per cd), but hey, harddrives are cheap.
as a bonus, flac is patent unencumbered.
-- p
But the real advantage of the Bayesian approach, of course, is that you know what you're measuring. Feature-recognizing filters like SpamAssassin assign a spam "score" to email. The Bayesian approach assigns an actual probability. The problem with a "score" is that no one knows what it means.
The score for feature X in spamasassin is equivalent to log-likelihood ratio p (X | SPAM) / p (X | not SPAM). The scores are added together, which is equivalent to a conditional independence assumption. The spam threshold is equivalent to a certain prior probability ratio p (SPAM) / p (not SPAM) combined with a certain cost ratio cost (false positive) / cost (incorrect rejection).
In short, spamassassin is the classic naive bayesian classifier, although I admit the spamassassin designers might not know this.
Having said that, single word frequencies are clearly another important feature that could also be incorporated into spamassassin's framework.
-- p
MySQL is a great product, but only for the things it does well. If you try to make it do things that it can't, of course you're gonna get burned.
I think this idea, which is fairly common, comes from less than recent experience with mysql. With the innodb table handler, one gets BEGIN/COMMIT/ROLLBACK semantics. With master/slave replication, one gets hot failover backup.
This is a textbook example of progression of disruptive technology. Commercial database offerings have far exceeded the performance and feature requirements of the typical user. MySQL has been invading the market from the low end, is both cheaper and far more convenient to administrate, and is now starting to achieve higher-end features.
Some things about MySQL are inconvenient, like lack of multi-table updates or sub-selects. But, every time I've ever done a database app, it's always been three tiered, so I just work around these limitations in the middle tier. I wouldn't call that getting burned. I would call it extra typing and (sometimes) additional network I/O.
-- p
well, i applaud their work and understand their practical market-driven motivation. however i do not think the cassette metaphor (linear access) is the best way to navigate data of any kind, including music. one really wants constant time random access.
i think what is really needed is some interface innovation to help people manage thousands of hours of music available from their car stereo in a random access fashion. that's what's holding back car mp3 imho. maybe voice control is the best way, given the attentional demands and safety concerns inherent in driving.
-- p
as a programmer, i like working with postgresql.
one, the postgresql protocol is extremely well documented, making it easy to implement a database handle, e.g., for a gsk style main loop or even in a language like haskell. the mysql protocol is completely undocumented.
second, the mysql client libraries are gpl licensed. postgresql is bsd.
these two points are related because 1) i can't really effective reimplement a mysql client library without good protocol documentation and 2) i can't distribute the mysql client library without releasing all my code, and sometimes from a commercial standpoint that's not an option. i could suck it up and get a mysql commercial license, but at that point, i'll also consider other commercial rdbms's.
i would also like to note that in the case the bsd license is actually indirectly incentivizing better documentation.
-- p
that article mentioned some commercial software due out by the end of the year to make dj-ing with mp3s easy.
time to shamelessly plug gdam an open source mp3 dj-ing app some friends of mine have been hacking for over three years now, which imho is totally awesome. using gtk and runs under linux, os/x, and maybe even windows (don't know about that last one for sure).
one of the main developers is a dj in the burgeoning new york electronic dj scene.
check it out.