If Microsoft are seen as a fantastic place to work by gay, bisexual, and transgendered employees, then that might be an advantage over short sighted competitors. If those competitors were forced by this law into being just as nice, then it would hurt Microsoft. Maybe.
This is assuming that Microsoft's support for gay and transgendered employees has comparatively little cost.
Copyright is copyright. The phrase "Intellectual Property Rights" covers them from an economic perspective, where property rights can be granted to things such as clean air (thus, if you pollute my air, as it is my property you must pay), amongst other things.
property rights are very distinct from property, they can be used to correct market inefficiencies by adjusting the market
Heh, patents4innovation is as retarded as Lord Sainsbury.
"The maximum term for patent protection is 20 years. By contrast copyright lasts much longer, for 50 years after the death of the author. Curiously, the OSS lobby has not voiced any concern about the much longer term for copyright even though copyright is the protection mechanism favoured by the OSS lobby. If 50+ years is not too long, why is 20 years maximum too long?"
This is such a bloody irritating strawman it is untrue. If my web browser infringes upon your copyright, I can remove your copyrighted work, and somebody who has never seen your code can replace it. If I infringe upon your web browser patent then I'm screwed. FOR TWENTY YEARS.
How can people say this sort of crap in public and not get called on it?
It used to be fairly standard here (although some banks ganged together). But the way it worked was that your bank charged you a 'disloyalty' fee. However, they decided (due to Internet banks who weren't charging a disloyalty fee), to charge an upfront fee "instead". However, this could have led to some people being charged twice.
So the tabloid media basically went ballistic, questions got asked in parliament, and there were noises about regulation, so most banks dropped charges sharpish (since most of the banks had just posted *MASSIVE* profits).
Oh god yes. I was really pissed off when (after a long time) I went to South Mimms Services (off the M25), and they'd replaced the nice Natwest cashpoint with "free balance enquiry" ones.
They should say in large bold letters "This ATM will charge you for usage".
Mcdonalds do the same, they have a set of machines outside their shops which charge money. Of course, they don't tell you until you've completed
This would explain why they've decided to bugger up the support for advansys SCSI cards in 2.6.6+.
I'm having to run with 2.6.5, despite an incredibly annoying usbnet bug that I'm almost certain is fixed in later versions, because the kernel people decided now would be a good time to randomly make massive changes to what has been a pretty stable driver.
It's incredibly frustrating - I don't run a Redhat kernel, I'm happy using Debian, and this just means that somebody will create a stable kernel. Why doesn't Linus just hand off 2.6 to somebody else if he enjoys working with Andrew and then we could have (if necessary) an unstable tree that's occasionally stabilised, rather than the big bang release style that's been more common
He works for Microsoft. He's not going to say "This is how we ship shoddy software". Having pride in your team is understandable.
It's awful, I read this and it's littered with petty and stupid comment spam. Surely it would have been better if instead you had commented on one his 21 rules?
Maybe if you had said 'well, in my experience x can be done if you're careful with y' it might have been better - I mean, niggling at something like this is just stupid and petty. This isn't an article on slashdot, it's a guy's personal blog.
A lot of people are busy attacking the portability creed - well, with open source it's different. With commercial software, if it breaks on a codepath that's not been tested on a different OS then that's a problem. If a company states "we support x, y and z", then adding a new platform means that they have to test on that platform, and there might well be a LOT of platforms. That's expensive. In open source software, the APIs tend to be very well specced, and people tend not to abuse them quite so much (and if they do it gets noticed generally by whomever sorts out the porting. In the commercial world it is very different).
Some of these Microsoft blogs are really interesting and well written. You have to accept that the people there have pride in where they work and think that the software they ship is good. If you disagree with an idea he's written then post a sensible response to that, but simply niggling at the fact that he likes the company he works at and he's happy with the work that he's done is just so incredibly petty it's untrue when you could be making a useful point instead of reducing the signal to noise ratio.
And then your apps spend 180 seconds doing a full gc (note: an 8Gig process on a sun box) - because full gcs don't want to use more than one processor.
How do you mean added documentation of methods with code completion? Do you mean in a similar way to eclipse (when you're browsing the list of methods it shows you a snippet from the javadoc?)
Java (generally) uses mark and sweep Garbage Collection, and not reference counting. The only case when the C garbage collector will fail is when you actually try to HIDE a pointer - an example is if you XOR pointers to try and hide the real contents of them (either for efficiency, or to prevent people messing with your data structures)
Some Java implementations, such as GCJ (amongst others), use a conservative garbage collector for the stack, which can actually assume that memory is in use when it isn't, which is the much more likely failure mode of C garbage collection.
The RIAA are never ever ever ever ever going to release unprotected songs. I know you want mp3s, but it isn't going to happen, Windows users will use itunes, or wma, and then put on CD or whatever. The only big thing I think they should probably do would be to use a lossless format like FLAC instead of something lossless, but they will never ever ever unprotect it.
Actually, I'd wager Java inlines more code. C++ won't inline code across functional boundaries - if you compile x.cc and y.cc then it won't inline a call in x.cc to y.cc (you get the basic picture).
I briefly remember reading about Java runtimes doing 'dangerous' optimisations and then rejitting bits that change. A fairly hairy idea, but potentially capable of some impressive improvements.
Finally, there is immense amounts of type information in Java bytecode, as has been shown when people reconstruct source from it.
Each method call (which has to be declared in the class file), says in it's signature what it returns, and the verifier relies upon this type information in the bytecode to determine what values things are. Local variables aren't really preserved as such, but you can check the type of pretty much everything.
Not (totally) true. Some values might be read from a disk file, and then kept around. A jitter could determine that this value was constant after being read in and generate code that completely ignored the branch in the first place.
But yes, compilers/linkers could do with some improvements to eliminate a large number of cases that they do worse than virtual machines
But even so, this information might not be useful.
For example, GCC compiles per file. It doesn't compile the project as a whole, so it can't perform cross-module optimisations.
Another example, how do you efficiently optimise a library statically? Not only that, but the behaviour of the application might depend upon, for example, a read-in piece of text (to determine, for example, if it logged or not). A sophisticated JIT can then generate more optimised code than a C++ compiler over time.
There are loads of cases where a JIT can outperform a static compiler. That's not to say that static compilers don't have a large number of strengths, or can't be modified to overcome a large number of these weaknesses (whole program compilation is already pretty much there for gcj, adding it to the gcc in total might not be that difficult, likewise a runtime profiler could rely on static hints for places that might be good to optimise, akin to dynamo). But at the moment, JITs don't necessarily lose out.
For example, if you have a virtual method which is never used as a virtual method. C++ will have to (to be statically safe) generate a virtual method call. Java can avoid that. Hell, Java could inline it. Java can avoid calls to synchronisation if it proves it's impossible. It can delay initialisation if nothing loaded makes use of it. As well as this, in general the JITTer has whole program knowledge whereas your average C++ program consists of a large number of independant files that are linked together.
Here's an interesting link for you: http://www.arstechnica.com/reviews/1q00/dyna mo/dyn amo-1.html
(I hate HTML, so you'll have to copy and paste). That's a bit about a project at HP to do dynamic binary optimisation at runtime. This means they can achieve similar things to Java speedwise.
This CPU bound simulation sounds fascinating. I'd love to see it - Java might not always be quite as fast as C/C++, but to be so poor screams misuse of Java (or possibly a case where there is a large amount of boxing going on which you can avoid in C).
Source code would be nice if you could provide it, or the assignment itself if you can't.
That's a nice benefit of Java - one binary, every platform.
But the REALLY nice bits about Java are 1) Array bounds checking (no stupid screw-ups like trashing random bits of data through bad array accesses) 2) Garbage collection (no more pain trying to figure out where to deallocate objects in long running systems. No more defensive copying of strings, etc) 3) A massive class library with ui stuff, sound, xml, etc, all in a fairly consistent form? 4) Some fantastic IDEs (go visit eclipse.org)
Go play with gcj at some stage - a native code Java compiler. It compiles Java into native code using GCC as a backend.
Now Java isn't perfect - C# seems to have some nice additions (a lot of people like the idea of delegates, which are basically method pointers), but Java has a fair amount of support and has a fairly nice API to use.
Why would KDE be significantly slower? People aren't talking about doing a Swing here and rewriting GTK in a low level language, they're talking about writing the overall logic of the application in higher level languages.
How often have you written a linked list in C, how often have you done a hashmap. Java (and I imagine.NET) has both of these. They can be tuned and optimised. You can rely on garbage collection and array index checking to eliminate stupid mechanical bugs. And when you need speed, you can use C. But 90% of your application will not need to be written in C, and thus can be implemented in a much safer language.
I imagine it would make less difference to KDE or Gnome than you think to write applications in Java or C#
I think that the reason this is coming up now is BECAUSE of all the threats of forks. I think these people want to make everything else seem like a complete fork.
So eventually, surely you end up with the same problem?
You make buttons first class - if I want a special button, I still have to perform a large number of draw calls.
Windows, for example, has menus built in (it's a sort of core graphics primitive). If you want to have pretty icons next to your menus, you basically end up drawing them yourself. Same with pretty icons in lots of places unfortunately... Now, even if you added an enhanced menu item class, you end up with a configuration issue - you have to make sure that everybody shares plugins. I can't see how this is solved.
At the end of the day, you might be able to rely on a core set of functionality, but evolving the look and feel to me sounds tough. And any time that you want complex widgets that don't really have an analog on the server, it seems that you will either have to load a plugin into the server (would this have full access to your hardware at this stage?) or just end up drawing on canvases anyway.
Of course, I could be wrong. What would be nice would be the ability to implement widgets in a SAFE language (sort of like Java, but Java has various problems - you can't be sure that classes you load won't suck up ridiculous amounts of memory or just burn processor).
Just random ranting. I'm still kinda curious on how this turns out.
Perhaps it is improved?
If Microsoft are seen as a fantastic place to work by gay, bisexual, and transgendered employees, then that might be an advantage over short sighted competitors. If those competitors were forced by this law into being just as nice, then it would hurt Microsoft. Maybe.
This is assuming that Microsoft's support for gay and transgendered employees has comparatively little cost.
Copyright is copyright. The phrase "Intellectual Property Rights" covers them from an economic perspective, where property rights can be granted to things such as clean air (thus, if you pollute my air, as it is my property you must pay), amongst other things.
property rights are very distinct from property, they can be used to correct market inefficiencies by adjusting the market
Heh, patents4innovation is as retarded as Lord Sainsbury.
"The maximum term for patent protection is 20 years. By contrast copyright lasts much longer, for 50 years after the death of the author. Curiously, the OSS lobby has not voiced any concern about the much longer term for copyright even though copyright is the protection mechanism favoured by the OSS lobby. If 50+ years is not too long, why is 20 years maximum too long?"
This is such a bloody irritating strawman it is untrue. If my web browser infringes upon your copyright, I can remove your copyrighted work, and somebody who has never seen your code can replace it. If I infringe upon your web browser patent then I'm screwed. FOR TWENTY YEARS.
How can people say this sort of crap in public and not get called on it?
you really need to think outside the box
:- funny(X), libertarian(X).
funny(treyparker).
libertarian(treyparker).
funny_libertarian(X)
Then you can just ask funny_libertarian(treyparker)
It used to be fairly standard here (although some banks ganged together). But the way it worked was that your bank charged you a 'disloyalty' fee. However, they decided (due to Internet banks who weren't charging a disloyalty fee), to charge an upfront fee "instead". However, this could have led to some people being charged twice.
So the tabloid media basically went ballistic, questions got asked in parliament, and there were noises about regulation, so most banks dropped charges sharpish (since most of the banks had just posted *MASSIVE* profits).
Oh god yes. I was really pissed off when (after a long time) I went to South Mimms Services (off the M25), and they'd replaced the nice Natwest cashpoint with "free balance enquiry" ones.
They should say in large bold letters "This ATM will charge you for usage".
Mcdonalds do the same, they have a set of machines outside their shops which charge money. Of course, they don't tell you until you've completed
This would explain why they've decided to bugger up the support for advansys SCSI cards in 2.6.6+.
I'm having to run with 2.6.5, despite an incredibly annoying usbnet bug that I'm almost certain is fixed in later versions, because the kernel people decided now would be a good time to randomly make massive changes to what has been a pretty stable driver.
It's incredibly frustrating - I don't run a Redhat kernel, I'm happy using Debian, and this just means that somebody will create a stable kernel. Why doesn't Linus just hand off 2.6 to somebody else if he enjoys working with Andrew and then we could have (if necessary) an unstable tree that's occasionally stabilised, rather than the big bang release style that's been more common
He works for Microsoft. He's not going to say "This is how we ship shoddy software". Having pride in your team is understandable.
It's awful, I read this and it's littered with petty and stupid comment spam. Surely it would have been better if instead you had commented on one his 21 rules?
Maybe if you had said 'well, in my experience x can be done if you're careful with y' it might have been better - I mean, niggling at something like this is just stupid and petty. This isn't an article on slashdot, it's a guy's personal blog.
A lot of people are busy attacking the portability creed - well, with open source it's different. With commercial software, if it breaks on a codepath that's not been tested on a different OS then that's a problem. If a company states "we support x, y and z", then adding a new platform means that they have to test on that platform, and there might well be a LOT of platforms. That's expensive. In open source software, the APIs tend to be very well specced, and people tend not to abuse them quite so much (and if they do it gets noticed generally by whomever sorts out the porting. In the commercial world it is very different).
Some of these Microsoft blogs are really interesting and well written. You have to accept that the people there have pride in where they work and think that the software they ship is good. If you disagree with an idea he's written then post a sensible response to that, but simply niggling at the fact that he likes the company he works at and he's happy with the work that he's done is just so incredibly petty it's untrue when you could be making a useful point instead of reducing the signal to noise ratio.
And then your apps spend 180 seconds doing a full gc (note: an 8Gig process on a sun box) - because full gcs don't want to use more than one processor.
How do you mean added documentation of methods with code completion? Do you mean in a similar way to eclipse (when you're browsing the list of methods it shows you a snippet from the javadoc?)
Hrm, whatever they're using to host the file doesn't seem to like me...
Not only that, but it looks Windows only (not using the *actual* scumm engine, but a free thing that's similarish)
Java (generally) uses mark and sweep Garbage Collection, and not reference counting. The only case when the C garbage collector will fail is when you actually try to HIDE a pointer - an example is if you XOR pointers to try and hide the real contents of them (either for efficiency, or to prevent people messing with your data structures)
Some Java implementations, such as GCJ (amongst others), use a conservative garbage collector for the stack, which can actually assume that memory is in use when it isn't, which is the much more likely failure mode of C garbage collection.
The RIAA are never ever ever ever ever going to release unprotected songs. I know you want mp3s, but it isn't going to happen, Windows users will use itunes, or wma, and then put on CD or whatever. The only big thing I think they should probably do would be to use a lossless format like FLAC instead of something lossless, but they will never ever ever unprotect it.
Except they don't distribute it because they can't distribute it unless they
a) uninstall it if you don't have any Java applications installed
b) stop distributing any other JVM (including gcj)
Which sounds like a fairly sane reason why NOT to if you ask me.
You kid, but there is actually a Java VM in Java. Google for JikesRVM.
There's still (some) latency though upon initial load. In those cases .NET or Java might have some problems.
How is it not managed? You can't trash memory by overwriting bounds, you can't crash the entire app by dereferencing null....
(excluding if you link it with C++, but then that can bite VMs in the arse as well)
Actually, I'd wager Java inlines more code. C++ won't inline code across functional boundaries - if you compile x.cc and y.cc then it won't inline a call in x.cc to y.cc (you get the basic picture).
I briefly remember reading about Java runtimes doing 'dangerous' optimisations and then rejitting bits that change. A fairly hairy idea, but potentially capable of some impressive improvements.
Finally, there is immense amounts of type information in Java bytecode, as has been shown when people reconstruct source from it.
Each method call (which has to be declared in the class file), says in it's signature what it returns, and the verifier relies upon this type information in the bytecode to determine what values things are. Local variables aren't really preserved as such, but you can check the type of pretty much everything.
Not (totally) true. Some values might be read from a disk file, and then kept around. A jitter could determine that this value was constant after being read in and generate code that completely ignored the branch in the first place.
But yes, compilers/linkers could do with some improvements to eliminate a large number of cases that they do worse than virtual machines
But even so, this information might not be useful.
For example, GCC compiles per file. It doesn't compile the project as a whole, so it can't perform cross-module optimisations.
Another example, how do you efficiently optimise a library statically? Not only that, but the behaviour of the application might depend upon, for example, a read-in piece of text (to determine, for example, if it logged or not). A sophisticated JIT can then generate more optimised code than a C++ compiler over time.
There are loads of cases where a JIT can outperform a static compiler. That's not to say that static compilers don't have a large number of strengths, or can't be modified to overcome a large number of these weaknesses (whole program compilation is already pretty much there for gcj, adding it to the gcc in total might not be that difficult, likewise a runtime profiler could rely on static hints for places that might be good to optimise, akin to dynamo). But at the moment, JITs don't necessarily lose out.
There are some things you cannot know statically.
a mo/dyn amo-1.html
For example, if you have a virtual method which is never used as a virtual method. C++ will have to (to be statically safe) generate a virtual method call. Java can avoid that. Hell, Java could inline it. Java can avoid calls to synchronisation if it proves it's impossible. It can delay initialisation if nothing loaded makes use of it. As well as this, in general the JITTer has whole program knowledge whereas your average C++ program consists of a large number of independant files that are linked together.
Here's an interesting link for you:
http://www.arstechnica.com/reviews/1q00/dyn
(I hate HTML, so you'll have to copy and paste). That's a bit about a project at HP to do dynamic binary optimisation at runtime. This means they can achieve similar things to Java speedwise.
This CPU bound simulation sounds fascinating. I'd love to see it - Java might not always be quite as fast as C/C++, but to be so poor screams misuse of Java (or possibly a case where there is a large amount of boxing going on which you can avoid in C).
Source code would be nice if you could provide it, or the assignment itself if you can't.
That's a nice benefit of Java - one binary, every platform.
But the REALLY nice bits about Java are
1) Array bounds checking (no stupid screw-ups like trashing random bits of data through bad array accesses)
2) Garbage collection (no more pain trying to figure out where to deallocate objects in long running systems. No more defensive copying of strings, etc)
3) A massive class library with ui stuff, sound, xml, etc, all in a fairly consistent form?
4) Some fantastic IDEs (go visit eclipse.org)
Go play with gcj at some stage - a native code Java compiler. It compiles Java into native code using GCC as a backend.
Now Java isn't perfect - C# seems to have some nice additions (a lot of people like the idea of delegates, which are basically method pointers), but Java has a fair amount of support and has a fairly nice API to use.
Huh?
.NET) has both of these. They can be tuned and optimised. You can rely on garbage collection and array index checking to eliminate stupid mechanical bugs. And when you need speed, you can use C. But 90% of your application will not need to be written in C, and thus can be implemented in a much safer language.
Why would KDE be significantly slower? People aren't talking about doing a Swing here and rewriting GTK in a low level language, they're talking about writing the overall logic of the application in higher level languages.
How often have you written a linked list in C, how often have you done a hashmap. Java (and I imagine
I imagine it would make less difference to KDE or Gnome than you think to write applications in Java or C#
I think that the reason this is coming up now is BECAUSE of all the threats of forks. I think these people want to make everything else seem like a complete fork.
So eventually, surely you end up with the same problem?
You make buttons first class - if I want a special button, I still have to perform a large number of draw calls.
Windows, for example, has menus built in (it's a sort of core graphics primitive). If you want to have pretty icons next to your menus, you basically end up drawing them yourself. Same with pretty icons in lots of places unfortunately... Now, even if you added an enhanced menu item class, you end up with a configuration issue - you have to make sure that everybody shares plugins. I can't see how this is solved.
At the end of the day, you might be able to rely on a core set of functionality, but evolving the look and feel to me sounds tough. And any time that you want complex widgets that don't really have an analog on the server, it seems that you will either have to load a plugin into the server (would this have full access to your hardware at this stage?) or just end up drawing on canvases anyway.
Of course, I could be wrong. What would be nice would be the ability to implement widgets in a SAFE language (sort of like Java, but Java has various problems - you can't be sure that classes you load won't suck up ridiculous amounts of memory or just burn processor).
Just random ranting. I'm still kinda curious on how this turns out.