If all your programmers are excellent C++ programmers then working in pure C++ is great - they'll have the understanding and dicipline to treat straight pointers, arrays, and C library functions like the landmines they are. If you assume that at least some of the team aren't overskilled ninjas, it very well may be better to do some of the work in a language where the default tool isn't a loaded foot-aimed rocket launcher.
Garbage collection and being a good C++ programmer fixes most of the issues with C++, but a higher level language adds two things:
1.) Range checking by default. You can never access item 14 in a 8 item array in Python.
2.) Less code. If 99% of your code is error free, that still leaves a bug in every 100 lines of code. If you can write 200 lines of C code in 50 lines of Python...
The different languages have different properties. You should use the right tool for the right job, and there's more than one job in a non-trivial computer program.
My general feeling is that the owner of hardware should have as much access to programable features as the developers.
For an ATM, the bank (as the owner) should have full programming ability.
ROM is ROM. The owner had full access to it's zero programmable features. On the other hand, if it *is* flashable then the owner should be able to flash it.
Pre 64bit means a pretty old machine right about now. An Athlon XP would definately be the bottleneck playing games with a Nvidia 7 series card, as would a Pentium IV from the same period.
Upon further consideration... I stand by my sarcastic comment.
Thread rehash:
dshaw858: $6.5 million? That's like two movies, everyone's downloaded two movies.
monkeydo: Most people haven't downloaded any movies.
chandon: Most people have committed copyright infringement.
shmlco: You mean like setting up an international piracy network to fund drug cartels?
chandon: no.
So anyone should be able to freely use GPL code in their XBox360 programs, knowing that their required code release is irrelevent because no user has a developer key?
Here's the trick:
With most "good DRM" systems, the system adminstrator has the keys. He's only doing in-organization distribution - so under the GPL he doesn't even need to provide source code to users.
"Bad DRM" generally looks different - X number of 3rd parties conspire to prevent you from using your own computer how you want to.
Uber-secure-linux, for example, would be implemented with a kernel option called uber-secure. When activated, the uber-secure security policy (only modules signed by uber-secure corp can be run) would apply. Anyone who could reboot the computer could disable the option and get normal Linux. If you were going extra-nuts, there would be a jumper on the motherboard that would disable/enable "insecure bootup". There's no real reason why the person in physical posession of the computer should be restricted from using it.
If I write a program that uses GNU Readline (A GPLed library), I can release the source of my program to the public domain. I can also release a binary version of my program - but to do that I must release full source code under the GPL.
Here's the trick: I can release my program under the GPL, and note at the same time that I'm releasing it into the public domain. That doesn't make GNU Readline any less GPLed, but it does mean that anyone who choses to use my code can use it as if it were public domain as long as they continue to obey the License of GNU readline (i.e. any derivitive work of my code that still uses GNU Readline must be offered under the GPL in addition to any other GPL compatible distribution terms such as public domain or the modern BSD license).
Nondisclosure agreements have nothing to do with rights. They are a contract protecting a secret. If there were no copyright laws, movie companies could implement a policy where you needed to enter into a nondisclosure agreement to buy or rent their movies. You'd need to actually sign a physical contract for each movie, probably with a witness - if this process weren't really blatant, the contracts would probably be unenforcable.
All such a contract would be able to specify would be a liability for the person signing the contract, "If you disclose a copy of this movie you will pay $10,000" or whatever. If anyone ever got a copy of the movie without signing the contract, even if it was due to someone else breaking their contract, they could distribute it all they wanted - the secret would be out.
The use of DRM capibilities for actual security isn't called DRM. It's called "security hardware" and there's nothing in the GPLv3 that would prevent you from implementing a system that relied on security hardware.
The thing that GPLv3 is trying to prevent is the distribution of proprietary software/non-free software derived from GPL code that just happens to include source code - but you can't use it because modified versions won't run on your hardware.
A constant 24 FPS with proper motion blur provides a vastly higher quality picture than when you have varying framerates from 20fps to 60fps and no motion blur.
It's not that video games aren't reasonably playable at 40fps, it's that an average frame length of 1/40th of a second with a 100% standard deviation is really horrible - and a higher end video card will give you frames of 1/60th of a second with a 25% stdev.
Most people have committed copyright infringement.
Ever copy a copyrighted work for a friend? Ever install software off someone else's CD (even a video game)? Ever sing "Happy Birthday" in public?
These are all pretty common, and not considered to be terribly heinous offenses. The fact that the penalties for these offenses ranges from fines of thousands of dollars to multi-year prison terms isn't terribly reasonable.
Now (as my sig shows), I'm not a big fan of censorship, but...
Isn't it possible that the first appropriate search results on the location when searching from China are actually information on the location itself rather than the history of the location.
In the United States when you search for "Waco, TX" the first results are information on the location rather than the massacre...
That's a great idea if you want to enable vote buying. Allowing voters to verify their votes is only interesting if they can prove how they voted so they can show their vote was miscounted, and if they can prove how they voted then they can prove they voted as instructed.
In a paper ballot system, anyone can verify that their vote was properly counted *without* being able to prove how they voted:
* Show up early and check that the ballot box is empty.
** Mark ballot correctly.
** Place in ballot box.
* Observe ballot box until the votes are counted, making sure that ballots are only added and not removed.
* Watch as the votes are tallied to verify that the tally is correct.
(If there is an observer from your political party, you can probably trust them to do the single star steps for you.)
The only thing that electronic voting gets you is faster counts. Nothing else.
The security profiles of the situations are different. In an election, any interested party needs to be able to supervise and verify the validity of the execution of the election process. With paper ballots, any obvserver can supervise and verify the process. With electronic ballots, you need to be an expert to even understand how the system can be attacked - and generally the experts are ignored by election officials.
That key is acutally fine, just as long as the people trying to crack the encryption have no reason to suspect that key as any more likely than any other. If you're generating random keys, checking for and discarding that one will *reduce* your security if the opposition knows how you generate keys (which they should).
If all your programmers are excellent C++ programmers then working in pure C++ is great - they'll have the understanding and dicipline to treat straight pointers, arrays, and C library functions like the landmines they are. If you assume that at least some of the team aren't overskilled ninjas, it very well may be better to do some of the work in a language where the default tool isn't a loaded foot-aimed rocket launcher.
Garbage collection and being a good C++ programmer fixes most of the issues with C++, but a higher level language adds two things:
1.) Range checking by default. You can never access item 14 in a 8 item array in Python.
2.) Less code. If 99% of your code is error free, that still leaves a bug in every 100 lines of code. If you can write 200 lines of C code in 50 lines of Python...
The different languages have different properties. You should use the right tool for the right job, and there's more than one job in a non-trivial computer program.
Two additional points:
1.) You don't need to replace all the python code.
2.) Use a garbage collector like http://www.hpl.hp.com/personal/Hans_Boehm/gc/ for your C++ code.
I'm pretty sure that's what I said.
For an ATM, the bank (as the owner) should have full programming ability.
ROM is ROM. The owner had full access to it's zero programmable features. On the other hand, if it *is* flashable then the owner should be able to flash it.
Pre 64bit means a pretty old machine right about now. An Athlon XP would definately be the bottleneck playing games with a Nvidia 7 series card, as would a Pentium IV from the same period.
Thread rehash:
dshaw858: $6.5 million? That's like two movies, everyone's downloaded two movies.
monkeydo: Most people haven't downloaded any movies.
chandon: Most people have committed copyright infringement.
shmlco: You mean like setting up an international piracy network to fund drug cartels?
chandon: no.
So anyone should be able to freely use GPL code in their XBox360 programs, knowing that their required code release is irrelevent because no user has a developer key?
What compiler do the BSDs use again?
Here's the trick:
With most "good DRM" systems, the system adminstrator has the keys. He's only doing in-organization distribution - so under the GPL he doesn't even need to provide source code to users.
"Bad DRM" generally looks different - X number of 3rd parties conspire to prevent you from using your own computer how you want to.
Uber-secure-linux, for example, would be implemented with a kernel option called uber-secure. When activated, the uber-secure security policy (only modules signed by uber-secure corp can be run) would apply. Anyone who could reboot the computer could disable the option and get normal Linux. If you were going extra-nuts, there would be a jumper on the motherboard that would disable/enable "insecure bootup". There's no real reason why the person in physical posession of the computer should be restricted from using it.
That won't come up with PCs. Motherboards will come with BIOSes that support a DRM mode and a "Legacy Mode", and Linux will run in Legacy Mode.
If I write a program that uses GNU Readline (A GPLed library), I can release the source of my program to the public domain. I can also release a binary version of my program - but to do that I must release full source code under the GPL.
Here's the trick: I can release my program under the GPL, and note at the same time that I'm releasing it into the public domain. That doesn't make GNU Readline any less GPLed, but it does mean that anyone who choses to use my code can use it as if it were public domain as long as they continue to obey the License of GNU readline (i.e. any derivitive work of my code that still uses GNU Readline must be offered under the GPL in addition to any other GPL compatible distribution terms such as public domain or the modern BSD license).
Nondisclosure agreements have nothing to do with rights. They are a contract protecting a secret. If there were no copyright laws, movie companies could implement a policy where you needed to enter into a nondisclosure agreement to buy or rent their movies. You'd need to actually sign a physical contract for each movie, probably with a witness - if this process weren't really blatant, the contracts would probably be unenforcable.
All such a contract would be able to specify would be a liability for the person signing the contract, "If you disclose a copy of this movie you will pay $10,000" or whatever. If anyone ever got a copy of the movie without signing the contract, even if it was due to someone else breaking their contract, they could distribute it all they wanted - the secret would be out.
The use of DRM capibilities for actual security isn't called DRM. It's called "security hardware" and there's nothing in the GPLv3 that would prevent you from implementing a system that relied on security hardware.
The thing that GPLv3 is trying to prevent is the distribution of proprietary software/non-free software derived from GPL code that just happens to include source code - but you can't use it because modified versions won't run on your hardware.
How is the source code even vaguely meaningful if you can't use it?
It's not that video games aren't reasonably playable at 40fps, it's that an average frame length of 1/40th of a second with a 100% standard deviation is really horrible - and a higher end video card will give you frames of 1/60th of a second with a 25% stdev.
Yup. I was definately making that claim. Your post is a perfect response to what I said. Absolutely.
Ever copy a copyrighted work for a friend? Ever install software off someone else's CD (even a video game)? Ever sing "Happy Birthday" in public?
These are all pretty common, and not considered to be terribly heinous offenses. The fact that the penalties for these offenses ranges from fines of thousands of dollars to multi-year prison terms isn't terribly reasonable.
bad teeth?
Isn't it possible that the first appropriate search results on the location when searching from China are actually information on the location itself rather than the history of the location.
In the United States when you search for "Waco, TX" the first results are information on the location rather than the massacre...
In a paper ballot system, anyone can verify that their vote was properly counted *without* being able to prove how they voted:
* Show up early and check that the ballot box is empty.
** Mark ballot correctly.
** Place in ballot box.
* Observe ballot box until the votes are counted, making sure that ballots are only added and not removed.
* Watch as the votes are tallied to verify that the tally is correct.
(If there is an observer from your political party, you can probably trust them to do the single star steps for you.)
The only thing that electronic voting gets you is faster counts. Nothing else.
The security profiles of the situations are different. In an election, any interested party needs to be able to supervise and verify the validity of the execution of the election process. With paper ballots, any obvserver can supervise and verify the process. With electronic ballots, you need to be an expert to even understand how the system can be attacked - and generally the experts are ignored by election officials.
http://www.onlinejournal.com/evoting/111704DeHart/ 111704dehart.html
That key is acutally fine, just as long as the people trying to crack the encryption have no reason to suspect that key as any more likely than any other. If you're generating random keys, checking for and discarding that one will *reduce* your security if the opposition knows how you generate keys (which they should).