I have done a bit of hardware programming though I am no expert, and from what I know the only thing the driver will ever wait for is a full pipeline to empty. Modern GL/D3D implementations batch commands up into arbitrary sized buffers which are then DMAd to the hardware and processed internally.... this includes glSwapBuffers() commands.... calling glFlush or whatever the D3D equivalent is will cause the system to wait for the pipeline to empty but in any modern game so much time is spent actually calculating what commands to send that the overhead of synchronising with the card is quite low.
A few other things: a spinlock is used in SMP kernels to synchronise, not to wait on hardware. I guess it's possible drivers will hang around reading a register over and over when waiting for a flush, I remember doing that sort of thing back in the Sound Blaster days, but it's equally likely that the video card will deliver an interrupt to the CPU when it needs more data.
Also the fact that a simple rotate-the-cube type app hits 100% cpu time is more to do with the fact that most such hello world programs don't do framerate throttling so they are going as fast as they possibly can, and end up with ridiculous framerates. 60 or 500 makes no difference for such an app, but it's easier than timing each frame and having some kind of adaptive throttle.
J2ME apps aren't portable because every implementation has its own unique combination of bugs. The many vendor-specific APIs don't help, but the shoddy quality of the phones themselves are the root cause of the fragmentation.
Unfortunately the fact that Mozilla trademarks things up the wazoo did not stop Debian from forking XULRunner to make it more "UNIXy". Ultimately trademarks must be supported with lawsuits if they are to be effective and unsurprisingly there isn't much appetite for suing open source projects that badly fork a codebase.
It isn't good for Linux, as very few ISVs/IHVs are interested in targetting the 3rd place.
At least this has been historically true. These days it seems companies either target Windows only, or they do Windows and Mac/Linux, which get lumped in together. Whether this trend will continue, I do not know.
Attacking and defending DRM is like the martial arts. As a defender, you might win, or you might end up on your back.
In most cases, there are only a few defenders and many attackers - so it's like being mobbed. You are unlikely to win such a match.
But losing is not guaranteed. Can a Ninja Master fight off ten students at once? Yes, because they are good enough at what they do that it's possible. This is what has happened with Windows Media DRM - a lot of very smart computer programmers have built a system that whilst not undefeatable is so hard to defeat that so far nobody has managed to do it for any length of time. The secret weapon they have is "renewability"... the system is designed with the understanding that it will be attacked and broken.... when a breach occurs the software is updated to fix it and all the media is re-encrypted automatically by the DRM servers. So the older, vulnerable players can no longer play new content, only old content. Over time therefore the breach is self healing.
WinAmp cannot strip DRM. Soundcard loops are disabled by the driver when playing back secure audio. Virtual soundcards require drivers that are not signed.
The only way to strip Windows Media DRM at present is to use the analog hole with a separate recording device.
It is the government's grant of copyright which makes the bits effectively finite, NOT DRM.
Yes but as the RIAA discovered actually using the courts of law to enforce copyright is a losing proposition. Too many violators and court time is too expensive. So DRM makes sense for copyright owners because it cuts the number of violators in a cost effective fashion.
You cannot tell someone a secret without allowing them to know it.
Obviously, I can circumvent DRM by simply humming the tune to myself. Copyright and DRM are not absolutes. You can "violate" copyright to a certain extent under fair use rights. You can evade DRM by using the analog hole or your memory.
A failed market is one that is so inefficient it's no longer doing what it's supposed to do. Copyright and DRM are nasty hacks around the limitations of the market, and they improve its efficiency enough that people can be full time musicians/authors/movie-directors/game-developers/ whatever. They don't have to give it 100% efficiency for it to be worthwhile.
The so-called "hackers" who want to eliminate DRM for philosophical reasons would do better to engage in some economic R&D. If there was something like the market but which worked in the presence of infinite supply, nobody would care about DRM. It wouldn't be worth the (considerable) cost, effort and risk. But so far nobody figured out a better way to pay for content creation than a hacked-up market.
"Failed market" is an economic term. Informally it means a market where the usual workings have broken down for some reason so it's no longer operating efficiently.
For instance operating systems are a failed market because network effects make it economically unviable to break the Windows monopoly.
In the absence of copyright (and a way to practically enforce it - DRM), creative works would be a failed market because supply is infinite, therefore pushing prices down to zero. The creator of the creative work gets nothing in return for production of that good so, the market has failed.
Failed markets are very common. A market is quite a fragile thing, which is why we have lots of regulation designed to protect it and bracket it (like anti-trust law). I would say many of the more stupid errors of the 20th century were due to inappropriate application of a market, which then failed.... the UK rail privatisation is a good example of that.
Failed markets aren't necessarily unprofitable. In the case of failed DRM then the 'failed market' becomes unprofitable in the classical sense because nobody makes any money. In the case of operating systems it's obviously very profitable for the dominant monopoly.
unDRM appears (from a quick Googling) to be a Visual Basic script that automates usage of drmdbg and related tools. These exploited a simple oversight in one of the DRM DLLs, which Microsoft rapidly corrected. Media that was encrypted after this update was pushed out is no longer vulnerable. If it worked for you, possibly it was old media that was never "renewed".
Cellulosic ethanol (as opposed to corn/sugar based ethanol as presently used) does indeed seem to work out better when you run the numbers. However the technology to produce this does not exist on an industrial scale yet. The technologies involved are completely different, relying on quite advanced and expensive enzymes. The cost of these enzymes is certainly coming down but right now cellulose based ethanol is in the same box as solar/wind - the technology exists but it hasn't reached mass economic viability.
The other factor to consider is that you can only grow switchgrass (or any crop) "again and again" if you heavily fertilise the land. Fertilisers are made from, amongst other things, natural gas, oil and phosphate all of which are depleting rapidly.
Modern flywheels have greater energy densities than batteries, when properly designed. I can't really imagine cars powered by batteries given our current level of technolgy, barring some huge theoretical leaps. Flywheels I can see.
We don't import coal like oil, so using coal actually helps our economy.
American coal is not clean-burning enough (low in sulfur) to use in industrial power generation, as far as I'm aware.
solar concentrators, tidal, wind, or other low eviroment impact systems
Wind isn't really low impact. We just think it is because we do it on such a small scale. If we got significant quanities of power from wind we'd actually slow down the wind sufficiently to fuck up the climate even more than we currently do. Every time you use windmills to harness the wind you are effectively sucking energy directly out of the climate.
Hmm, well they may perform well on your computer, unfortunately every Java based IDE I have ever used was slow even on very fast corporate machines. On my old 256mb RAM/1.2ghz chip they are all unusable. In the end I always went back to emacs because it beat waiting for 10 seconds every time I invoked a command whilst the machine thrashed around.
Any language in which "Hello World" takes more than quadruple the storage space of the raw ASCII string has got serious performance problems in my books...
What does a photo management application do if not spend the vast majority of their time waiting for input or shifting memory around?
Managed code has always been pushed by Sun and more recently Microsoft as The Way to develop all new applications, not just some. Do Sun tell you to write new client side applications in C++? Er, no. They say use Java. And everybody ignores them because it has been learned the hard way that Java has atrocious client side performance and is completely unsuitable for that. But this is hardly a case of poor workmanship - no matter how good a programmer you are, Java client side apps will always suck, it is inherant to the design of the platform.
With the trend towards VM's and virtualization, that "hypothetical" computer comes ever closer.
There is no such trend. Many new apps where performance is critical - such as desktop applications - are still being written in C++. Microsoft now routinely encourage people to "ngen" their code - a fancy name for compiling it before it's run. Mono has a special AOT mode which produces better code "ahead of time".
This is because people are waking up from their dream-like state in which just in time compiling virtual machines make sense: there are far too many useful optimisations you can do a program that are too slow to do in real time. Even if there weren't, it makes zero sense to do extra work in a time critical context (when the user is waiting for the program to respond) if you don't have to. Given that we exist largely in an architecture monopoly even on the server side these days targetting a non-existant (hence virtual) machine is folly.
I suspect you are getting confused with the fact that VMware and such are fashionable these days. These virtual machines have nothing in common with programming language VMs.
The speed of code written in computer language is based on the number of CPU cycles required to carry it out.
And also resource usage. One of the reasons Java apps tend to drag on consumer level systems (ie not big servers) is because Java is so profligate with memory consumption. Who cares how well optimised your code is when a single page fault that goes to swap can wipe out the benefits?
Well, you certainly got a lot of criticism, but I have to say I suspect that's because it's right on the mark;)
There are a lot of bad managers in the world who use "but they have a degree!" to avoid the fact that they can't accurately assess their workers abilities - usually because they aren't trained in that field at all. It's another form of "nobody ever got fired for buying IBM" - if you can't assess the product, assess the name.
And for your information, I teach my students quite well, and find TAing to be a significant training excerise towards one day teaching my own students.
You think you teach your students quite well, but do you really know that? How much teacher training have you been put through? How much independent assessment of your teaching ability is there? The answer for both questions at most universities is "none" and quite frankly it often shows.
I'm not saying you are a bad teacher - I don't know you at all. But a lot of the teachers I had at university level were extremely bad at their job (this was a very well respected university) and clearly either didn't know it or didn't care. In the UK at least the only formal assessment of universities by an external authority is the Research Assessment Exercise which is exactly what it says. Teaching is not assessed or accountable at all, and the results are predictable.
Sounds like your degree was much better than mine. I was in the same boat as you re: A Levels - I got 3 Bs and a C, and it was a very tough time. I left very cynical and disillusioned - thanks partly to the feeling that I'd been forced to study subjects I found boring and irrelevant merely to jump through hoops and get to university.
At university I thought things would be a lot better. Unfortunately it got worse. All the stereotypes about academics I'd blown off as just that - stereotypes - turned out to be true. They were disinterested, taught largely irrelevant material and redefined "fundamentals" to mean whatever they happened to be researching at the time. Given that 100% of the class (this was at Durham so a pretty good university) have left to find jobs, I'd define "fundamentals" to be how to write quality software. Their idea of what was important to learn was things like the deatils of clausal logic (3 times).
It was, basically, a disaster for all involved. The whole education system from 16+ is based on a very poorly thought out set of assumptions around education IMHO and badly needs to be redesigned from scratch. Right now the system focusses on entirely the wrong things and the constant debates over "dumbing down" and grade inflation are one obvious symptom.
Trade secrets are just that - secrets - and have no protection under law. You find them out, good for you.
Reverse engineering isn't illegal either and that cannot be changed by a EULA. As far as I'm aware a protocol is not an "invention" per se, so it cannot be patented either. Though with the modern state of the US patent office, who knows....
It matters because not every advertiser on AdWords is actually selling something. So, cost per action ads even if fully deployed won't solve the problem for everybody.
Are you sure about that?
I have done a bit of hardware programming though I am no expert, and from what I know the only thing the driver will ever wait for is a full pipeline to empty. Modern GL/D3D implementations batch commands up into arbitrary sized buffers which are then DMAd to the hardware and processed internally .... this includes glSwapBuffers() commands .... calling glFlush or whatever the D3D equivalent is will cause the system to wait for the pipeline to empty but in any modern game so much time is spent actually calculating what commands to send that the overhead of synchronising with the card is quite low.
A few other things: a spinlock is used in SMP kernels to synchronise, not to wait on hardware. I guess it's possible drivers will hang around reading a register over and over when waiting for a flush, I remember doing that sort of thing back in the Sound Blaster days, but it's equally likely that the video card will deliver an interrupt to the CPU when it needs more data.
Also the fact that a simple rotate-the-cube type app hits 100% cpu time is more to do with the fact that most such hello world programs don't do framerate throttling so they are going as fast as they possibly can, and end up with ridiculous framerates. 60 or 500 makes no difference for such an app, but it's easier than timing each frame and having some kind of adaptive throttle.
J2ME apps aren't portable because every implementation has its own unique combination of bugs. The many vendor-specific APIs don't help, but the shoddy quality of the phones themselves are the root cause of the fragmentation.
Unfortunately the fact that Mozilla trademarks things up the wazoo did not stop Debian from forking XULRunner to make it more "UNIXy". Ultimately trademarks must be supported with lawsuits if they are to be effective and unsurprisingly there isn't much appetite for suing open source projects that badly fork a codebase.
The OLPC laptops have exactly that kind of screen.
Do you work in marketing by any chance?
It isn't good for Linux, as very few ISVs/IHVs are interested in targetting the 3rd place.
At least this has been historically true. These days it seems companies either target Windows only, or they do Windows and Mac/Linux, which get lumped in together. Whether this trend will continue, I do not know.
Attacking and defending DRM is like the martial arts. As a defender, you might win, or you might end up on your back.
In most cases, there are only a few defenders and many attackers - so it's like being mobbed. You are unlikely to win such a match.
But losing is not guaranteed. Can a Ninja Master fight off ten students at once? Yes, because they are good enough at what they do that it's possible. This is what has happened with Windows Media DRM - a lot of very smart computer programmers have built a system that whilst not undefeatable is so hard to defeat that so far nobody has managed to do it for any length of time. The secret weapon they have is "renewability" ... the system is designed with the understanding that it will be attacked and broken .... when a breach occurs the software is updated to fix it and all the media is re-encrypted automatically by the DRM servers. So the older, vulnerable players can no longer play new content, only old content. Over time therefore the breach is self healing.
That doesn't work.
WinAmp cannot strip DRM. Soundcard loops are disabled by the driver when playing back secure audio. Virtual soundcards require drivers that are not signed.
The only way to strip Windows Media DRM at present is to use the analog hole with a separate recording device.
Yes but as the RIAA discovered actually using the courts of law to enforce copyright is a losing proposition. Too many violators and court time is too expensive. So DRM makes sense for copyright owners because it cuts the number of violators in a cost effective fashion.
Obviously, I can circumvent DRM by simply humming the tune to myself. Copyright and DRM are not absolutes. You can "violate" copyright to a certain extent under fair use rights. You can evade DRM by using the analog hole or your memory.
A failed market is one that is so inefficient it's no longer doing what it's supposed to do. Copyright and DRM are nasty hacks around the limitations of the market, and they improve its efficiency enough that people can be full time musicians/authors/movie-directors/game-developers/ whatever. They don't have to give it 100% efficiency for it to be worthwhile.
The so-called "hackers" who want to eliminate DRM for philosophical reasons would do better to engage in some economic R&D. If there was something like the market but which worked in the presence of infinite supply, nobody would care about DRM. It wouldn't be worth the (considerable) cost, effort and risk. But so far nobody figured out a better way to pay for content creation than a hacked-up market.
"Failed market" is an economic term. Informally it means a market where the usual workings have broken down for some reason so it's no longer operating efficiently.
For instance operating systems are a failed market because network effects make it economically unviable to break the Windows monopoly.
In the absence of copyright (and a way to practically enforce it - DRM), creative works would be a failed market because supply is infinite, therefore pushing prices down to zero. The creator of the creative work gets nothing in return for production of that good so, the market has failed.
Failed markets are very common. A market is quite a fragile thing, which is why we have lots of regulation designed to protect it and bracket it (like anti-trust law). I would say many of the more stupid errors of the 20th century were due to inappropriate application of a market, which then failed .... the UK rail privatisation is a good example of that.
Failed markets aren't necessarily unprofitable. In the case of failed DRM then the 'failed market' becomes unprofitable in the classical sense because nobody makes any money. In the case of operating systems it's obviously very profitable for the dominant monopoly.
unDRM appears (from a quick Googling) to be a Visual Basic script that automates usage of drmdbg and related tools. These exploited a simple oversight in one of the DRM DLLs, which Microsoft rapidly corrected. Media that was encrypted after this update was pushed out is no longer vulnerable. If it worked for you, possibly it was old media that was never "renewed".
No, the point of DRM is to prevent supply from being infinite, because a market in which there is infinite supply is a failed market.
The fact that Apple and Microsoft can't resist abusing it to promote sales of iPods/Windows is unrelated and not inherant to DRM.
Cellulosic ethanol (as opposed to corn/sugar based ethanol as presently used) does indeed seem to work out better when you run the numbers. However the technology to produce this does not exist on an industrial scale yet. The technologies involved are completely different, relying on quite advanced and expensive enzymes. The cost of these enzymes is certainly coming down but right now cellulose based ethanol is in the same box as solar/wind - the technology exists but it hasn't reached mass economic viability.
The other factor to consider is that you can only grow switchgrass (or any crop) "again and again" if you heavily fertilise the land. Fertilisers are made from, amongst other things, natural gas, oil and phosphate all of which are depleting rapidly.
Modern flywheels have greater energy densities than batteries, when properly designed. I can't really imagine cars powered by batteries given our current level of technolgy, barring some huge theoretical leaps. Flywheels I can see.
American coal is not clean-burning enough (low in sulfur) to use in industrial power generation, as far as I'm aware.
Wind isn't really low impact. We just think it is because we do it on such a small scale. If we got significant quanities of power from wind we'd actually slow down the wind sufficiently to fuck up the climate even more than we currently do. Every time you use windmills to harness the wind you are effectively sucking energy directly out of the climate.
Hmm, well they may perform well on your computer, unfortunately every Java based IDE I have ever used was slow even on very fast corporate machines. On my old 256mb RAM/1.2ghz chip they are all unusable. In the end I always went back to emacs because it beat waiting for 10 seconds every time I invoked a command whilst the machine thrashed around.
Any language in which "Hello World" takes more than quadruple the storage space of the raw ASCII string has got serious performance problems in my books ...
A fine point, if that had been what he said. It wasn't.
What does a photo management application do if not spend the vast majority of their time waiting for input or shifting memory around?
Managed code has always been pushed by Sun and more recently Microsoft as The Way to develop all new applications, not just some. Do Sun tell you to write new client side applications in C++? Er, no. They say use Java. And everybody ignores them because it has been learned the hard way that Java has atrocious client side performance and is completely unsuitable for that. But this is hardly a case of poor workmanship - no matter how good a programmer you are, Java client side apps will always suck, it is inherant to the design of the platform.
There is no such trend. Many new apps where performance is critical - such as desktop applications - are still being written in C++. Microsoft now routinely encourage people to "ngen" their code - a fancy name for compiling it before it's run. Mono has a special AOT mode which produces better code "ahead of time".
This is because people are waking up from their dream-like state in which just in time compiling virtual machines make sense: there are far too many useful optimisations you can do a program that are too slow to do in real time. Even if there weren't, it makes zero sense to do extra work in a time critical context (when the user is waiting for the program to respond) if you don't have to. Given that we exist largely in an architecture monopoly even on the server side these days targetting a non-existant (hence virtual) machine is folly.
I suspect you are getting confused with the fact that VMware and such are fashionable these days. These virtual machines have nothing in common with programming language VMs.
And also resource usage. One of the reasons Java apps tend to drag on consumer level systems (ie not big servers) is because Java is so profligate with memory consumption. Who cares how well optimised your code is when a single page fault that goes to swap can wipe out the benefits?
Well, you certainly got a lot of criticism, but I have to say I suspect that's because it's right on the mark ;)
There are a lot of bad managers in the world who use "but they have a degree!" to avoid the fact that they can't accurately assess their workers abilities - usually because they aren't trained in that field at all. It's another form of "nobody ever got fired for buying IBM" - if you can't assess the product, assess the name.
You think you teach your students quite well, but do you really know that? How much teacher training have you been put through? How much independent assessment of your teaching ability is there? The answer for both questions at most universities is "none" and quite frankly it often shows.
I'm not saying you are a bad teacher - I don't know you at all. But a lot of the teachers I had at university level were extremely bad at their job (this was a very well respected university) and clearly either didn't know it or didn't care. In the UK at least the only formal assessment of universities by an external authority is the Research Assessment Exercise which is exactly what it says. Teaching is not assessed or accountable at all, and the results are predictable.
Sounds like your degree was much better than mine. I was in the same boat as you re: A Levels - I got 3 Bs and a C, and it was a very tough time. I left very cynical and disillusioned - thanks partly to the feeling that I'd been forced to study subjects I found boring and irrelevant merely to jump through hoops and get to university.
At university I thought things would be a lot better. Unfortunately it got worse. All the stereotypes about academics I'd blown off as just that - stereotypes - turned out to be true. They were disinterested, taught largely irrelevant material and redefined "fundamentals" to mean whatever they happened to be researching at the time. Given that 100% of the class (this was at Durham so a pretty good university) have left to find jobs, I'd define "fundamentals" to be how to write quality software. Their idea of what was important to learn was things like the deatils of clausal logic (3 times).
It was, basically, a disaster for all involved. The whole education system from 16+ is based on a very poorly thought out set of assumptions around education IMHO and badly needs to be redesigned from scratch. Right now the system focusses on entirely the wrong things and the constant debates over "dumbing down" and grade inflation are one obvious symptom.
Trade secrets are just that - secrets - and have no protection under law. You find them out, good for you.
Reverse engineering isn't illegal either and that cannot be changed by a EULA. As far as I'm aware a protocol is not an "invention" per se, so it cannot be patented either. Though with the modern state of the US patent office, who knows ....
It matters because not every advertiser on AdWords is actually selling something. So, cost per action ads even if fully deployed won't solve the problem for everybody.