Is it really that hard to download a mail content filter, or hit delete?
You obviously don't get much spam. "Hit delete" gets old after you do it a few hundred times. It's not hard to "hit delete" once, it's hard to do it hundreds of times per day, and we have better things to do.
Filters are
a nice idea, but spammers actively try to evade filters, so one needs a very sophisticated filter to
defeat spam, and then there's the risk of false positives.
really. it's a graet desktop distro, and all the server goodies are there.
Why not ? Because they don't support their old releases. Because they don't have the same level of internal know-how that Redhat has.
Because they're highly derivative of Redhat anyway, so the change of direction in Redhat either means Mandrake will change in parallel, or Mandrake faces a very uncertain future.
Because they're in dire financial trouble -- they started as a small time Redhat ripoff (RH + KDE), and haven't really moved very far beyond that.
Need any other reasons ?
The last thing you want to put on a critical server
is a Redhat *.0 release. With Redhat's new model, RH 8 and RH 9 are analogous to the old *.0 releases, so
the *.2 users are being forced to migrate to RH enterprise.
I work at a university, so we've been confronted with this issue. Given our budgeting constraints, we
will opt to move most of our machines to Debian. Why Debian ? It's one of the older, more mature distributions. It has always been the leading (and for the most part, the only) non-commercial distribution. Redhat used to be my distribution of
choice, but it's not an option for us now they have their new model. I will probably continue to use it on my home desktop, but my work desktop is running Debian unstable, and the servers at work will run some form of Debian.
On the other hand, if you have the resources,
the Enterprise version of Redhat may also be a good option. Redhat are still a reputable vendor,
and business likes to do business with business, so the idea of using something with corporate support behind it may appeal to your managers.
Yes, they have a right to be compensated for their work. However, nobody has a right to be compensated multiple times for the same work. When professionals do this directly to their clients, it's called "double billing" and is considered to be sleazy at best and outright fraud at worst.
The cost of producing a game is not in the range of $40-$60. There is no "double billing", there is a distributed payment mechanism. No customer can afford to properly compensate the developer, because no gamer would be prepared to foot the bill for the development costs of Quake III or Wolfenstein or whatever.
There is no "fraud" or "deception", because the customers are aware upfront of the payment arrangements. On the other hand, no one overtly uses "double billing", which is a stealthy way of overcharging.
On the other hand, they do expect to continually draw revenue for decades without regard to a price for the actual work.
In the case of software, this is simply not true.
Eric Raymond has given interesting insights on this -- what happens to the price of a piece of software when the author goes bankrupt ? The market value almost always plummets. Part of the value of the software then is based on the expectation of continued maintenance and support. No maintenance == no value. Likewise, obsolete software is as good as worthless. What's the going price of Microsoft Word 5.0 ? How about APplixware ? (an abandoned product that used to sell for $100-)
Some in the software industry have caught onto this and are moving towards a subscription based model, which is indeed more applicable to the way businesses use software.
As far as other copyrighted work is concerned (music, books), I actually have no problem with the notion that the author may continue to get royalties after they've produced it. They need to get paid at some point or other, and they're not going to get paid before the fact, so they may as well get paid after-the-fact. If people are prepared to pay for it, why shouldn't they draw revenue from it ?
I wonder what the rates of piracy say about other cultures' attitudes toward copying software as compared with the West and specifically the US.
"The West" in general, including the US, are indeed "more scrupulous" or "easily browbeaten".
I actually prefer to think of it more along these lines -- the west values creativity, and in particular, they value intellectual works. It's not accident that these same countries are doing quite well.
Generics are at best a trade-off: compile-time type safety in exchange for less readable code.
Given the choice between explicitly using a parameter, and using a nebulous "Object", I'd say that the template code is easier to read, because the parameter conveys more meaning than the word "object" (which offers no clue about what "type" is being used)
Where C++ has no safety without generics, Java has runtime safety.
Wrong. See dynamic_cast.
As for readability, C++ has two major benefits over Java: a preprocessor and typedefs
Shows how much you know -- you've named what are arguably two of the most botched legacy features
of C++.
Without at least one of these features, generics make code almost unreadable.
This is not true. What makes code difficult to
comprehend is complexity (allocaters, classes with
several parametrised types, etc). Fortunately, C++
offers features that make complexity manageable
(though typedefs don't deal with templates as well
as they should)
(I say mostly, because using STL with threads in cross-platform development is a recipe for disaster
No, naively assuming that every STL implementation on
every platform is thread safe is a recipe for disaster. Well, duh! The same is true even for straight C code -- you need to use thread safe versions of the library functions.
Like it or not, for Linux to become mainstream it will have to be able to run off-the-shelf commercial software at some point.
Every now and then, some slashdot or usenet pundit gives their $0.02 on what Linux "must" do to be succesful. Sorry, Linux doesn't have to answer to your demands.
Now as far as running third party packages is concerned, Windows also has these problems (with applications needing different dll versions). There are a number of solutions proprietary software vendors in both the Linux and Windows world have adopted. For example, either statically linking, or shipping your application with its own set of libraries is something often done in Windows applications and also commerical Linux applications (such as Opera)
but wait, now your graphics application dosn't work exactly right (or fails to start at all).
I've had this sort of thing happen before with Windows applications, especially freeware. Large scale commericial applications on the other hand can afford the overhead of adding a couple of extra libraries to their own directory.
backwords compatablity is a big deal, and like it or not windows and macos deal with it a LOT better than any Linux distro.
You have no idea what you're talking about. Linux also has "backwards compatibility". This issue has nothing to do with "standard APIs", in fact it's quite the opposite -- the simplest way to get compatibility is to avoid relying on pre-installed system libraries, and instead, install DLLs (or shared libraries) in the application directory. Like Star office, opera, matlab, java, etc.
I find it genuinely offensive that you seem to think it OK for someone to stand by and refuse to part with food unless for money when there are people starving to death.
Maybe the owner of the food store does donate money to charity. Or maybe not. Most capitalist countries do not forcefully prevent you from donating your resources to needy people. On the other hand, communist countries don't let you choose. Instead, the government decides (and oddly enough, it appears that the "neediest" people in such countries are the leaders themselves).
Given a choice between having people like Bill Gates controlling most of the wealth (and spending a large part of it on third world public health) and having Kim Jong-Il control it, I'd take Gates, any day.
Re:Upgrading from 2.96 to 3.3 (or 3.2) gotchas?
on
GCC 3.3 Released
·
· Score: 1
I do development work using gcc on my local Mandrake machine with 3.2.
Good.
I tried to compile one of my projects on our server which uses gcc 2.96 and it fails (3.2 follows the ANSI C++ standard, 2.96 is old-style) due to the older C++ libs. I want to upgrade our server to gcc 3.2, but since we've got other projects that work fine under 2.96, we are afraid of breaking the other projects (especially since we are close to release). Does anyone know of any gotchas?
The older compilers are less strict, so you might need to clean up some compliance issues with your code if you have any.
Alternatively, you could just install the new compiler in a different directory (/usr/gcc-3.3) and
then place symbolic links to the required runtime
libraries in/usr/lib. Then when you compile, place -L/usr/gcc-3.3/lib in the linker line.
You don't need to install a new glibc to use a different compiler.
Yes, things will come into balance eventually, but that will take decades. Until then, cheap foreign labor is beneficial to most Americans, but bad for those in "information worker" (telecommutable) jobs.
Once America is no longer a superior competitor in the tech industry, what is left to sustain the differential in the cost of American vs foreign labor ? For such a differential to exist, ultimately, someone in America has to do work that is valuable enough to keep the price of American labor up. Otherwise, no-one will buy anything from America, because foreigners can do the same thing cheaper. So, who is this person ? If no such person exists, then why do you think that this differential in cost of labor will prevail ?
Right. That's the answer, Mensa. Nevermind that I can't magically lower my cost of living to be in line with the cost of living in India.....
unless either (A) I'm lucky or (B) the cost of living gets really really low here in the US.
You left out another alternative: what if (C) the cost of living increases elsewhere ? What if the
third world countries outgrow being third world countries ?
The reason the cost of living is higher in the US is largely due to a currency differential. Basically, you can
buy a lot of third world labor with your spare change. If the "third world" countries develop competitive economies, this differential will not be sustained -- either America's currency will drop, or the other currencies will grow, or both.
Two things I see coming out of this -- one is that a lot of people are going to get burned by transitions in major economies. Another is that
being American does not in itself entitle you to
buy hours and hours of someone else's time, if that someone else has comparable skills. In other words, the worst thing that's going to happen to your living standards is not that your labor is going to become cheap, it's that foreign labor is going to become more expensive.
Eiffel's genericity is far more powerful than that which C++ provides. In Eiffel it is possible to restrict the type that may be used. This becomes useful in cases like the DICTIONARY class, where the class provided for the key must inherit HASHABLE.
You can do this in C++ too, via creative use of templates. Basically, you take advantage of the fact that you can convert Base to Derived pointers. Off the top of my head, I think something like this should work (where you inherit from AssertDerivedBase<Hashable,T> )
template <typename Derived, typename Base> class AssertDerivedBase { public: AssertDerivedBase() { Derived* x; Base* y = x; }
A thousand dollars for a linux install, eh? These SCO people must know something I don't.
They know that someone who has a quad CPU Itanium 2 can afford to spend $1000. SCO don't need to come up with something that the average slashkiddie considers to be a good price, they only need to come up with a complete product/support solution that is better than the competition.
therefore a 3-manifold is one with a 3 dimensional surface, i.e. a 4 dimensional object.
In general, you actually need 2N dimensions to embed
an N dimensional object (Whitney embedding theorem IIRC). For example, a 2D Klein bottle needs 4 dimensions.
I dare you to write a program using only C# the language.
I dare you to write a program using only C the language.
I don't want to hear another word until Mono runs Microsoft's demo applications
I don't want to hear another word until gcc compiles Microsoft's demo applications.
Seriously, standardisation is a good thing. It's not a magic bullet, but it's a good thing.
Regarding your point, if the standard were such that any standard implementation could run any of Microsofts demo applications, the tradeoff would be that the standard would be harder to implement, and that means fewer conforming implementations (that would basically make it just a formal declaration of MS's implementation) So IMO it's a good thing that the standard is not exhaustive.
Bullshit. The right to swihng your arms around ends where my face starts. There is a right to speech, but there is also a right not to listen.
Sorry, if I don't want to listen to you, you don't have a right to scream in my face.
The problem is that spammers go out of their way to avoid having their emails screened out. They don't have the right to FORCE their crap down my throat, but they go out of their way to forcefeed their shit to the recipients, by deliberately going out of their way to evade filters. They evade filters by concealing their identity and forging headers (and act of mail fraud), and going
out of their way to disguise the subject line of the message. Basically, spammers use DECEIPT to FORCE their crap into users inboxes, and I don't see how you can sit there and argue that such dishonesty and rudeness is morally defensible.
Re:Miguel missing the point?
on
The Future of Java?
·
· Score: 2, Insightful
I know I'm probably missing his,
Yes, you are.
MS made the "important stuff" standardized and "open." It still leaves MS in the position to close off the rest of the "non-important" stuff and that could break compatability.
Yes, but so what ? Mono is not a "Microsoft emulation" or "Microsoft compatibility" suite. It's a development tool primarily for Linux, that takes advantage of a good technology.
If you're looking for "cross-platform" advantages,.NET and it's VM are dependent upon MS's decision to release a VM.
This is the premise most of your post is based on, and it's rong. The goal of Mono is not binary compatibility with the MS VM.
The aim is to take advantage of a decent standard technology. Think of it more as something that is comparable to C or C++ , which are also standard technologies
where implementations are proprietary, as opposed to java.
Then you're screwed, writing applications that run on a perceived "broken" VM
That's like saying that gcc is "broken" because Linux doesn't
have MFC, Direct3D and (shudder) Win32.
What if Evolution had been written in Java?
It would suck.
OpenOffice, if I'm not mistaken, is written in Java and
You're mistaken. It's written in C++ for the most part. You should be attributing the portability
to the portability of standard languages like C, C++, and C#, not the portability of java. Of course
multi-platform development in C and C++ is nontrivial, but it's certainly not impossible either. The important thing is that there's a substantial standard core language, which makes
it possible to abstract away most of the platform specific code.
During development one major disadvantage of Qt has surfaced,
The alternative you're so enthusiastic about also has a "major disadvantage".
and I think it shows that the Trolltech has choosen a terribly wrong solution to a complex problem.
No it doesn't. It shows that you don't understand
why they chose to design it that way.
The loose coupling between componenents is a feature. The dynamic object model used by Qt is
a feature.
Mostly we have managed to work around this limitation by having a non-template superclass which declares the signals and slots (luckily slots can be virtual) and then have the template parts in a subclass, but this leads to unnatural class hierarchies.
Hiding parametrization is a necessity if you need to support a dynamic object model. There's nothing
"unnatural" about having a superclass for a family
of template classes. Doing this sometimes is a useful way of hiding template code, and reducing
code dependencies between translation units.
Other libraries have managed to support a signals-and-slots mechanism without such an ugly hack.
Using a different ugly hack instead. How do you
dynamically load objects using the boost/libsic++ template model ? It's a more static model, and
that has its disadvantages -- code is more tightly
coupled (because classes need to know more about each other), and you get all the usual template overhead. Qt behaves much like an interpreted language, it is very flexible. You lose that with
a static template model.
While not all applications rely upon templates, they have some interesting uses, and if an applications first starts to use them, most classes easily ends up as template classes. See the book Modern C++ Design [amazon.com] for "new-school" uses of templates.
This could easily be the direction C++ development is headed,
Templates are useful, and they're certainly helping
give speakers/writers something to talk/write about. But the world is bigger than templates. They are powerful, and useful if used judiciously,
but the thought of trying to actually compile an
application where most classes "end up as tempalte classes" is fairly scary. Templates are a powerful tool, but the power comes at a price. Simply put, one should not claim that "the answer is templates" without first understanding what the question is.
however I must oppose your view about ï½lesser punishmentsï½ where consequences are small.
That's unfortunate, because there already are examples of laws where the consequences have some effect on the punishment, or even the crime.
Should the man who drove off at high speed after driving into my car be let-off
This is a straw-man because the other poster was not proposing that someone be "let-off".
because he hit a cheaper production car?
In both cases, the crime is the same -- fleeing the scene of an accident. Driving into your car is not in itself a criminal act.
What should be the cut-off? Should we allow people to steal as long as they donï½t take more than $10 at a time, ï½
No, but stealing a candy-bar should not be (and isn't) treated
the same way as stealing a car, or going into
a place with a "shoppiong list" and stealing thousands of dollars worth of goods.
encourage criminals to commit a much larger number of small crimesï½
That increases the chances of catching any given
criminal, since they have to commit crimes more
frequently.
Are we trying to launch a modern Fagin who can escape the long arm of the law hiding behind juveniles committing frequent but individually petty crime?
Aren't there already offences that specifically address the issue of soliciting minors to commit
crime ? Why not just hit this Fagin guy with multiple counts of this offence ?
That argument would sound almost reasonable were it not for the fact that tapes were being produced before CDs.
Tapes were also more expensive before CDs.
But what has happened to tape prices ? I remember when I was in high school in the US, about 12 years ago (CDs were still relatively new), and tapes ranged between $9-$12. So in real terms, the price of tapes has dropped substantially since CDs hit the market. Which supports my point that selling tapes at $9- per tape is not profitable.
Selling tapes is not
a profitable business in itself. This is the problem with your argument -- you appear to be assuming that it is. The reason that record companies can afford to sell tapes at $9- each is that the marginal cost of making tapes for a company that is already manufacturing CDs is low enough to make it profitable to sell them them at that price. In other words, a lot of the costs of making tapes (recording, marketting, management) are already paid for by the time the company has made the CDs.
Re:AAAAAAAAArgh -- missing the point sooo badly
on
Java Gets Templates
·
· Score: 2
For one, "user-defined types" don't exist in Java.
I think he means "classes". Why should '+' work for the java string class, but not for a user defined string ?
Second, I don't agree with what you're saying. What about Lisp? Do you think that Lisp is a poor language because you don't add two numbers by saying 1 + 2?
There are accepted standards for what '+' means. Even in LISP. The fact that the lisp programmer
writes (+ x y) instead of x + y is not relevant -- the point is that it makes sense to have x+y or (X x y) mean the same thing ("add these things together) for user-defined types (like big numbers, high precision floating point numbers, quaternions, finite abelian groups, matrices) as it does for built-in types.
You obviously don't get much spam. "Hit delete" gets old after you do it a few hundred times. It's not hard to "hit delete" once, it's hard to do it hundreds of times per day, and we have better things to do. Filters are a nice idea, but spammers actively try to evade filters, so one needs a very sophisticated filter to defeat spam, and then there's the risk of false positives.
Why not ? Because they don't support their old releases. Because they don't have the same level of internal know-how that Redhat has. Because they're highly derivative of Redhat anyway, so the change of direction in Redhat either means Mandrake will change in parallel, or Mandrake faces a very uncertain future. Because they're in dire financial trouble -- they started as a small time Redhat ripoff (RH + KDE), and haven't really moved very far beyond that. Need any other reasons ?
I work at a university, so we've been confronted with this issue. Given our budgeting constraints, we will opt to move most of our machines to Debian. Why Debian ? It's one of the older, more mature distributions. It has always been the leading (and for the most part, the only) non-commercial distribution. Redhat used to be my distribution of choice, but it's not an option for us now they have their new model. I will probably continue to use it on my home desktop, but my work desktop is running Debian unstable, and the servers at work will run some form of Debian.
On the other hand, if you have the resources, the Enterprise version of Redhat may also be a good option. Redhat are still a reputable vendor, and business likes to do business with business, so the idea of using something with corporate support behind it may appeal to your managers.
Cheers,
The cost of producing a game is not in the range of $40-$60. There is no "double billing", there is a distributed payment mechanism. No customer can afford to properly compensate the developer, because no gamer would be prepared to foot the bill for the development costs of Quake III or Wolfenstein or whatever. There is no "fraud" or "deception", because the customers are aware upfront of the payment arrangements. On the other hand, no one overtly uses "double billing", which is a stealthy way of overcharging.
On the other hand, they do expect to continually draw revenue for decades without regard to a price for the actual work.
In the case of software, this is simply not true. Eric Raymond has given interesting insights on this -- what happens to the price of a piece of software when the author goes bankrupt ? The market value almost always plummets. Part of the value of the software then is based on the expectation of continued maintenance and support. No maintenance == no value. Likewise, obsolete software is as good as worthless. What's the going price of Microsoft Word 5.0 ? How about APplixware ? (an abandoned product that used to sell for $100-) Some in the software industry have caught onto this and are moving towards a subscription based model, which is indeed more applicable to the way businesses use software.
As far as other copyrighted work is concerned (music, books), I actually have no problem with the notion that the author may continue to get royalties after they've produced it. They need to get paid at some point or other, and they're not going to get paid before the fact, so they may as well get paid after-the-fact. If people are prepared to pay for it, why shouldn't they draw revenue from it ?
"The West" in general, including the US, are indeed "more scrupulous" or "easily browbeaten".
I actually prefer to think of it more along these lines -- the west values creativity, and in particular, they value intellectual works. It's not accident that these same countries are doing quite well.
Given the choice between explicitly using a parameter, and using a nebulous "Object", I'd say that the template code is easier to read, because the parameter conveys more meaning than the word "object" (which offers no clue about what "type" is being used)
Where C++ has no safety without generics, Java has runtime safety.
Wrong. See dynamic_cast.
As for readability, C++ has two major benefits over Java: a preprocessor and typedefs
Shows how much you know -- you've named what are arguably two of the most botched legacy features of C++.
Without at least one of these features, generics make code almost unreadable.
This is not true. What makes code difficult to comprehend is complexity (allocaters, classes with several parametrised types, etc). Fortunately, C++ offers features that make complexity manageable (though typedefs don't deal with templates as well as they should)
(I say mostly, because using STL with threads in cross-platform development is a recipe for disaster
No, naively assuming that every STL implementation on every platform is thread safe is a recipe for disaster. Well, duh! The same is true even for straight C code -- you need to use thread safe versions of the library functions.
Every now and then, some slashdot or usenet pundit gives their $0.02 on what Linux "must" do to be succesful. Sorry, Linux doesn't have to answer to your demands.
Now as far as running third party packages is concerned, Windows also has these problems (with applications needing different dll versions). There are a number of solutions proprietary software vendors in both the Linux and Windows world have adopted. For example, either statically linking, or shipping your application with its own set of libraries is something often done in Windows applications and also commerical Linux applications (such as Opera)
but wait, now your graphics application dosn't work exactly right (or fails to start at all).
I've had this sort of thing happen before with Windows applications, especially freeware. Large scale commericial applications on the other hand can afford the overhead of adding a couple of extra libraries to their own directory.
backwords compatablity is a big deal, and like it or not windows and macos deal with it a LOT better than any Linux distro.
You have no idea what you're talking about. Linux also has "backwards compatibility". This issue has nothing to do with "standard APIs", in fact it's quite the opposite -- the simplest way to get compatibility is to avoid relying on pre-installed system libraries, and instead, install DLLs (or shared libraries) in the application directory. Like Star office, opera, matlab, java, etc.
Maybe the owner of the food store does donate money to charity. Or maybe not. Most capitalist countries do not forcefully prevent you from donating your resources to needy people. On the other hand, communist countries don't let you choose. Instead, the government decides (and oddly enough, it appears that the "neediest" people in such countries are the leaders themselves). Given a choice between having people like Bill Gates controlling most of the wealth (and spending a large part of it on third world public health) and having Kim Jong-Il control it, I'd take Gates, any day.
Good.
I tried to compile one of my projects on our server which uses gcc 2.96 and it fails (3.2 follows the ANSI C++ standard, 2.96 is old-style) due to the older C++ libs. I want to upgrade our server to gcc 3.2, but since we've got other projects that work fine under 2.96, we are afraid of breaking the other projects (especially since we are close to release). Does anyone know of any gotchas?
The older compilers are less strict, so you might need to clean up some compliance issues with your code if you have any. Alternatively, you could just install the new compiler in a different directory (/usr/gcc-3.3) and then place symbolic links to the required runtime libraries in /usr/lib. Then when you compile, place -L/usr/gcc-3.3/lib in the linker line.
You don't need to install a new glibc to use a different compiler.
Once America is no longer a superior competitor in the tech industry, what is left to sustain the differential in the cost of American vs foreign labor ? For such a differential to exist, ultimately, someone in America has to do work that is valuable enough to keep the price of American labor up. Otherwise, no-one will buy anything from America, because foreigners can do the same thing cheaper. So, who is this person ? If no such person exists, then why do you think that this differential in cost of labor will prevail ?
You left out another alternative: what if (C) the cost of living increases elsewhere ? What if the third world countries outgrow being third world countries ? The reason the cost of living is higher in the US is largely due to a currency differential. Basically, you can buy a lot of third world labor with your spare change. If the "third world" countries develop competitive economies, this differential will not be sustained -- either America's currency will drop, or the other currencies will grow, or both.
Two things I see coming out of this -- one is that a lot of people are going to get burned by transitions in major economies. Another is that being American does not in itself entitle you to buy hours and hours of someone else's time, if that someone else has comparable skills. In other words, the worst thing that's going to happen to your living standards is not that your labor is going to become cheap, it's that foreign labor is going to become more expensive.
You can do this in C++ too, via creative use of templates. Basically, you take advantage of the fact that you can convert Base to Derived pointers. Off the top of my head, I think something like this should work (where you inherit from AssertDerivedBase<Hashable,T> )
Depends. I'd let it slide if the spammer was beaten to death by a mob, provided that
They know that someone who has a quad CPU Itanium 2 can afford to spend $1000. SCO don't need to come up with something that the average slashkiddie considers to be a good price, they only need to come up with a complete product/support solution that is better than the competition.
In general, you actually need 2N dimensions to embed an N dimensional object (Whitney embedding theorem IIRC). For example, a 2D Klein bottle needs 4 dimensions.
I dare you to write a program using only C the language.
I don't want to hear another word until Mono runs Microsoft's demo applications
I don't want to hear another word until gcc compiles Microsoft's demo applications.
Seriously, standardisation is a good thing. It's not a magic bullet, but it's a good thing. Regarding your point, if the standard were such that any standard implementation could run any of Microsofts demo applications, the tradeoff would be that the standard would be harder to implement, and that means fewer conforming implementations (that would basically make it just a formal declaration of MS's implementation) So IMO it's a good thing that the standard is not exhaustive.
Bullshit. The right to swihng your arms around ends where my face starts. There is a right to speech, but there is also a right not to listen. Sorry, if I don't want to listen to you, you don't have a right to scream in my face.
The problem is that spammers go out of their way to avoid having their emails screened out. They don't have the right to FORCE their crap down my throat, but they go out of their way to forcefeed their shit to the recipients, by deliberately going out of their way to evade filters. They evade filters by concealing their identity and forging headers (and act of mail fraud), and going out of their way to disguise the subject line of the message. Basically, spammers use DECEIPT to FORCE their crap into users inboxes, and I don't see how you can sit there and argue that such dishonesty and rudeness is morally defensible.
Yes, you are.
MS made the "important stuff" standardized and "open." It still leaves MS in the position to close off the rest of the "non-important" stuff and that could break compatability.
Yes, but so what ? Mono is not a "Microsoft emulation" or "Microsoft compatibility" suite. It's a development tool primarily for Linux, that takes advantage of a good technology.
If you're looking for "cross-platform" advantages, .NET and it's VM are dependent upon MS's decision to release a VM.
This is the premise most of your post is based on, and it's rong. The goal of Mono is not binary compatibility with the MS VM. The aim is to take advantage of a decent standard technology. Think of it more as something that is comparable to C or C++ , which are also standard technologies where implementations are proprietary, as opposed to java.
Then you're screwed, writing applications that run on a perceived "broken" VM
That's like saying that gcc is "broken" because Linux doesn't have MFC, Direct3D and (shudder) Win32.
What if Evolution had been written in Java?
It would suck.
OpenOffice, if I'm not mistaken, is written in Java and
You're mistaken. It's written in C++ for the most part. You should be attributing the portability to the portability of standard languages like C, C++, and C#, not the portability of java. Of course multi-platform development in C and C++ is nontrivial, but it's certainly not impossible either. The important thing is that there's a substantial standard core language, which makes it possible to abstract away most of the platform specific code.
The alternative you're so enthusiastic about also has a "major disadvantage".
and I think it shows that the Trolltech has choosen a terribly wrong solution to a complex problem.
No it doesn't. It shows that you don't understand why they chose to design it that way. The loose coupling between componenents is a feature. The dynamic object model used by Qt is a feature.
Mostly we have managed to work around this limitation by having a non-template superclass which declares the signals and slots (luckily slots can be virtual) and then have the template parts in a subclass, but this leads to unnatural class hierarchies.
Hiding parametrization is a necessity if you need to support a dynamic object model. There's nothing "unnatural" about having a superclass for a family of template classes. Doing this sometimes is a useful way of hiding template code, and reducing code dependencies between translation units.
Other libraries have managed to support a signals-and-slots mechanism without such an ugly hack.
Using a different ugly hack instead. How do you dynamically load objects using the boost/libsic++ template model ? It's a more static model, and that has its disadvantages -- code is more tightly coupled (because classes need to know more about each other), and you get all the usual template overhead. Qt behaves much like an interpreted language, it is very flexible. You lose that with a static template model.
While not all applications rely upon templates, they have some interesting uses, and if an applications first starts to use them, most classes easily ends up as template classes. See the book Modern C++ Design [amazon.com] for "new-school" uses of templates. This could easily be the direction C++ development is headed,
Templates are useful, and they're certainly helping give speakers/writers something to talk/write about. But the world is bigger than templates. They are powerful, and useful if used judiciously, but the thought of trying to actually compile an application where most classes "end up as tempalte classes" is fairly scary. Templates are a powerful tool, but the power comes at a price. Simply put, one should not claim that "the answer is templates" without first understanding what the question is.
That's unfortunate, because there already are examples of laws where the consequences have some effect on the punishment, or even the crime.
Should the man who drove off at high speed after driving into my car be let-off
This is a straw-man because the other poster was not proposing that someone be "let-off".
because he hit a cheaper production car?
In both cases, the crime is the same -- fleeing the scene of an accident. Driving into your car is not in itself a criminal act.
What should be the cut-off? Should we allow people to steal as long as they donï½t take more than $10 at a time, ï½
No, but stealing a candy-bar should not be (and isn't) treated the same way as stealing a car, or going into a place with a "shoppiong list" and stealing thousands of dollars worth of goods.
encourage criminals to commit a much larger number of small crimesï½
That increases the chances of catching any given criminal, since they have to commit crimes more frequently.
Are we trying to launch a modern Fagin who can escape the long arm of the law hiding behind juveniles committing frequent but individually petty crime?
Aren't there already offences that specifically address the issue of soliciting minors to commit crime ? Why not just hit this Fagin guy with multiple counts of this offence ?
The article mentions it. The spammer pays the bounty. Cute, huh ?
He has a Ph.D. Have a nice day.
Tapes were also more expensive before CDs.
But what has happened to tape prices ? I remember when I was in high school in the US, about 12 years ago (CDs were still relatively new), and tapes ranged between $9-$12. So in real terms, the price of tapes has dropped substantially since CDs hit the market. Which supports my point that selling tapes at $9- per tape is not profitable.
Selling tapes is not a profitable business in itself. This is the problem with your argument -- you appear to be assuming that it is. The reason that record companies can afford to sell tapes at $9- each is that the marginal cost of making tapes for a company that is already manufacturing CDs is low enough to make it profitable to sell them them at that price. In other words, a lot of the costs of making tapes (recording, marketting, management) are already paid for by the time the company has made the CDs.
I think he means "classes". Why should '+' work for the java string class, but not for a user defined string ?
Second, I don't agree with what you're saying. What about Lisp? Do you think that Lisp is a poor language because you don't add two numbers by saying 1 + 2?
There are accepted standards for what '+' means. Even in LISP. The fact that the lisp programmer writes (+ x y) instead of x + y is not relevant -- the point is that it makes sense to have x+y or (X x y) mean the same thing ("add these things together) for user-defined types (like big numbers, high precision floating point numbers, quaternions, finite abelian groups, matrices) as it does for built-in types.