As a highly placed executive at a broadcast media company let me point out that what we really need is a way to keep the future from happening. We've adapted to the present, yet these futuremongers insist on changing the rules. It's simply irresponsible, how do they expect everything to stay the same when everything keeps changing? The present suits us just fine - Congress should mandate that the market adapt to us, not the other way around.
(b) it won't suddenly explode and destroy an entire city block. ... So the company buys one (database server, e-mail server, web site, etc.) and sets it up according the skimpy directions in the box. It works for a while, then blows up, seriously damaging the business.
I am a bit confused by this pair of comments - are you suggesting that companies should be able to move from experimental use of a product to production use with mission critical contents without the assistance of an expert? That the inadequacy of the information on the packaging implies that it is idiot-proof? Is that the way general business treats vacuum forming equipment or high temperature ovens?
So in short, yes, if they are putting mission critical data into a computer and exposing that computer to the Internet without the assistance of a professional, they should have known better. Likewise, if they put the million dollar prototype in the oven and set the temperature without knowing wether the scale is kelvin, celsius, or farenheit, they deserve to lose the prototype.
Perhaps, if Microsoft is explicitly marketing SQL Server as, "as easy to use as Word!" then they are liable, but I don't think that is what you are positing. It sounds like you are saying that the lack of flashing lights and yellow/black warning tape implies that the software is safe for any purpose.
Not that I disagree that this is what general business is going to whine to congress for, because America is chock full of a bunch of fuckwits who refuse to take responsibility for their own actions. I only hope that congress has the foresight to pretend to listen while making fun of the whiners behind their backs.
Re:One thing I've NEVER seen here....
on
Fair IP Laws?
·
· Score: 3, Insightful
1. Time Limit The pace of change in software is radically different than that of, for example, heavy industry. Software companies that cannot recoup their software R&D investment within a few years are malfunctioning, and should not be protected from the free market. They should die and their resources should be incorporated into faster companies. Software is one of the most aggresively self-catalyzing fields of research in history. To assume that the patent time frames that make sense in material sciences are equally valid in information science is irrational.
2. Novelty / Non-Obviousness I would assume that this is most related to the quality of examiners. My personal example is the one click patent. When I was developing an online computer hardware sales sites in 1996, my boss asked if we could use cookies to store a person's information, allowing them to checkout more rapidly. He didn't get the idea from Amazon, and wasn't an expert in the field. The solution was obvious to anyone who knew anything about online shopping and cookies.
I am not sure if the standard is obviousness to laypeople or obviousness to those in the field. If it is obviousness to the layperson, I would also find this to be counterproductive. Computers are such a rapidly advancing field that even IT professionals rarely have a solid comprehension of areas which are outside their specialty. To expect a layperson to even understand what a software patent is talking about strikes me as highly dubious, let alone using them as the standard of novelty and obviousness.
Patents are most necessary in areas where it is EASY to copy inventions. If everyone needed a few million $ worth of hardware to make the invention, the patent doesn't add that much value against the masses of people who want to copy your invention, it only protects you against the few who have the actual resources to do so.
I completely agree with this, and think you have left out a significant correlary. Patents are least necessary in fields where research and development costs are low or easily recouped. That is, if the cost of developing a new technology is low, or the speed with which the investment can be recouped is high, the length and/or force of a patent should be reduced.
Patents are not intended to be an unquestionable monopoly in the Ayn Randian / solipsist sense. They are intended to maximize the economic benefit from R&D investment and from dispersal of technology.
Reasonable Time Limits
on
Fair IP Laws?
·
· Score: 2
Copyright time limits should be dramatically shortened (and copyright law should punish those who violate copyright, not those who engage in actions which may lead to other people engaging in other actions which may lead to copyright infringement - but I digress). How short? IMHO maybe 20 - 25 years, but that's not based on much real analysis.
Patent is a bit more complex - the core problem I see is that some fields (EG: computer science) are advancing so rapidly that even a 7 year patent seems astronomical. Meanwhile other fields (EG: heavy industry) are more established - patent worthy innovations are far more rare, require significantly more up-front investment, and take longer to build a market. This is problematic - 4 year patents would be insufficient for the automotive industry, but 15 year patents would strangle computer science.
It seems that the most efficient solution would have to have different patent expiration periods for different industries. The inevitable result would be increased corruption and reliance on lawyers.
Why is this important? When you change the comment, you must think about the comment. You must think about the change you've done and how it fits in with the rest of the code, and what the rest of the code is trying to do.
Contrast this with changing the code, which can safely be done willy-nilly. Thank you for saving us from random code changes by adding blocks of unverifiable natural language which may have a vaguely similar meaning to anyone other than the original author.:-) (now don't get your panties in a bunch, I'm just yanking your chain)
But if the objective is to mitigate the risk of change, might I suggest trying unit testing?
I actually don't worry about the potential adverse side effects in some distant section that might result from improving this section. If it passes the tests, it is right. If it is wrong, it will not pass the tests. If it passes the tests and a bug is later found, it indicates an opportunity for improvement of the unit tests. Enhance the unit tests to reflect the newly discovered requirement, then do the minimal improvements to the code necessary to pass the improved unit test.
I will make you two promises: 1. It will feel extremely unnatural at first. 2. If you really commit to it in version n, you will experience less bugs in version n+1. Unfortunately, it is impossible to perceive a bug that never exists, so you will have to have a fairly solid feel for how many bugs to anticipate to fully appreciate the improvement.
As anecdotal evidence; when I build up a new package, I start with the unit tests for the smallest components first, and gradually build my way up. At the end, I start wiring all the subcomponents together. It is not uncommon for me to spend two weeks developing a collection of classes, and less than an hour debugging them in the final integration.
2. You introduced a bug on line 3 (null pointer dereferencing).
I didn't write a unit test, since this is example code written off the cuff (I know, there's no good excuse for not writing the unit test first - forgive me). My unit tests include bounds tests. The first pass would have induced me to change the code to "".equals( string ).
1. Your "improved" code is much less readable than the original. Whoever has to maintain it will need more time to comprehend it.
I disagree. I believe that the use of the variable name "definedForThisUi" more concisely states the intent of the conditional than the first example. Typically a person is more interested in seeing the high level meaning of the aggregated condition that allows entry to the block than the collection of states that must be evaluated in assessing that aggregated condition. This is the reason for creating aggregating conditional methods, such as person.isEligible(), which checks the state of several parameters (perhaps age, membership level, and purchase history).
Moreover, one stated objective was to make it less likely that the explanation of the code would diverge from the logic. Comments have a nasty habit of not changing when someone alters the logic - but when the code is the commentary, they cannot mutate independantly. Also, programmers tend to be more anal about the clarity of code than they are about comment revision.
Of course, this code is doing two very simple boolean checks - hardly necessary to clarify this small, simple block - but then, it is just an example. Perhaps you have heard of books on programming style. They typically show small examples which do not, strictly speaking, require the enhancement in question. These examples are meant to demonstrate the concept. Getting the most from examples like this requires that you abstract the meta information - the reason behind the action. A fine example is chapter 1 of "Refactoring". Buy a copy - it is really quite good - and read paragraph 3 of chapter 1 for a more clear explanation.
Yes, I have personally seen code like it and I wanted to shoot the fucking idiot who wrote it.
I do not understand how this statement was intended to support your positions, so I do not know how to respond. FWIW your attitude does not sound conducive to a team atmosphere. Have you been fired a lot? Have you ever considered rage management therapy? Screaming into a pillow is supposed to help. JM2C.
You are a moron
moron Pronunciation Key (môrn, mr-) n.
2. Psychology. A person of mild mental retardation having a mental age of from 7 to 12 years...
I find it hard to believe that the typical moron would care about code commentary and be inclined to express an opinion - regardless of your impression of that opinion. Besides, would a moron use big words like "mutate" and "induced"?
Upon further reflection, I think that the following is just as clear in setting definedForThisUi, and also makes the use of !'s clearer. Your recommendation makes a lot of sense. private void initialize( Task aTask ) {
String initializerName = task.getInitializerName();
boolean isNull = initializerName == null;
boolean isEmpty = "".equals( initializerName );
boolean definedForThisUi = ( ! isNull ) && ( ! isEmpty );
if( definedForThisUi ) {
addToTaskBar( aTask );
} }
Using if (!isNotNull) to determine if something is null can be difficult to wrap one's head around.
I completely agree, though only in the case where a variable is being used repeatedly in a block. The example above is from an actual code block like this:
So as you can see, there is no opportunity for a confusing use of the variables. They are entirely localized and for clarity purposes only. This will be most useful when you are using fine grained methods, which may not have been a focal point of Code Complete. Of course, fine grained methods have their problems too - they sacrifice performance for clarity. Many things in programming are tradeoffs. It's just a matter of choosing your priorities.
In any situation where I see the need for code commentary, I try first to find a way to make the code clearer. If the source code is sufficiently clear, comments are unnecessary. This also avoids the risk that the comments will diverge from the code - making claims that were once true, but no longer reflect the code's actual logic.
This is poorly commented code (despite the fact that the comment is clear and accurate):
aClassName = aTask.getUiInitializerClassName(); // empty or null uiInitializerClassName means this task is not // defined for use in this interface. Skip it.
if( aClassName != null && ! aClassName.equals( "" ) ) { ... do something...
}
This is well commented code (despite the fact that there are no comments at all):
initializerName = aTask.getUiInitializerClassName();
boolean isNotNull = initializerName != null;
boolean isNotEmpty = ! initializerName.equals( "" );
boolean definedForThisUi = isNotNull && isNotEmpty;
if( definedForThisUi ) { ... do something...
}
Of course, this doesn't work in all situations, but I find that I can improve the clarity and accuracy of seventy to eighty percent of my commentary this way.
I do not know that I can convince myself that the following is a valid argument, but all that Microsoft has to do is convince the Xbox Linux Project team that it is sufficiently plausible on the surface to keep a judge from throwing it out on first site (IE: that they would have to defend themselves). With that in mind, here goes:
On second thought, I don't think I will post my argument. IANAL, I am not an expert on the DMCA, there are probably a dozen people here who could poke numerous holes in my argument, and many more who could produce a similar or better argument - but still - it is sufficiently compelling that it would intimidate me. I think I would rather not post it publicly, as it would crush me if it wound up being used. Feel free to contact me at the above email address (rot13 means rotate each letter 13 spaces through the alphabet, wrapping from z to a), tell me a little about who you are and what you do and maybe point me to some of your Free work if you are genuinely interested.
Again, I don't really believe that my argument is earth-shattering, or even better than what any first year law student could present, but I can see little upside in posting it here, and it would destroy me if someone used it.
Only $199 a pop and every unit I buy costs Microsoft money? Most excellant! How long till they begin firing volleys of lawyers at The Xbox Linux Project? Any bets on which 4 letter law starting with "DM" and ending with "CA" they'll invoke?
The Xbox Linux Project is currently working to port Linux to the Xbox. It appears that the primary hurdle is getting past the hardware based authorization system, which does not allow unapproved software to run.
Why bother with a warrant at all? Wouldn't it be easier for Yahoo! to simply always send copies of their nightly differentials to the authorities? Eliminate all that silly paperwork (which is slowing down the speedy execution of justice).
OK, that's a bit flippant, but how far off is it really? We recently eliminated the need for two branches of government to agree before issuing a warrant with the Patriotic American Jackbooted Thug Act.
Don't get me wrong, I'm not opposed to properly executed warrants. Heck, I may not even be opposed to a totally open society (IE: trivial search and seizure), but if we're going to keep the pretense of a right to freedom from unreasonable searches and seizures, we should maintain the checks and balances that assure that those searches and seizures are authorized and executed properly. If we are choosing to make them trivial, then lets eliminate all the barriers at once and get it over with (and, of course, this should imply that the gloves come off regarding the privacy of our public officials: every sales receipt, campaign contribution, and bank transaction gets published).
Linux developers don't enjoy a monopoly. Linux developers don't have the power to alter the course of the free market.
The fact that Microsoft is a monopoly is not bad.
The fact that Microsoft is abusive in expanding and defending its market share is not bad.
The fact that Microsoft is a monopoly that is abusive in expanding and defending its market share is bad. The problem is when a company has the power to alter the course of the free market, and uses that power in a fashion that is destructive to the economy (in this case by creating artificial barriers to competition).
Of the four CD's immediately to my left, only one has a CD logo. All predate these defective CD experiments. A brief look around at the record store recently showed similar evidence.
But that is irrelevant. A CD being in a rack full of CDs at a music store implies that it is fit for certain purposes, like playback in any common CD playback device. Why would I give music stores the mistaken impression that I accept responsibility for reading the labels to ensure that a CD acts like a CD? They should bear the responsibility of making it clear that the product is defective. If they do not, they should bear the pain of restitution if it does not function as implied.
Is the following also a case of buyer-beware?
"This car requires CNG to run. I don't have a CNG vendor near my house. The dealer never told me, and the sticker didn't say anything about it."
"You didn't see an 'Unleaded Fuel Only' label on the fuel gauge did you? You didn't look to see what the fuel filler looked like? If it didn't have a clear indication that it was gasoline powered, how can you blame the dealership?"
From the abstract of Patent No. 5,576,951: Organizational hierarchies of data sources are arranged so that an infinite number of sales presentation configurations can be created.
This patent has nothing to do with your barbecue and plumbing site. Since your server has a finite life span, it is only capable of producing a finite number of sales presentations. Frankly, I think that a system capable of producing an infinite number of anything is quite impressive and worthy of patent protection.
If online pirating is hitting their pocket books in a serious manner, they should do what any other group would do: bring the offenders to court.
Metallica tried this and realized that directly injuring your customers is a no-win strategy. The customers get angry and boycott the product. If, however, the RIAA can get congress to pass a law that forces hardware and software vendors to injure their customers, the customer will blame the hardware and software vendors, or at least be sufficiently confused about who the real enemy is that they will roll over and take it. This is the same reason that bars and restaurants publicly decry smoking bans but lobby in favor of them - "it's the big bad government's fault, we can't do anything about it."
"We can't estimate how much piracy is on the net but in one day we found a million sites under a search for one of the codenames for pirated software," said a BSA spokesperson.
I just found 125,000 web pages for "masochism", yet there are hundreds of times that many people using Windows. It would appear that page count does not accurately reflect societal penetration [sic].
Mr. Jones answered: "I don't think people buy Windows because Microsoft is a monopoly. I go to work every day to build great products that people are going to love."
Unfortunately, counsel did not retort, "If you believe the users love your products, set them free. If they come back, they are yours. If they don't, they were never yours to begin with.":-)
I'm a pretty serious economist (frequently mistaken for a capitalist), and I believe that non-monopoly commercial enterprises (or more specifically, any enterprise which is incapable of altering the free market) should not be constrained by ethics. Our laws should be the clear-cut guide that companies can follow without having to worry about what one board member or another feels is "right".
But sequencing the human genome is an inherently research oriented venture. When research opens entirely new areas of human knowledge, the laws cannot possibly contain sufficient information to guide a person or company's actions; as a result, pure commerce orientation is insufficient to produce the optimal outcome. This is why pure scientists and pure science institutions have to be ethical. They have to understand that new science is capable of actions that the market and the law aren't prepared to handle.
Reactions among scientists range from amusement to indifference, most saying that it is unimportant whose genome was sequenced.
The problem I see with Venter's act is not the effect on the information gathered. The problem is that it suggests (at least to me) deep ethical problems. I'm commercially oriented, but I have many friends who are researchers. There is not one of them who would be capable of even forming the concept of using his or her own DNA as the dataset for the project. IMHO, that is a fairly important qualification for being a pure scientist.
Addendum: In previewing this comment I am struck with the impression that pure research and monopolies require ethical inhibitions for the same reason. They are both capable of altering the course of the free market, so the free market cannot be an accurate guide. (too lazy to figure out where this fits into the above:)
It seems likely to me that those who would disable javascript are also those who would be willing to hand type an email address from a graphic image that shows the email address. So you could have the javascript generating the mailto: link attached to a graphic showing your email address, and the lost contacts would be minimal.
My company works with IIS quite a bit (the collaborate with us on business process analysis and improvement), and my understanding is that we are consistently satisified. Just my two cents.
IANAL, and I'm taking the article at face value, but assuming the issue really is this cut and dried, could the companies that are being threatened sue the USPTO for negligence or dereliction of duty? It seems that a patent on encryption technology, submitted in 1998, that mentioned no other encryption system, is obviously flawed. If the USPTO let such a patent claim through, as I see it, the only explanation is that they are failing to perform due dilligence. Is that not their legal duty?
As a highly placed executive at a broadcast media company let me point out that what we really need is a way to keep the future from happening. We've adapted to the present, yet these futuremongers insist on changing the rules. It's simply irresponsible, how do they expect everything to stay the same when everything keeps changing? The present suits us just fine - Congress should mandate that the market adapt to us, not the other way around.
(b) it won't suddenly explode and destroy an entire city block.
...
So the company buys one (database server, e-mail server, web site, etc.) and sets it up according the skimpy directions in the box. It works for a while, then blows up, seriously damaging the business.
I am a bit confused by this pair of comments - are you suggesting that companies should be able to move from experimental use of a product to production use with mission critical contents without the assistance of an expert? That the inadequacy of the information on the packaging implies that it is idiot-proof? Is that the way general business treats vacuum forming equipment or high temperature ovens?
So in short, yes, if they are putting mission critical data into a computer and exposing that computer to the Internet without the assistance of a professional, they should have known better. Likewise, if they put the million dollar prototype in the oven and set the temperature without knowing wether the scale is kelvin, celsius, or farenheit, they deserve to lose the prototype.
Perhaps, if Microsoft is explicitly marketing SQL Server as, "as easy to use as Word!" then they are liable, but I don't think that is what you are positing. It sounds like you are saying that the lack of flashing lights and yellow/black warning tape implies that the software is safe for any purpose.
Not that I disagree that this is what general business is going to whine to congress for, because America is chock full of a bunch of fuckwits who refuse to take responsibility for their own actions. I only hope that congress has the foresight to pretend to listen while making fun of the whiners behind their backs.
1. Time Limit
The pace of change in software is radically different than that of, for example, heavy industry. Software companies that cannot recoup their software R&D investment within a few years are malfunctioning, and should not be protected from the free market. They should die and their resources should be incorporated into faster companies. Software is one of the most aggresively self-catalyzing fields of research in history. To assume that the patent time frames that make sense in material sciences are equally valid in information science is irrational.
2. Novelty / Non-Obviousness
I would assume that this is most related to the quality of examiners. My personal example is the one click patent. When I was developing an online computer hardware sales sites in 1996, my boss asked if we could use cookies to store a person's information, allowing them to checkout more rapidly. He didn't get the idea from Amazon, and wasn't an expert in the field. The solution was obvious to anyone who knew anything about online shopping and cookies.
I am not sure if the standard is obviousness to laypeople or obviousness to those in the field. If it is obviousness to the layperson, I would also find this to be counterproductive. Computers are such a rapidly advancing field that even IT professionals rarely have a solid comprehension of areas which are outside their specialty. To expect a layperson to even understand what a software patent is talking about strikes me as highly dubious, let alone using them as the standard of novelty and obviousness.
Patents are most necessary in areas where it is EASY to copy inventions. If everyone needed a few million $ worth of hardware to make the invention, the patent doesn't add that much value against the masses of people who want to copy your invention, it only protects you against the few who have the actual resources to do so.
I completely agree with this, and think you have left out a significant correlary. Patents are least necessary in fields where research and development costs are low or easily recouped. That is, if the cost of developing a new technology is low, or the speed with which the investment can be recouped is high, the length and/or force of a patent should be reduced.
Patents are not intended to be an unquestionable monopoly in the Ayn Randian / solipsist sense. They are intended to maximize the economic benefit from R&D investment and from dispersal of technology.
Copyright time limits should be dramatically shortened (and copyright law should punish those who violate copyright, not those who engage in actions which may lead to other people engaging in other actions which may lead to copyright infringement - but I digress). How short? IMHO maybe 20 - 25 years, but that's not based on much real analysis.
Patent is a bit more complex - the core problem I see is that some fields (EG: computer science) are advancing so rapidly that even a 7 year patent seems astronomical. Meanwhile other fields (EG: heavy industry) are more established - patent worthy innovations are far more rare, require significantly more up-front investment, and take longer to build a market. This is problematic - 4 year patents would be insufficient for the automotive industry, but 15 year patents would strangle computer science.
It seems that the most efficient solution would have to have different patent expiration periods for different industries. The inevitable result would be increased corruption and reliance on lawyers.
Why is this important? When you change the comment, you must think about the comment. You must think about the change you've done and how it fits in with the rest of the code, and what the rest of the code is trying to do.
:-) (now don't get your panties in a bunch, I'm just yanking your chain)
Contrast this with changing the code, which can safely be done willy-nilly. Thank you for saving us from random code changes by adding blocks of unverifiable natural language which may have a vaguely similar meaning to anyone other than the original author.
But if the objective is to mitigate the risk of change, might I suggest trying unit testing?
Test Infected
I actually don't worry about the potential adverse side effects in some distant section that might result from improving this section. If it passes the tests, it is right. If it is wrong, it will not pass the tests. If it passes the tests and a bug is later found, it indicates an opportunity for improvement of the unit tests. Enhance the unit tests to reflect the newly discovered requirement, then do the minimal improvements to the code necessary to pass the improved unit test.
I will make you two promises: 1. It will feel extremely unnatural at first. 2. If you really commit to it in version n, you will experience less bugs in version n+1. Unfortunately, it is impossible to perceive a bug that never exists, so you will have to have a fairly solid feel for how many bugs to anticipate to fully appreciate the improvement.
As anecdotal evidence; when I build up a new package, I start with the unit tests for the smallest components first, and gradually build my way up. At the end, I start wiring all the subcomponents together. It is not uncommon for me to spend two weeks developing a collection of classes, and less than an hour debugging them in the final integration.
2. You introduced a bug on line 3 (null pointer dereferencing).
I didn't write a unit test, since this is example code written off the cuff (I know, there's no good excuse for not writing the unit test first - forgive me). My unit tests include bounds tests. The first pass would have induced me to change the code to "".equals( string ).
1. Your "improved" code is much less readable than the original. Whoever has to maintain it will need more time to comprehend it.
I disagree. I believe that the use of the variable name "definedForThisUi" more concisely states the intent of the conditional than the first example. Typically a person is more interested in seeing the high level meaning of the aggregated condition that allows entry to the block than the collection of states that must be evaluated in assessing that aggregated condition. This is the reason for creating aggregating conditional methods, such as person.isEligible(), which checks the state of several parameters (perhaps age, membership level, and purchase history).
Moreover, one stated objective was to make it less likely that the explanation of the code would diverge from the logic. Comments have a nasty habit of not changing when someone alters the logic - but when the code is the commentary, they cannot mutate independantly. Also, programmers tend to be more anal about the clarity of code than they are about comment revision.
Of course, this code is doing two very simple boolean checks - hardly necessary to clarify this small, simple block - but then, it is just an example. Perhaps you have heard of books on programming style. They typically show small examples which do not, strictly speaking, require the enhancement in question. These examples are meant to demonstrate the concept. Getting the most from examples like this requires that you abstract the meta information - the reason behind the action. A fine example is chapter 1 of "Refactoring". Buy a copy - it is really quite good - and read paragraph 3 of chapter 1 for a more clear explanation.
Yes, I have personally seen code like it and I wanted to shoot the fucking idiot who wrote it.
I do not understand how this statement was intended to support your positions, so I do not know how to respond. FWIW your attitude does not sound conducive to a team atmosphere. Have you been fired a lot? Have you ever considered rage management therapy? Screaming into a pillow is supposed to help. JM2C.
You are a moron
moron Pronunciation Key (môrn, mr-) n.
2. Psychology. A person of mild mental retardation having a mental age of from 7 to 12 years...
I find it hard to believe that the typical moron would care about code commentary and be inclined to express an opinion - regardless of your impression of that opinion. Besides, would a moron use big words like "mutate" and "induced"?
:^P
Upon further reflection, I think that the following is just as clear in setting definedForThisUi, and also makes the use of !'s clearer. Your recommendation makes a lot of sense.
private void initialize( Task aTask ) {
String initializerName = task.getInitializerName();
boolean isNull = initializerName == null;
boolean isEmpty = "".equals( initializerName );
boolean definedForThisUi = ( ! isNull ) && ( ! isEmpty );
if( definedForThisUi ) {
addToTaskBar( aTask );
}
}
Thanks for the tip!
Using if (!isNotNull) to determine if something is null can be difficult to wrap one's head around.
I completely agree, though only in the case where a variable is being used repeatedly in a block. The example above is from an actual code block like this:
private void initialize( Task aTask ) {
String initializerName = task.getInitializerName();
boolean isNotNull = initializerName != null;
boolean isNotEmpty = ! "".equals( initializerName );
boolean definedForThisUi = isNotNull && isNotEmpty;
if( definedForThisUi ) {
addToTaskBar( aTask );
}
}
So as you can see, there is no opportunity for a confusing use of the variables. They are entirely localized and for clarity purposes only. This will be most useful when you are using fine grained methods, which may not have been a focal point of Code Complete. Of course, fine grained methods have their problems too - they sacrifice performance for clarity. Many things in programming are tradeoffs. It's just a matter of choosing your priorities.
In any situation where I see the need for code commentary, I try first to find a way to make the code clearer. If the source code is sufficiently clear, comments are unnecessary. This also avoids the risk that the comments will diverge from the code - making claims that were once true, but no longer reflect the code's actual logic.
// empty or null uiInitializerClassName means this task is not
// defined for use in this interface. Skip it.
... do something ...
... do something ...
This is poorly commented code (despite the fact that the comment is clear and accurate):
aClassName = aTask.getUiInitializerClassName();
if( aClassName != null && ! aClassName.equals( "" ) ) {
}
This is well commented code (despite the fact that there are no comments at all):
initializerName = aTask.getUiInitializerClassName();
boolean isNotNull = initializerName != null;
boolean isNotEmpty = ! initializerName.equals( "" );
boolean definedForThisUi = isNotNull && isNotEmpty;
if( definedForThisUi ) {
}
Of course, this doesn't work in all situations, but I find that I can improve the clarity and accuracy of seventy to eighty percent of my commentary this way.
I do not know that I can convince myself that the following is a valid argument, but all that Microsoft has to do is convince the Xbox Linux Project team that it is sufficiently plausible on the surface to keep a judge from throwing it out on first site (IE: that they would have to defend themselves). With that in mind, here goes:
On second thought, I don't think I will post my argument. IANAL, I am not an expert on the DMCA, there are probably a dozen people here who could poke numerous holes in my argument, and many more who could produce a similar or better argument - but still - it is sufficiently compelling that it would intimidate me. I think I would rather not post it publicly, as it would crush me if it wound up being used. Feel free to contact me at the above email address (rot13 means rotate each letter 13 spaces through the alphabet, wrapping from z to a), tell me a little about who you are and what you do and maybe point me to some of your Free work if you are genuinely interested.
Again, I don't really believe that my argument is earth-shattering, or even better than what any first year law student could present, but I can see little upside in posting it here, and it would destroy me if someone used it.
I pulled the trigger on the submit too quick - here's some more good info:
Quick overview of an ideal use for the machine.
Only $199 a pop and every unit I buy costs Microsoft money? Most excellant! How long till they begin firing volleys of lawyers at The Xbox Linux Project? Any bets on which 4 letter law starting with "DM" and ending with "CA" they'll invoke?
The Xbox Linux Project is currently working to port Linux to the Xbox. It appears that the primary hurdle is getting past the hardware based authorization system, which does not allow unapproved software to run.
Why bother with a warrant at all? Wouldn't it be easier for Yahoo! to simply always send copies of their nightly differentials to the authorities? Eliminate all that silly paperwork (which is slowing down the speedy execution of justice).
OK, that's a bit flippant, but how far off is it really? We recently eliminated the need for two branches of government to agree before issuing a warrant with the Patriotic American Jackbooted Thug Act.
Don't get me wrong, I'm not opposed to properly executed warrants. Heck, I may not even be opposed to a totally open society (IE: trivial search and seizure), but if we're going to keep the pretense of a right to freedom from unreasonable searches and seizures, we should maintain the checks and balances that assure that those searches and seizures are authorized and executed properly. If we are choosing to make them trivial, then lets eliminate all the barriers at once and get it over with (and, of course, this should imply that the gloves come off regarding the privacy of our public officials: every sales receipt, campaign contribution, and bank transaction gets published).
Linux developers don't enjoy a monopoly. Linux developers don't have the power to alter the course of the free market.
The fact that Microsoft is a monopoly is not bad.
The fact that Microsoft is abusive in expanding and defending its market share is not bad.
The fact that Microsoft is a monopoly that is abusive in expanding and defending its market share is bad. The problem is when a company has the power to alter the course of the free market, and uses that power in a fashion that is destructive to the economy (in this case by creating artificial barriers to competition).
"Linux is where Solaris was five or 10 years ago."
You make your own cynical comment : )
Thank you, I will:
Ya mean Linux is the runaway growth leader in the production server OS market? OK, I'll buy that.
:-)
Of the four CD's immediately to my left, only one has a CD logo. All predate these defective CD experiments. A brief look around at the record store recently showed similar evidence.
But that is irrelevant. A CD being in a rack full of CDs at a music store implies that it is fit for certain purposes, like playback in any common CD playback device. Why would I give music stores the mistaken impression that I accept responsibility for reading the labels to ensure that a CD acts like a CD? They should bear the responsibility of making it clear that the product is defective. If they do not, they should bear the pain of restitution if it does not function as implied.
Is the following also a case of buyer-beware?
"This car requires CNG to run. I don't have a CNG vendor near my house. The dealer never told me, and the sticker didn't say anything about it."
"You didn't see an 'Unleaded Fuel Only' label on the fuel gauge did you? You didn't look to see what the fuel filler looked like? If it didn't have a clear indication that it was gasoline powered, how can you blame the dealership?"
From the abstract of Patent No. 5,576,951:
Organizational hierarchies of data sources are arranged so that an infinite number of sales presentation configurations can be created.
This patent has nothing to do with your barbecue and plumbing site. Since your server has a finite life span, it is only capable of producing a finite number of sales presentations. Frankly, I think that a system capable of producing an infinite number of anything is quite impressive and worthy of patent protection.
From Jim Allchin: "We have to work on our reputation for security in the marketplace."
Yes, that's it, it's a public relations issue. I guess the idea of FIXING THE GODDAMMED SOFTWARE hasn't occured to him.
If online pirating is hitting their pocket books in a serious manner, they should do what any other group would do: bring the offenders to court.
Metallica tried this and realized that directly injuring your customers is a no-win strategy. The customers get angry and boycott the product. If, however, the RIAA can get congress to pass a law that forces hardware and software vendors to injure their customers, the customer will blame the hardware and software vendors, or at least be sufficiently confused about who the real enemy is that they will roll over and take it. This is the same reason that bars and restaurants publicly decry smoking bans but lobby in favor of them - "it's the big bad government's fault, we can't do anything about it."
"We can't estimate how much piracy is on the net but in one day we found a million sites under a search for one of the codenames for pirated software," said a BSA spokesperson.
I just found 125,000 web pages for "masochism", yet there are hundreds of times that many people using Windows. It would appear that page count does not accurately reflect societal penetration [sic].
Mr. Jones answered: "I don't think people buy Windows because Microsoft is a monopoly. I go to work every day to build great products that people are going to love."
:-)
Unfortunately, counsel did not retort, "If you believe the users love your products, set them free. If they come back, they are yours. If they don't, they were never yours to begin with."
I'm a pretty serious economist (frequently mistaken for a capitalist), and I believe that non-monopoly commercial enterprises (or more specifically, any enterprise which is incapable of altering the free market) should not be constrained by ethics. Our laws should be the clear-cut guide that companies can follow without having to worry about what one board member or another feels is "right".
:)
But sequencing the human genome is an inherently research oriented venture. When research opens entirely new areas of human knowledge, the laws cannot possibly contain sufficient information to guide a person or company's actions; as a result, pure commerce orientation is insufficient to produce the optimal outcome. This is why pure scientists and pure science institutions have to be ethical. They have to understand that new science is capable of actions that the market and the law aren't prepared to handle.
Reactions among scientists range from amusement to indifference, most saying that it is unimportant whose genome was sequenced.
The problem I see with Venter's act is not the effect on the information gathered. The problem is that it suggests (at least to me) deep ethical problems. I'm commercially oriented, but I have many friends who are researchers. There is not one of them who would be capable of even forming the concept of using his or her own DNA as the dataset for the project. IMHO, that is a fairly important qualification for being a pure scientist.
Addendum: In previewing this comment I am struck with the impression that pure research and monopolies require ethical inhibitions for the same reason. They are both capable of altering the course of the free market, so the free market cannot be an accurate guide. (too lazy to figure out where this fits into the above
It seems likely to me that those who would disable javascript are also those who would be willing to hand type an email address from a graphic image that shows the email address. So you could have the javascript generating the mailto: link attached to a graphic showing your email address, and the lost contacts would be minimal.
My company works with IIS quite a bit (the collaborate with us on business process analysis and improvement), and my understanding is that we are consistently satisified. Just my two cents.
IANAL, and I'm taking the article at face value, but assuming the issue really is this cut and dried, could the companies that are being threatened sue the USPTO for negligence or dereliction of duty? It seems that a patent on encryption technology, submitted in 1998, that mentioned no other encryption system, is obviously flawed. If the USPTO let such a patent claim through, as I see it, the only explanation is that they are failing to perform due dilligence. Is that not their legal duty?