As someone else pointed out, your arguments are FOR interpreted languages. Another example is your bandwidth point. One of the earlier bytecode interpreters was put into excel. Why? To reduce code size.
Bytecode tends to be significantly smaller than compiled code. Smaller bytecode = less bandwidth.
On top of this, a bytecode interpreter can make much more intelligent thread-level optomizations, possibly even multi-threading an app not written to be multi-threaded.
Right now we are at the tipping point where the Java bytecode interpreter is about as fast as a compiled language (about twice as fast in some cases, half as fast in others if you don't consider the FPU problem). From here on, the bytecode will continue to gain in speed while the compiled languages will stay the same--C compilers are already about as optomized as they are likely to get because there is not much you can do with it.
It seems to me like games are getting lamer all the time, but then I have to realize that now I'm 42 and playing games just doesn't have the draw it used to. Not that I don't play, but I am open to the concept that my memory of games then is better than my reality of games now.
Of course, it's possible that Games just peaked with Outhouse and have gone downhill ever since.
Hehe, took me a while to figure out what you were talking about.
That neighborhood next to my empty lot is all small mobile/manufactured homes with virtually no yard, the roads are just normal sized 2-lane roads with parking on either side.
The homes are mostly owner-occupied by retired people so they tend to be tidy and uncluttered enough that they look like miniature houses, making the relative size of the roads larger.
Your brain seems to be able to adapt senses to what it knows is going on--for instance, if you wear glasses that invert your vision for a couple weeks, your brain will compensate and you will start seeing things "upright" again. If you take off the glasses, you will then see everything upside-down for a while.
So what other kind of input could this give you. If you implanted one in each hand of a def person, might he eventually be able to hear if he put his fingers near to a speaker magnet? If I were def, I'd totally give that a try--you never know! I wonder if such an implant could be placed inside the ear, maybe returning the ability to hear completely (as long as the sound was broadcast via magnetism like if the user was wearing headphones.
How about an extra input from your computer. Placing tiny electro-magnets under some of your keys could allow the keyboard to give you a little buzz that nobody else could perceive.
That's a really good point. Opra gives a bunch of money out, and she was pretty poor. Perhaps that's a good point.
Hmm, if it was, I'd expect to see a lot less "bling" on rappers and a lot more money flowing into poorer schools... but maybe you're on the right path.
Gasoline is a very efficient transfer mechanism, but not so good at conversion. There is still quite a bit of energy wasted in the conversion between liquid gas and forward motivation.
You can feel the energy coming off the radiator of a hot car. Imagine how much electricity it would take to power a heater that put out as much heat as a car wastes... There is also regenerative breaking...
My point? You won't need as much energy in electricity as you do in gas--no where near as much.
I sort of envision a hybrid. A very small gas motor to be used as backup generator, but for the most part it runs on batteries. For long trips you can run the generator the entire way. The batteries will discharge even with the generator on, but much more slowly, and even if they ran out you could maintain, say, 35 mph for as long as you have gas.
A 15 minute stop at a gas station might keep you going at top speed for a few hundred miles, or you could sit down and eat at a restaurant with a charging station out front and drive off with another 800+ miles before you needed to start worrying again.
I've heard a lot of people saying stuff like "The only solution....", there are always other solutions out there to be discovered and lots of smart people trying to discover them--to assume that you have out-thought all future possibilities kinda arrogant.
Sidewalk Entertainers are making a living/doing it for profit. They don't directly charge a fixed ammount, but neither do priests or strippers (as far as I know).
Graffiti artists and fanfic writers--that makes a good point, but if either of those could make money creating, do you think they would still be doing it for free?
To put it the other way around, how much fanfic do you imagine is written by professional writers? How much Graffiti do you suppose is done by people painting for a living.
I really do think there is something different about these programmers. I'm still trying to figure out just what..
I do not, however, think it was legal--I think it was just encouraged/not prosecuted. Wasn't there a case recently of some corporate buttmunch trying to say that the bootlegs were all still protected and shouldn't be traded after all?
Where was the "Free" concept before the computer age? Let's say even before 1995... Why did no other segment of society invent it?
Stephen King is rich as hell and loves to write. Was it really impossible for him to give a book away? Just one? How about music? Art?
I suppose the main difference is that before the computer age everything had a replication cost, and now it doesn't, but can that be the only issue?
Madonna never gave away CDs at cost, nor did any artist I've ever heard of. Why wouldn't have someone done that just once to see what happened? Maybe the publicity would do you well. The only thing that I know of that came close is a few bands encouraging bootlegs, and even at that it wasn't strictly "Legal", just encouraged (as far as i know).
The government makes a few things "Free" such as parks, streets, beaches, police, army,... but people would refuse to even fund those basic things if they had the choice.
In the computer realm, we are dedicating massive numbers of man-hours to open source projects and not even expecting to profit from the publicity!
Okay, so most people are fundamentally selfish to such an extreme that makes me embarrassed to call myself human, but what makes these programmers so different from other "Creators"?
I can't even attribute it to the fact that many got rich in the 90's because many of the open source projects had/have nothing to do with rich people, at least not Stephen King rich.
I thought that was a really neat idea too--I would love to see these things in the hands of people without electricity--how cool would that be. I could see them using the backlight as a light source that doesn't need to be "Lit", and posting some pretty interesting stuff...
You've already got a problem. I would recommend starting to document and refactor the code yourself. Ensure that all objects are self-contained, remove inter-object relationships and break complex object down into multiple smaller objects. Document as you go and test constantly. Add tests if they don't already exist so that you know your refactoring didn't hurt anything--remember a refactor is a change that can be proven not to effect anything else in the system, so be meticulous!
If you are just looking for tools, I often load smaller packages into BlueJ just to get an idea of the layout--BlueJ does a good job of reliably breaking down a bunch of classes and building a UML diagram from them. I understand they will make this part of BlueJ an eclipse plug-in eventually.
What do you mean? If I say "First" the map sends me to "Second"? That's pretty crazy! I hate to imagine google did something like that! I just thought you meant something stupid like the GPS coordinates being off by a few miles.
It really amazes me when people go off on Google for stuff like the parent--Google can be 50 times better than other offerings (and are in this case!) and yet we'll pick on a slight offset between the photo map and the street map (which isn't going to hurt anyone! The navigation has nothing to do with the photo map, it uses the street map exclusively)
What is it that makes someone reach so far to find problems with Google when it's always been one of the better companies? Maybe not perfect, maybe not even good, but better than any of the others.
I tried that, but the problem is that I never found a wiki that allowed UML-style diagrams to be built by multiple users. You could (and we did) easily draw one in visio and upload it as a jpeg, but that's really not much better than just creating the document and checking it into version control.
Did you find a Wiki that did a good job of UML-style design, and if so, please let me in on it!
Okay, we agree that there are diagrams that are useful for communication.
Somebody comes along and standardizes these "Useful Diagrams", collects them into a group and gives them a name and draws some examples so that we can all be talking about the same thing and understand each others diagrams.
As far as I know, this is all UML is. They have certian specific recomendations on how and when you should use these diagrams, but that is adapted per team/team size.
Makes me wonder if your problem might really be a manager or managers that misuse UML to generate an extra inch or two of documentation rather than the UML itself.
Your stance kind of seems like saying "I like to write email but I don't believe in dictionaries"
This is actually not a terrible stance--Dictionaries and the concept of "Correctly spelled words" are not a terribly old invention, but the problem is that standards are pretty useful AND there are some people who aren't truly creative--who really need a template to follow in order to do anything, for these things alone UML seems to be a pretty good collected standard, at least it's the best set of tools I've come up with for getting a design to other engineers through a document (along with a LOT of text, of course).
May I ask what you do for programming/modeling? I use pieces of UML because it works--it is a valid way to convey my design to my co-workers and we can implement together.
Class diagrams are ubiquitous these days, and I can't come up with a better way to show program flow than a sequence diagram. Most of the rest I could live without on a smallish sized project, but when you are using multiple architects, many of the others become useful.
If you have used something better (I don't love UML, it's anything but "Unified"), could you point me in that direction, or better yet, show me an example of one of your design documents that you think does a great job of conveying your design to someone else?
I think "how many errors, not whether an error exists" is just as true for applications and programs written in any language or using any technology. What's so insidious about spreadsheets is their integrity and the difficulty to maintain that.
The answer to that question is that Spreadsheets are not designed for maintenance like most languages are. The difference here is HUGE, in fact, there is no comparison whatsoever.
Applications designed by real teams in real languages involve some absolute requirements:
Here are some bare minimal language issues that most decent developers wouldn't question for work on a team (Individual developers/web developers are often a bit more loose)
Data hiding... CRITICAL! Any language that defaults to global data would be ludicrous. To even allow data access beyond the smallest boundaries is frightening.
Code organization--you should be able to group common functions with the data that they represent.
Code History--the ability to compare code changes to a previous version.
Highly documented code/self documenting code--duh
Some form of design--many large projects are in/moving to OO code, it's difficult to handle the design of a large application without it.
I'm not saying these things are impossible to see in a spreadsheet, but pretty unlikely. On top of that, the level of freedom given to the user of a spreadsheet makes the data environment of the program extremely difficult to control.
I think google pulled it's servers out of china, that way they can defy the PRC "requests" without worrying about employees being put in prison for it.
Also, (probably because of that), while Yahoo has put three people in prison, Google has put none in, to the best of my knowledge--what is there to object to?
We had a very similar experience. We hired a group in India and their code was HORRENDOUS--we have had to replace most of it. A few came over here, two or three were decent one was EXCELLENT, but any time you hire from the very bottom of the barrel, don't expect to get cream.
I sent their code back a few times, but a lot of it got missed.
One thing I noticed with the guys that were here: If your group says "We expect more out of you. We want you to think, to NEVER copy & paste, to always write your code with reuse in mind", it kinda works.
I think that the people in India (and many here) are so focused on speed that they don't feel they are allowed to code correctly. I think if you continually say "Doing it right will get it done faster, trust me" and check their code for a while, you can improve any body's game.
Or get together with (at least) 25 friends from school, each buy a cheap keyboard and swap so that all your keys are "A"'s and all the next guys are "B"'s.
Hell, keyboards are so cheap these days ($5 or less at a good sale) that you could spend the same as you would for Das Keyboard and actually spell your name out across the number row, and whatever arbitrary words you like across the rest of the keys.
Hmm, that's a good idea. Could even grind a few keys to make "blanks". Wonder how much I could sell "personalized" keyboards for...
Although you should design at this level, many problems hit LONG before design. The big problems I've seen have been in the analysis stage where you gather customer requirements and translate them into a very detailed requirements document.
If your non-trivial project lacks such a document, it will probably fail.
The only way to overcome a lack of requirements is to have a heroic effort by one or more engineers, and even then you end up with many of the same problems.
The problems will stem from missing a few requirements in the up-front design and therefore requires patches and modifications the code was never designed to handle.
As software engineers we MUST try to examine our problem space and come up with the most generic solution possible--the fewest screens, procedures, interfaces and objects to handle the widest variety of problems.
This means that when we have the design "Locked in" we have to make any "New" problems fit the design, often molding the desired presentation or functionality just a little. If your marketing research team did their jobs (I've NEVER seen this happen), you won't run into any problems that don't fit the design. Again, never happens.
When the problem is just a little to, umm, chunky to mold to our fit our current design, we have to modify the design. This is where all the flakeyness enters the process. After a few of these, you have to throw away your design and start over. Nobody ever does that, so the project fails.
Yeah, it's hard to come up with a detailed (enough) set of requirements--Really Hard--and apparently very few marketeers are up to the task. Often engineers help, but even then, this is a HARD TASK. It can take years to properly develop a set of requirements, and it cannot be done properly in under a month.
If a company is dedicated to this and then enforces a few simple procedures (like requiring automated testing of every requirement) your project will almost certainly not fail.
I'm not saying that a good software design isn't necessary (I disagree with the XP crowd there), but you could succeed without the kind of architecture they are talking about in this article. On the other hand, no architecture can make up for a lack of requirements.
As I said in another message elsewhere, the differentiation is control after the sale.
If you are simply "Licensing" the software and not "Selling" it (IE: If you are trying to control what happens to the software after it leaves the store shelf, by preventing copying or redistribution or modification) then you should be liable.
When a company chooses to no longer be liable for bugfixes and the like, the product should be made "Free" so that you can make copies and modifications yourself (as it should if the company chooses to stop selling it). Not that I expect users would fix all these bugs, but at least it would give us a chance!
As is, if they find some security hole in windows '95 or '98 that is truly critical and MS chooses not to fix it, you may be out a computer (assuming your are ignorant of Linux anyway)--let's say your computer will no longer serve the purpose you paid the money for it to serve.
Of course since laws in the US are being purchased by corporations, I don't expect this "Logic" to fly in any future I can imagine, but I can always dream.
This concept really works well. I used the same concept in the 80's.
To break yourself from looking at the keys, place a hand-towel or washcloth or something over your hands while you type.
It will take about 2 sessions and you'll be typing like a pro.
If you buy this product, the net result (over the alternative listed above) will be to simply annoy anyone else who uses your keyboard. If this is your goal, you NEED this product, but if you're not just doing it for appearances, go grab yourself a towel and have at it, you'll be cured in 2 days.
As someone else pointed out, your arguments are FOR interpreted languages. Another example is your bandwidth point. One of the earlier bytecode interpreters was put into excel. Why? To reduce code size.
Bytecode tends to be significantly smaller than compiled code. Smaller bytecode = less bandwidth.
On top of this, a bytecode interpreter can make much more intelligent thread-level optomizations, possibly even multi-threading an app not written to be multi-threaded.
Right now we are at the tipping point where the Java bytecode interpreter is about as fast as a compiled language (about twice as fast in some cases, half as fast in others if you don't consider the FPU problem). From here on, the bytecode will continue to gain in speed while the compiled languages will stay the same--C compilers are already about as optomized as they are likely to get because there is not much you can do with it.
It seems to me like games are getting lamer all the time, but then I have to realize that now I'm 42 and playing games just doesn't have the draw it used to. Not that I don't play, but I am open to the concept that my memory of games then is better than my reality of games now.
Of course, it's possible that Games just peaked with Outhouse and have gone downhill ever since.
Hehe, took me a while to figure out what you were talking about.
That neighborhood next to my empty lot is all small mobile/manufactured homes with virtually no yard, the roads are just normal sized 2-lane roads with parking on either side.
The homes are mostly owner-occupied by retired people so they tend to be tidy and uncluttered enough that they look like miniature houses, making the relative size of the roads larger.
Your brain seems to be able to adapt senses to what it knows is going on--for instance, if you wear glasses that invert your vision for a couple weeks, your brain will compensate and you will start seeing things "upright" again. If you take off the glasses, you will then see everything upside-down for a while.
So what other kind of input could this give you. If you implanted one in each hand of a def person, might he eventually be able to hear if he put his fingers near to a speaker magnet? If I were def, I'd totally give that a try--you never know! I wonder if such an implant could be placed inside the ear, maybe returning the ability to hear completely (as long as the sound was broadcast via magnetism like if the user was wearing headphones.
How about an extra input from your computer. Placing tiny electro-magnets under some of your keys could allow the keyboard to give you a little buzz that nobody else could perceive.
Any others?
That's a really good point. Opra gives a bunch of money out, and she was pretty poor. Perhaps that's a good point.
Hmm, if it was, I'd expect to see a lot less "bling" on rappers and a lot more money flowing into poorer schools... but maybe you're on the right path.
Gasoline is a very efficient transfer mechanism, but not so good at conversion. There is still quite a bit of energy wasted in the conversion between liquid gas and forward motivation.
You can feel the energy coming off the radiator of a hot car. Imagine how much electricity it would take to power a heater that put out as much heat as a car wastes... There is also regenerative breaking...
My point? You won't need as much energy in electricity as you do in gas--no where near as much.
I sort of envision a hybrid. A very small gas motor to be used as backup generator, but for the most part it runs on batteries. For long trips you can run the generator the entire way. The batteries will discharge even with the generator on, but much more slowly, and even if they ran out you could maintain, say, 35 mph for as long as you have gas.
A 15 minute stop at a gas station might keep you going at top speed for a few hundred miles, or you could sit down and eat at a restaurant with a charging station out front and drive off with another 800+ miles before you needed to start worrying again.
I've heard a lot of people saying stuff like "The only solution....", there are always other solutions out there to be discovered and lots of smart people trying to discover them--to assume that you have out-thought all future possibilities kinda arrogant.
Sidewalk Entertainers are making a living/doing it for profit. They don't directly charge a fixed ammount, but neither do priests or strippers (as far as I know).
Graffiti artists and fanfic writers--that makes a good point, but if either of those could make money creating, do you think they would still be doing it for free?
To put it the other way around, how much fanfic do you imagine is written by professional writers? How much Graffiti do you suppose is done by people painting for a living.
I really do think there is something different about these programmers. I'm still trying to figure out just what..
I mentioned that.
I do not, however, think it was legal--I think it was just encouraged/not prosecuted. Wasn't there a case recently of some corporate buttmunch trying to say that the bootlegs were all still protected and shouldn't be traded after all?
Where was the "Free" concept before the computer age? Let's say even before 1995... Why did no other segment of society invent it?
... but people would refuse to even fund those basic things if they had the choice.
Stephen King is rich as hell and loves to write. Was it really impossible for him to give a book away? Just one?
How about music? Art?
I suppose the main difference is that before the computer age everything had a replication cost, and now it doesn't, but can that be the only issue?
Madonna never gave away CDs at cost, nor did any artist I've ever heard of. Why wouldn't have someone done that just once to see what happened? Maybe the publicity would do you well. The only thing that I know of that came close is a few bands encouraging bootlegs, and even at that it wasn't strictly "Legal", just encouraged (as far as i know).
The government makes a few things "Free" such as parks, streets, beaches, police, army,
In the computer realm, we are dedicating massive numbers of man-hours to open source projects and not even expecting to profit from the publicity!
Okay, so most people are fundamentally selfish to such an extreme that makes me embarrassed to call myself human, but what makes these programmers so different from other "Creators"?
I can't even attribute it to the fact that many got rich in the 90's because many of the open source projects had/have nothing to do with rich people, at least not Stephen King rich.
any ideas?
I've had a Sony computer and I have no intention of buying another.
They removed the crank :(
I thought that was a really neat idea too--I would love to see these things in the hands of people without electricity--how cool would that be. I could see them using the backlight as a light source that doesn't need to be "Lit", and posting some pretty interesting stuff...
You've already got a problem. I would recommend starting to document and refactor the code yourself. Ensure that all objects are self-contained, remove inter-object relationships and break complex object down into multiple smaller objects. Document as you go and test constantly. Add tests if they don't already exist so that you know your refactoring didn't hurt anything--remember a refactor is a change that can be proven not to effect anything else in the system, so be meticulous!
If you are just looking for tools, I often load smaller packages into BlueJ just to get an idea of the layout--BlueJ does a good job of reliably breaking down a bunch of classes and building a UML diagram from them. I understand they will make this part of BlueJ an eclipse plug-in eventually.
What do you mean? If I say "First" the map sends me to "Second"? That's pretty crazy! I hate to imagine google did something like that! I just thought you meant something stupid like the GPS coordinates being off by a few miles.
Well, I was just comparing Google and Microsoft (local.live) maps and the difference around Spokane, WA is AMAZING.
8 ,-117.144996&spn=0.009564,0.014076&om=1
8 7~-117.152027&style=h&lvl=13
Google offers me a fantastic resolution view of my lot:
http://maps.google.com/maps?t=k&hl=en&ll=47.68072
(It's the stretch in the center beside all those small houses running from the river to the street, not that it matters...)
Now see microsoft's offerings:
http://local.live.com/default.aspx?v=2&cp=47.6620
The difference is mind boggling.
It really amazes me when people go off on Google for stuff like the parent--Google can be 50 times better than other offerings (and are in this case!) and yet we'll pick on a slight offset between the photo map and the street map (which isn't going to hurt anyone! The navigation has nothing to do with the photo map, it uses the street map exclusively)
What is it that makes someone reach so far to find problems with Google when it's always been one of the better companies? Maybe not perfect, maybe not even good, but better than any of the others.
I really don't get it.
I tried that, but the problem is that I never found a wiki that allowed UML-style diagrams to be built by multiple users. You could (and we did) easily draw one in visio and upload it as a jpeg, but that's really not much better than just creating the document and checking it into version control.
Did you find a Wiki that did a good job of UML-style design, and if so, please let me in on it!
I dunno, I think it needs a moderation of "Flaimbait, overrated, insightful and funny" giving a net +0;
I've been coding for too long.
Okay, we agree that there are diagrams that are useful for communication.
Somebody comes along and standardizes these "Useful Diagrams", collects them into a group and gives them a name and draws some examples so that we can all be talking about the same thing and understand each others diagrams.
As far as I know, this is all UML is. They have certian specific recomendations on how and when you should use these diagrams, but that is adapted per team/team size.
Makes me wonder if your problem might really be a manager or managers that misuse UML to generate an extra inch or two of documentation rather than the UML itself.
Your stance kind of seems like saying "I like to write email but I don't believe in dictionaries"
This is actually not a terrible stance--Dictionaries and the concept of "Correctly spelled words" are not a terribly old invention, but the problem is that standards are pretty useful AND there are some people who aren't truly creative--who really need a template to follow in order to do anything, for these things alone UML seems to be a pretty good collected standard, at least it's the best set of tools I've come up with for getting a design to other engineers through a document (along with a LOT of text, of course).
May I ask what you do for programming/modeling? I use pieces of UML because it works--it is a valid way to convey my design to my co-workers and we can implement together.
Class diagrams are ubiquitous these days, and I can't come up with a better way to show program flow than a sequence diagram. Most of the rest I could live without on a smallish sized project, but when you are using multiple architects, many of the others become useful.
If you have used something better (I don't love UML, it's anything but "Unified"), could you point me in that direction, or better yet, show me an example of one of your design documents that you think does a great job of conveying your design to someone else?
I think "how many errors, not whether an error exists" is just as true for applications and programs written in any language or using any technology. What's so insidious about spreadsheets is their integrity and the difficulty to maintain that.
The answer to that question is that Spreadsheets are not designed for maintenance like most languages are. The difference here is HUGE, in fact, there is no comparison whatsoever.
Applications designed by real teams in real languages involve some absolute requirements:
Here are some bare minimal language issues that most decent developers wouldn't question for work on a team (Individual developers/web developers are often a bit more loose)
Data hiding... CRITICAL! Any language that defaults to global data would be ludicrous. To even allow data access beyond the smallest boundaries is frightening.
Code organization--you should be able to group common functions with the data that they represent.
Code History--the ability to compare code changes to a previous version.
Highly documented code/self documenting code--duh
Some form of design--many large projects are in/moving to OO code, it's difficult to handle the design of a large application without it.
I'm not saying these things are impossible to see in a spreadsheet, but pretty unlikely. On top of that, the level of freedom given to the user of a spreadsheet makes the data environment of the program extremely difficult to control.
Absolutely opposite ends of a spectrum.
I think google pulled it's servers out of china, that way they can defy the PRC "requests" without worrying about employees being put in prison for it.
Also, (probably because of that), while Yahoo has put three people in prison, Google has put none in, to the best of my knowledge--what is there to object to?
We had a very similar experience. We hired a group in India and their code was HORRENDOUS--we have had to replace most of it. A few came over here, two or three were decent one was EXCELLENT, but any time you hire from the very bottom of the barrel, don't expect to get cream.
I sent their code back a few times, but a lot of it got missed.
One thing I noticed with the guys that were here: If your group says "We expect more out of you. We want you to think, to NEVER copy & paste, to always write your code with reuse in mind", it kinda works.
I think that the people in India (and many here) are so focused on speed that they don't feel they are allowed to code correctly. I think if you continually say "Doing it right will get it done faster, trust me" and check their code for a while, you can improve any body's game.
Or get together with (at least) 25 friends from school, each buy a cheap keyboard and swap so that all your keys are "A"'s and all the next guys are "B"'s.
Hell, keyboards are so cheap these days ($5 or less at a good sale) that you could spend the same as you would for Das Keyboard and actually spell your name out across the number row, and whatever arbitrary words you like across the rest of the keys.
Hmm, that's a good idea. Could even grind a few keys to make "blanks". Wonder how much I could sell "personalized" keyboards for...
Although you should design at this level, many problems hit LONG before design. The big problems I've seen have been in the analysis stage where you gather customer requirements and translate them into a very detailed requirements document.
If your non-trivial project lacks such a document, it will probably fail.
The only way to overcome a lack of requirements is to have a heroic effort by one or more engineers, and even then you end up with many of the same problems.
The problems will stem from missing a few requirements in the up-front design and therefore requires patches and modifications the code was never designed to handle.
As software engineers we MUST try to examine our problem space and come up with the most generic solution possible--the fewest screens, procedures, interfaces and objects to handle the widest variety of problems.
This means that when we have the design "Locked in" we have to make any "New" problems fit the design, often molding the desired presentation or functionality just a little. If your marketing research team did their jobs (I've NEVER seen this happen), you won't run into any problems that don't fit the design. Again, never happens.
When the problem is just a little to, umm, chunky to mold to our fit our current design, we have to modify the design. This is where all the flakeyness enters the process. After a few of these, you have to throw away your design and start over. Nobody ever does that, so the project fails.
Yeah, it's hard to come up with a detailed (enough) set of requirements--Really Hard--and apparently very few marketeers are up to the task. Often engineers help, but even then, this is a HARD TASK. It can take years to properly develop a set of requirements, and it cannot be done properly in under a month.
If a company is dedicated to this and then enforces a few simple procedures (like requiring automated testing of every requirement) your project will almost certainly not fail.
I'm not saying that a good software design isn't necessary (I disagree with the XP crowd there), but you could succeed without the kind of architecture they are talking about in this article. On the other hand, no architecture can make up for a lack of requirements.
As I said in another message elsewhere, the differentiation is control after the sale.
If you are simply "Licensing" the software and not "Selling" it (IE: If you are trying to control what happens to the software after it leaves the store shelf, by preventing copying or redistribution or modification) then you should be liable.
When a company chooses to no longer be liable for bugfixes and the like, the product should be made "Free" so that you can make copies and modifications yourself (as it should if the company chooses to stop selling it). Not that I expect users would fix all these bugs, but at least it would give us a chance!
As is, if they find some security hole in windows '95 or '98 that is truly critical and MS chooses not to fix it, you may be out a computer (assuming your are ignorant of Linux anyway)--let's say your computer will no longer serve the purpose you paid the money for it to serve.
Of course since laws in the US are being purchased by corporations, I don't expect this "Logic" to fly in any future I can imagine, but I can always dream.
This concept really works well. I used the same concept in the 80's.
To break yourself from looking at the keys, place a hand-towel or washcloth or something over your hands while you type.
It will take about 2 sessions and you'll be typing like a pro.
If you buy this product, the net result (over the alternative listed above) will be to simply annoy anyone else who uses your keyboard. If this is your goal, you NEED this product, but if you're not just doing it for appearances, go grab yourself a towel and have at it, you'll be cured in 2 days.