Why does everyone (including manufacturers) suppose the only upgradeable component of a car's electronic system should be the radio? What's the harm in allowing the wireless module to be replaced with a better one in a few years?
That product is easy to mock, but detractors don't seem to realize that it's perfectly reasonable to stop the car and pull out a laptop. You might want a good place to put it.
Contracts like that ought to be illegal. And they would be, except that there are special lines in the law code (at least in New York State) that exempt computer programmers from overtime requirements.
In this country, our work-week is 40 hours. Our ancestors fought hard and made great sacrifices to win this right and pass it down to us, and I'll be damned if I'll see it steadily erode. Routine unpaid overtime is harmful not only to ourselves individually, but to the entire social contract we've managed to hammer out between capital and labor.
Respect yourself. Do not work more than 40 hours without getting the same time and a half premium someone in any other field would earn. If a project is late, that's not your fault. It's management's, and management ought to pay for the mistake.
Post-scarcity society? Not in our wildest dreams. Even Stephenson's Diamond Age was set in a society with scarcity, albeit one of a different variety, and we're not anywhere close to even that level of technology.
Do you mean a society that doesn't include economic growth? That defies human nature, and would require a society so oppressive that Stalin would look like a hippie.
As for as NASA: sure, it produces pretty pictures and produces technological spin-offs, but it also maintains our prestige in the world by employing top scientists to do top research. It continues a 400 year old tradition of discovery, and ennobles the human spirit. It's wonderful.
I am tired of people complaining about NASA's budget. It's really a bargain. A penny out of every dollar you pay in taxes goes toward it. If you've printed out a gorgeous photograph for your well, or read an article and said "hrm, that's interesting", or eaten freeze-dried food, you've more than gotten your money's worth.
However, it does need to be encryption that works over a noisy channel, with possible gaps in the datastream.
The term you're looking for is "self-synchronizing stream cipher". As the article explains, you can use a normal block cipher in CFB mode to implement such a beast.
By the way, there's no good reason to use CBC mode these days. There are modes that are either faster, more parallizable, or both.
A Vigenère cipher generates ciphertext C(N) by passing plaintext symbol P(N) through the function E(P(N), K[N mod len(K)]), where N is the symbol number of the input, K is the key, K[Q] is the Qth symbol in K, and E is a function such that E(A,B) -> A', and E(A',B) -> A. Decryption simply applies the same function to the ciphertext, yielding the original plaintext.
This description clearly applies to XOR with a random pad. What makes a one-time pad secure is that the key is always longer than the input, so attacks that depend on correlation don't work. Conversely, Vigenère is insecure because the key repeats. Used with a random "key" as long as the message, Vigenère is equivalent to XOR, and is provably and perfectly secure.
You are a dangerous fool. Never use a one-time pad more than once, even for "light" security. Doing that turns the whole thing into a Vigenère cipher and destroys all security. You might as well just XOR each byte of the message with 0x42.
Salting would help a bit here, but far more effective would be key stretching. Hash the email, then feed the hash back through the hash function a few thousand times. The extra computation doesn't have much of an impact when generating a single email identifier, because hash functions are blazing fast, and 1,000 iterations is still blazing fast. But the extra computation grievously hurts people who are using brute force to create rainbow tables, making the whole thing take thousands of times longer.
You're dead on about using thousands of hashes. The practice hurts an attacker far more than it hurts legitimate users. It's called key stretching, or key strengthening.
Ensure TSOs do not handle explosives, incendiaries, or weapons if such items are discovered during the screening process.
D. Whenever a Threat Image Projection (TIP) enabled x-ray is unable to detect 28-gauge wire at Step 10 on the Test Step Wedge, discontinue use. The STSO must immediately notify TSA management.
An airport assigned LEO (if available), STSO, or designated TSA representative clears the individual after inspecting his or her badge, credential, and Government-issued photo ID, and if flying, his or her boarding pass and Notice of LEO Flying Armed Document.
Aircraft operator flight crewmembers in uniform, with valid aircraft operator employee identification, are exempt from the Unpredictable Screening Process and restrictions involving liquids, gels, aerosols, and footwear. Aircraft operator flight crewmembers in uniform, designated as selectees, are not exempt from the requirements regarding liquids, gels, aerosols, or footwear. Any alarm of the aircraft operator flight crewmember's person or accessible property must be cleared.
On what planet is it necessary to keep facts like these secret?
If a jury were a mere finder of fact, its job could be just as easily accomplished by a judge (as in civil law nations). What a jury really is for is to judge guilt. The judge of a case under Common Law ought to just be a referee.
This is the most ill-informed comment I've ever seen.
You don't have a "direct path" to the hardware on modern computers at all. After all, you're not filling DMAed command buffers and programming memory registers, and you don't want to be: the details would drive you to madness. That's what we have drivers for.
OpenGL and Direct3D are both abstraction layers for the hardware. Neither is intrinsically more "direct", but both were certainly designed for real-time 3D rendering (although OpenGL was initially more used for CAD applications than games).
Your comment is a decade out of date. No modern Javascript engine operates the way you describe. They cache object properties such that property access is fast, and independent of property name length.
Your 3D code is slow for other reasons. As a hunch, I bet you're doing a lot of unnecessary string-to-Number conversion.
First of all, the charge of treason is obviously inappropriate. Fraud it is.
But to your other point, using a low-spec chip can certainly lead to lower reliability. What if the ersatz chip has less forgiving temperature than the real thing? What if the software running on it assumes it can respond within 50us to an external input, but because the ersatz chip is running at a lower clock speed, the response time is 100us? That could be the difference between your anti-ship-killer-missile cannon hitting the target and you surviving, or it missing and you dying.
But Joe the Web 2.0 Startup Person (who never actually got a CS degree) doesn't, and when he wants to begin creating his MugshotTome site, thinks "well, my friend mentioned this PHP thing. Maybe he can help me with it." Joe creates MugshotTome, which takes off and becomes one of the larger sites on the Internet. Now they've hired real programmers, but they're still stuck with PHP for all eternity: rewriting the system from scratch would take too long.
Bob the Web 2.0 Startup Personn wants to create his own site, say, MyCylinder. Like Joe, he's more a businessman who fancies himself a hacker than a trained developer, so he looks around and sees what's popular. "Ah, MugshotTome uses PHP. It must be good. Let me go look for a few tutorials on that." And so MyCylinder and and MugshotTome end up using PHP. Jill, Jane, and Jim all start their Web 2.0 Startup Sites using PHP for the same reason. Bob realizes that PHP is popular enough that he can get "mad hits yo" by writing a PHP tutorial article "how to make mad monies by using PHP for your Web 2.0 Startup Website". This article encourages more people to start using PHP. Then Sergio, who's worked on a few Web 2.0 Startup Sites, has a well-intentioned desire to avoid code duplication, and wants to put some common functionality in a library. So because Sergio has used PHP for his website development, it seems natural for him to write his library in PHP.
In the final stage of this disease, even Jennifer, an actual trained programmer who knows better, gets told to use PHP when she's hired for yet another Web 2.0 Startup because PHP is now the de-facto standard.
This is how PHP becomes popular. It's also how Java became popular in enterprisy applications (just imagine a bunch of CTOs all talking to each other). It's how Python became popular in bioinformatics. It's how Lisp became popular in the AI community back in the day. It's how C became popular in systems programming. It's why people are making the mind-bogglingly stupid decision to start using Flash for desktop applications.
This disease afflicts every field. Differences in hype, hosting, adoption in college classes, and random chance have a far greater impact on which language ends up being dominant than differences in the quality of the languages themselves. In this way, if the best language happens to become dominant, it's really just an accident.
Finally, I think it is pretty clear that PHP was a very poor choice for such a large framework.
I don't want to talk about PHP's technical merits. We could have an endless flamewar about those. I just want to say that PHP become a lingua franca of web development. Pretty much everyone (especially in the Bay Area echo chamber) give you the my-god-you've-just-killed-that-kitten look if you propose writing a package in PHP. PHP isn't used because it's good, but because it's popular, and has a huge developer base. You can make a career out of knowing nothing but PHP, and people do.
Which is why I've decided to never do web work again. Give me embedded programming, systems work, scientific work, game development -- anything but web work. It's socially impossible to avoid using PHP for it, and PHP is one of a very few languages that viscerally infuriates me. I'll program using it and start cursing the developers. I can't stand it.
Yes, yes, you have Java, Ruby, *.NET, and lots of other choices. And they're used by some. But they don't have anything close to PHP's ungodly-huge marketshare, at least in the small-to-medium website world.
The cost of compliance is precisely what has been leading to the downward spiral in wages.
Businesses decrease wages because they want to keep more of their revenue as profit. It's that simple. Whatever wage decreases they can get away with, they will make.
Regulation ensures that companies can't get away with these bad practices.
And yes, the rich can exploit flaws is regulation. But that's not a reason to get rid of regulation. It's a reason to fix it.
It's as if you're saying, "The roof leaks! We're getting wet because water can use holes in the roof to get in. The roof is making us wet, and we need to tear it off entirely."
Or physics. Previously, you just had to plot the pressure of a gas against its volume to get your name immortalized. Now, to make any headway, we need kilometers-long particle accelerators to make any progress.
Or literature: previously, you just had to write good, solidwork to earn a place in the canon. Now, to be notable, you have to write goddamn bullshit and, with balls of steel, call it literature in order to get noticed.
Or sports. Previously, you had to just be fit and dedicated to set records. Now, you either need to be a mutant freak or be pumped full of drugs to set records.
I suppose the exception is popular music, where mediocrity has become prized. Actually, not really: now you need to be exceptionally good-looking (and let autotune take care of your voice), rather than be exceptionally talented.
I say bullshit. You could write a book about Einstein.
Wikibooks. I'm in the inclusionist camp myself, but there's no reason highly detailed works can't be structured as wikibooks linked from Wikipedia articles.
Why does everyone (including manufacturers) suppose the only upgradeable component of a car's electronic system should be the radio? What's the harm in allowing the wireless module to be replaced with a better one in a few years?
That product is easy to mock, but detractors don't seem to realize that it's perfectly reasonable to stop the car and pull out a laptop. You might want a good place to put it.
Contracts like that ought to be illegal. And they would be, except that there are special lines in the law code (at least in New York State) that exempt computer programmers from overtime requirements.
We need a union.
In this country, our work-week is 40 hours. Our ancestors fought hard and made great sacrifices to win this right and pass it down to us, and I'll be damned if I'll see it steadily erode. Routine unpaid overtime is harmful not only to ourselves individually, but to the entire social contract we've managed to hammer out between capital and labor.
Respect yourself. Do not work more than 40 hours without getting the same time and a half premium someone in any other field would earn. If a project is late, that's not your fault. It's management's, and management ought to pay for the mistake.
What exactly are your prerequisites for a manned mission then?
Post-scarcity society? Not in our wildest dreams. Even Stephenson's Diamond Age was set in a society with scarcity, albeit one of a different variety, and we're not anywhere close to even that level of technology.
Do you mean a society that doesn't include economic growth? That defies human nature, and would require a society so oppressive that Stalin would look like a hippie.
As for as NASA: sure, it produces pretty pictures and produces technological spin-offs, but it also maintains our prestige in the world by employing top scientists to do top research. It continues a 400 year old tradition of discovery, and ennobles the human spirit. It's wonderful.
I am tired of people complaining about NASA's budget. It's really a bargain. A penny out of every dollar you pay in taxes goes toward it. If you've printed out a gorgeous photograph for your well, or read an article and said "hrm, that's interesting", or eaten freeze-dried food, you've more than gotten your money's worth.
The term you're looking for is "self-synchronizing stream cipher". As the article explains, you can use a normal block cipher in CFB mode to implement such a beast.
By the way, there's no good reason to use CBC mode these days. There are modes that are either faster, more parallizable, or both.
A Vigenère cipher generates ciphertext C(N) by passing plaintext symbol P(N) through the function E(P(N), K[N mod len(K)]), where N is the symbol number of the input, K is the key, K[Q] is the Qth symbol in K, and E is a function such that E(A,B) -> A', and E(A',B) -> A. Decryption simply applies the same function to the ciphertext, yielding the original plaintext.
This description clearly applies to XOR with a random pad. What makes a one-time pad secure is that the key is always longer than the input, so attacks that depend on correlation don't work. Conversely, Vigenère is insecure because the key repeats. Used with a random "key" as long as the message, Vigenère is equivalent to XOR, and is provably and perfectly secure.
...
You are a dangerous fool. Never use a one-time pad more than once, even for "light" security. Doing that turns the whole thing into a Vigenère cipher and destroys all security. You might as well just XOR each byte of the message with 0x42.
To be fair, sub-addressing (using both the '-' and '+' characters) was around well before the creators of Google graduated from high school.
Salting would help a bit here, but far more effective would be key stretching. Hash the email, then feed the hash back through the hash function a few thousand times. The extra computation doesn't have much of an impact when generating a single email identifier, because hash functions are blazing fast, and 1,000 iterations is still blazing fast. But the extra computation grievously hurts people who are using brute force to create rainbow tables, making the whole thing take thousands of times longer.
You're dead on about using thousands of hashes. The practice hurts an attacker far more than it hurts legitimate users. It's called key stretching, or key strengthening.
Here are typical examples of redacted paragraphs:
On what planet is it necessary to keep facts like these secret?
If a jury were a mere finder of fact, its job could be just as easily accomplished by a judge (as in civil law nations). What a jury really is for is to judge guilt. The judge of a case under Common Law ought to just be a referee.
You are a hero. Kudos.
Just like the BBC, that depraved pit of corruption and bias.
Err, wait: I misspelled FOX.
OpenDNS really is an abomination unto the Domain Naming System as bad as any ISP's NXDOMAIN redirection.
But IOKIYFTM --- It's Okay If You're Fighting The Man
(Or have a PR department that creates that impression.)
This is the most ill-informed comment I've ever seen.
You don't have a "direct path" to the hardware on modern computers at all. After all, you're not filling DMAed command buffers and programming memory registers, and you don't want to be: the details would drive you to madness. That's what we have drivers for.
OpenGL and Direct3D are both abstraction layers for the hardware. Neither is intrinsically more "direct", but both were certainly designed for real-time 3D rendering (although OpenGL was initially more used for CAD applications than games).
Your comment is a decade out of date. No modern Javascript engine operates the way you describe. They cache object properties such that property access is fast, and independent of property name length.
Your 3D code is slow for other reasons. As a hunch, I bet you're doing a lot of unnecessary string-to-Number conversion.
First of all, the charge of treason is obviously inappropriate. Fraud it is.
But to your other point, using a low-spec chip can certainly lead to lower reliability. What if the ersatz chip has less forgiving temperature than the real thing? What if the software running on it assumes it can respond within 50us to an external input, but because the ersatz chip is running at a lower clock speed, the response time is 100us? That could be the difference between your anti-ship-killer-missile cannon hitting the target and you surviving, or it missing and you dying.
This is serious.
You know this. I know this.
But Joe the Web 2.0 Startup Person (who never actually got a CS degree) doesn't, and when he wants to begin creating his MugshotTome site, thinks "well, my friend mentioned this PHP thing. Maybe he can help me with it." Joe creates MugshotTome, which takes off and becomes one of the larger sites on the Internet. Now they've hired real programmers, but they're still stuck with PHP for all eternity: rewriting the system from scratch would take too long.
Bob the Web 2.0 Startup Personn wants to create his own site, say, MyCylinder. Like Joe, he's more a businessman who fancies himself a hacker than a trained developer, so he looks around and sees what's popular. "Ah, MugshotTome uses PHP. It must be good. Let me go look for a few tutorials on that." And so MyCylinder and and MugshotTome end up using PHP. Jill, Jane, and Jim all start their Web 2.0 Startup Sites using PHP for the same reason. Bob realizes that PHP is popular enough that he can get "mad hits yo" by writing a PHP tutorial article "how to make mad monies by using PHP for your Web 2.0 Startup Website". This article encourages more people to start using PHP. Then Sergio, who's worked on a few Web 2.0 Startup Sites, has a well-intentioned desire to avoid code duplication, and wants to put some common functionality in a library. So because Sergio has used PHP for his website development, it seems natural for him to write his library in PHP.
In the final stage of this disease, even Jennifer, an actual trained programmer who knows better, gets told to use PHP when she's hired for yet another Web 2.0 Startup because PHP is now the de-facto standard.
This is how PHP becomes popular. It's also how Java became popular in enterprisy applications (just imagine a bunch of CTOs all talking to each other). It's how Python became popular in bioinformatics. It's how Lisp became popular in the AI community back in the day. It's how C became popular in systems programming. It's why people are making the mind-bogglingly stupid decision to start using Flash for desktop applications.
This disease afflicts every field. Differences in hype, hosting, adoption in college classes, and random chance have a far greater impact on which language ends up being dominant than differences in the quality of the languages themselves. In this way, if the best language happens to become dominant, it's really just an accident.
I don't want to talk about PHP's technical merits. We could have an endless flamewar about those. I just want to say that PHP become a lingua franca of web development. Pretty much everyone (especially in the Bay Area echo chamber) give you the my-god-you've-just-killed-that-kitten look if you propose writing a package in PHP. PHP isn't used because it's good, but because it's popular, and has a huge developer base. You can make a career out of knowing nothing but PHP, and people do.
Which is why I've decided to never do web work again. Give me embedded programming, systems work, scientific work, game development -- anything but web work. It's socially impossible to avoid using PHP for it, and PHP is one of a very few languages that viscerally infuriates me. I'll program using it and start cursing the developers. I can't stand it.
Yes, yes, you have Java, Ruby, *.NET, and lots of other choices. And they're used by some. But they don't have anything close to PHP's ungodly-huge marketshare, at least in the small-to-medium website world.
Businesses decrease wages because they want to keep more of their revenue as profit. It's that simple. Whatever wage decreases they can get away with, they will make.
Regulation ensures that companies can't get away with these bad practices.
And yes, the rich can exploit flaws is regulation. But that's not a reason to get rid of regulation. It's a reason to fix it.
It's as if you're saying, "The roof leaks! We're getting wet because water can use holes in the roof to get in. The roof is making us wet, and we need to tear it off entirely."
Or physics. Previously, you just had to plot the pressure of a gas against its volume to get your name immortalized. Now, to make any headway, we need kilometers-long particle accelerators to make any progress.
Or literature: previously, you just had to write good, solid work to earn a place in the canon. Now, to be notable, you have to write goddamn bullshit and, with balls of steel, call it literature in order to get noticed.
Or sports. Previously, you had to just be fit and dedicated to set records. Now, you either need to be a mutant freak or be pumped full of drugs to set records.
I suppose the exception is popular music, where mediocrity has become prized. Actually, not really: now you need to be exceptionally good-looking (and let autotune take care of your voice), rather than be exceptionally talented.
Wikibooks. I'm in the inclusionist camp myself, but there's no reason highly detailed works can't be structured as wikibooks linked from Wikipedia articles.