While you are absolutely right... I was kindof assuming that the user would approve the installation of each behaviour descriptor (in doing so breaking the first rule of assumptions).
On the other hand, curing the disease is what we currently do with virus cleaning software. You can treat the symptom, treat the cause, or prevent the infection. Microsoft is trying the third option.
Prevention is better than cure, certainly -- but there are limited. Darwinian evolution tells us that those organisms that can't survive their environment must adapt or die. Microsoft is attempting to address this problem by controlling the environment. The growing concern about supergerms and the dangers of household antibacterial products demonstrate the problems with this approach.
While controlling the environment is appropriate to some extent, Windows also needs to adapt and 'grow' a better 'immune system'. One way to do this is to have a description (for each piece of software) of the typical behaviour of that software, and prevent and raise an alert when atypical behaviour is detected.
#include "IANAL.h" but I just wrote my exam on Intellectual Property...
Possessing a copy that is not legitimate is infringement. If you make the copy, that is direct infringement. If you accepted an illegitimate copy, even in good faith, that is indirect infringement. A prerequisite for using a copy is possession, thus use requires suitable permission from the copyright holder.
However, you do make an interesting point in this specific case: if you already have a legitimate copy and take an action that is delictual with regard to the copyright holder, do you (or can you) lose the right (which was premised on a contract with the holder)?
I would answer that as follows: this is a reciprocal contract in which the user agrees to (1) pay $20 and (2) waive the right to fair use, in exchange for which the copyright holder provides a (legitimate) copy. If the user exercises his/her fair use right, this is a breach of contract. The copyright holder could demand performance, damages, and/or another remedy.
It is possible that the use would keep the right to use the legitimate copy; it is also possible that a remedy would involve depriving the user of that right. I would agree that, on closer inspection, you do not automatically lose your right to use the copy.
Let me throw in a curve ball: what if the original license included a penalty clause "If the user breaches this contract (s)he shall not have the right to make use of the copy acquired in terms of the contract". This is typical in commercial EULAs.
The ALA has some comments on mass-market licenses. In general a negotiated contract is enforcable over Copyright law, while a non-negotiated one... well, that depends on the court, from time to time.
So riddle me this: a fBSD kernel coder sees a cute trick in the Linux kernel and, with minor modifications, uses it. Infringement or not?
Is it fair use?
It is small, probably factual (despite its precise expression), so it probably meets the requirements for fair use.
The GPL is non-negotiated, and thus fair use may be a defense against infringement.
Ouch. Strictly a violation of the GPL, but legally acceptable? How far does this go?
I'm going to be somewhat of a Devil's Advocate here. The problem with the GPL is the same as the problem with any shrink-wrap license: there is a combination of the private law of contract and the property law of copyright at work.
Consider the following simple license: "This software is Copyright. All Rights Reserved. You may receive and use a single copy of this software is you have paid the author $20. You agree to waive your fair use rights."
What does that mean, legally? Copyright law gives the holder certain rights, and gives the user of a legitimate copy certain rights. Now the holder has attempted to use his rights in conjunction with (a presumed) demand for the product and the law of contract to remove the statutory rights of the user.
So the user takes a screenshot of a menu from the program for a review in his blog. Now what? Arguably the user has not infringed on the copyright because fair use is a statutory defense against infringement. But the user has broken the contract. The effect of breaking the contract is (typically) to invalidate it and make the breaker liable for damages. Only the breaking of the contract, in this case, also terminates the right afforded to the user to use the legitimate copy. So by keeping the screenshot in the blog, the user is infringing copyright, because fair use only applies if you have a legitimate copy. Nasty.
More subtly, this contract also contradicts the doctrine of first sale. It requires payment directly to the author, and in the case of infringement the "onwership" of the copy is revoked, and cannot be transferred.
Let's look at this from a different angle. Another author releases his work into the public domain, but only distributes it to his web site, where he has a click-wrap license agreement: "This work is in the public domain and you may download and use one copy, but you may not copy it, distribute or publish it, or modify it in any way". No use of copyright at all, just the law of contract. Would this contract be considered legally valid? If so, is there a point in copyright at all?
When Microsoft claims their license locks an operating system to a particular hardware system, we object and say the license is invalid. But many of the same arguments hold against the GPL because ultimately the GPL, like a commercial EULA, is a combination of contractual and copyright law, and is largely untested ground.
If SCO owns Linux, as they claim, they can assert their copyrights and the GPL simply doesn't exist on Linux anymore
This is incorrect. If you create a derivative work without the permission of the copyright holder (of the original), you own the copyright on the derivative. The copyright holder of the original work has no claim to your derivative.
HOWEVER, if you attempt to exercise any of your intellectual rights regarding your (derivative) work (i.e. publication, distribution, etc) every copy you make of your work will be an infringement of the copyright of the copyright holder of the original.
This is well established in international law.
This page provides commentary on Xu Liu vs. Price Waterhouse LLP et. al, which illustrates a similar issue. Apart from this there are (several) cases in which the the rights to a motion picture derived from a book were limited (in terms of time) and not renewed: the distribution of the motion picture was found to be infringing, but in no case has the court found that the derivative work (the motion picture) is owned by the book's copyright holder.
The result is that SCO cannot claim ownership of Linux. All it can claim is that Linux is an infringing derivative, and that is therefore has a claim against anyone who has used and/or copied Linux.
Hi. Any country that has ratified the Berne convention or any more recent WIPO treaty will have had to enact law that requires copyright to vest in any qualifying creation. Publication is not necessary for copyright -- mere creation is sufficient. In fact, (first) publication is one of the exclusive rights enjoyed by the copyright holder.
You are of course correct, but you have to remember that this is written from a business perspective.
To a business "free" means gratis, and "free" source code that doesn't explicitly require royalty payments is believed to be completely gratis, forever, amen. This is why there is so much business concern and FUD about the GPL being viral: these liberal "open source" wankers have redefined the well-understand business term "free" into something to do with liberty, lulling innocent businesses into a false sense of profit opportunities. How inconsiderate.
Re:How could a pay mail service even work?
on
Another Whack at Spam
·
· Score: 0, Offtopic
The big problem with any pay-per-send idea is spam economics. Somehow everyone believes that paying a poultry sum will scare spammers off, despite ongoing problems with spam calls, snail mail, SMSs, and the like. Charging money won't take away the spam.
A flowchart is an abstraction, and does not necessarily (in fact seldom does) describe software in its entirity.
A flowchart can cover the logical flow of a single function, a stateful class, an algorithm, a user interaction sequence, or any other level of granularity. The data required is global within that view of that part of the system -- that could translate in implementation to local, member, namespace or global variables.
Nothing in a flowchart requires the use of "goto" in implementation. The most common implementation of flowcharts (in my experience) uses a state engine, and can be developed in any language (including those without "goto").
The fact that a naive implemented in line-numbered BASIC may be easiest using "goto" and global variables doesn't detract from the fact that other language constructs like loops and subroutine calls, and various levels of scoping, can achieve the same result -- all described by the same abstract flowchart.
First, understand that "flowchart" is a concept, not a particular notation. It is, quite literally, a diagram that describes a logical flow that includes sequences and decision points. Here is a sample definition.
A flowchart is an abstraction, and does not necessarily (in fact seldom does) describe software in its entirity.
A flowchart can cover the logical flow of a single function, a stateful class, an algorithm, a user interaction sequence, or any other level of granularity. The data required is global within that view of that part of the system -- that could translate in implementation to local, member, namespace or global variables.
Nothing in a flowchart requires the use of "goto" in implementation. The most common implementation of flowcharts (in my experience) uses a state engine, and can be developed in any language (including those without "goto").
The fact that a naive implemented in line-numbered BASIC may be easiest using "goto" and global variables doesn't detract from the fact that other language constructs like loops and subroutine calls, and various levels of scoping, can achieve the same result -- all described by the same abstract flowchart.
First, understand that "flowchart" is a concept, not a particular notation. It is, quite literally, a diagram that describes a logical flow that includes sequences and decision points. Here is a sample definition.
Amazing how many people quote this crap without any understanding what they are saying.
First, understand that "flowchart" is a concept, not a particular notation. It is, quite literally, a diagram that describes a logical flow that includes sequences and decision points. Here is a sample definition. Search for "flowchart" and you will get hits on organisational structure, process management, Six Sigma, project management, and yes, software development. State and activity diagrams in UML are a particular notation for modern flowcharting.
Flowcharts remain a significantly powerful tool for various aspects of software design, especially user interaction sequences and state logic for UIs, as well as process modeling. They are essential in capturing conceptual business flows during analysis, as well as in describing algorithms in a visually obvious way (somewhere where pseudocode fails), even though they algorithm may not be implemented in that manner.
Flowcharts haven't been a particularly useful tool for program implementation for some time -- but they're still essential and actively used in design.
I've got to agree with this. In this interview Brandt (director of GoogleWatch) admits to spending two years optimising namebase.org for Google.
One of Brandt's major problems with Google is PageRank, which he believes is tyrannical rather than democratic. This shows a fundamental lack of understanding of democracy. The modern concept of "democracy" does not say that everyone is equal or has an equal say. It does say that everyone is equal before the Law, and that democracy is founded on the premise of citizens who are knowledgeable and capable of understanding complex concepts. It also says that common people (collectively) hold power.
So PageRank doesn't give an equal say to every web page out there. Web pages that are widely references are assumed to be "more knowledgable" regarding the topic(s) they cover, and thus a more likely source of information. Not a completely unreasonable assumption.
Brandt's concerns about privacy are, mostly, founded. But then, there's no such thing as a free lunch. Google is a massively valuable resource, and you get it gratis. So far Google has disclosed its privacy policies and not broken any promises, so users have agreed to their terms. If they don't like that... don't use Google.
It sounds like some areas of the Java solution are giving particular problems, in particular with respect to memory. If this functionality is provided by the application server, you need to look at alternatives (WebSphere, JBoss, etc). If it is provided by your custom-build CMS then profiling and limited refactoring to make use of object pools, etc, should take you a long way.
Most of the cost issues (apparently) relate to the application server and its host system; investigate the option to migrate to cheaper systems.
And a basic financial response: how much will it cost to scale the current solution? how much will it cost to develop the new solution (in particular bear in mind development infrastructure, salaries, and parallel deployment to prevent downtime in production)? how much will it cost to maintain the new solution as compared to the current solution? which solution best fits your business requirements (other than cost)?
A job interview is a very good place for an NDA, from a business perspective. You want to ensure you are getting the best candidate -- in order to do that you need to give the candidate as much information about your business as possible, ask questions, gauge the response.
Without an NDA, doing this could give away trade secrets (that's not only technology, it includes business practices, customers, competitors, suppliers) and other competitive information.
Your average NDA doesn't prevent you from disclosing where you work or went for an interview, but will prevent you from disclosing the package offered (e.g. to other employees) and from disclosing trade secrets or competitive information (to non-employees).
Any company that is NOT behaving like this either doesn't have a competitive advantage or secrets that its going to disclose to you in an interview, or doesn't care about its long-term viability.
Re:Startup secrecy can be a sign of incompetence
on
The Cult of the NDA
·
· Score: 1
What everyone seems to be missing in this discussion is that venture capital NDAs are not about technology and are not about secrecy. Very few startups (of any kind) use NDAs to protect their ideas from their business partners (and that sort of behaviour is ludicrous, as you describe).
An NDA is a business tool for protecting your investment in a business plan while trying to attract further investment, or while interacting with business partners who could reveal your competitive advantage.
There are a number of unscrupulous investors out there who will take the business plan presented by a startup and execute it themselves, cutting the people who came up with it out of the picture.
Note that I'm not talking about ideas here! Investors are not interested in ideas (unless they really are novel and profitable) -- they are interested in business plans that have been well researched and considered from marketing, financial, operational and strategic perspectives. In other words, a whole lot of investment (not just an idea) has already been put into a business plan.
The whole point of an NDA is to enable a startup to disclose all the relevant information to a potential business partner (a venture capatalist) without too much risk of being screwed. Its about keeping the secret of your competitive edge in the hands of those who need to know, and away from the competition.
Do you have the vaguest concept of what a "rules engine" is? Hint: its got little to do with input validation.
Your average rules engine has things like this: "Residential users pay a basic waster connection charge of 1080c which is exempt from sales tax and includes 50 litres of water free. The first 100 litres of water thereafter costs 2.6c per litre, after which the charge is 1.8c per litre up to 1000 litres, then 3.4c per litre. Insurance claims for burst pipes are only valid on accounts that pay 234c per month for the insurance and are not outstanding at the time of the claim; claims of up to 20000c are automatically approved, but anything beyond that must be approved by a supervisor and associated with an inspection report already submitted into the system."
Are we getting a clue yet? There is, surprisingly enough, a reason why system architects and system integrators have different job functions to database administrators.
Mmm... I have a CDROM and CDRW, and have tried at least two other CDROMs that I borrowed from work. No luck. I can get most games to work if I keep a spare Windows 98 partition that has nothing installed except the current game I am playing. The problem seems to be some horrible OS / CPU (AMD Duron) combination rather than the CD drive (I've had the same problem with other games that work fine on another OS on the same system).
I recently bought myself a copy of Black & White. It was on a special and I picked it up for (the equivalent of) $9. It didn't work -- the copy protection doesn't like my system.
So I returned the game to the store, but got the "guilty until proven innocent, which is impossible to prove" treatment. That's a good time to accept the $9 loss and cut it there... but I didn't.
Over the next week I spend around 12 hours fiddling with my system, downloading cracks, downloading emulators, downloading patches, in the vain hope of getting the damn game to work. And you know what? I've come to accept that the only way I'm going to get it to work is to cough up $1000 for a new computer.
Even if I had tried a demo version (is there one?) I couldn't have known that the copy protection on the real product would break it.
This is making some sweeping assumptions. First, that the data is stored in a SQL DBMS, or one that is extensible. Second, that the application you are integrating to allows something else to modify the database concurrently. Third, that the web front-end doesn't require real-time response from the "legacy" application (or that all the data is stored, versus calculated). Forth, that you can somehow access the DBMS.
Since many (esp. older) enterprise applications expect to own the database, they make assumptions that it hasn't been altered by other processes. Even when this isn't the case, few of these systems poll the database to detect changes so that you can effectively communicate with the application.
Let's take a real-world scenario: a bank wanted to deliver an intranet application for its consultants that calculated home loan repayments. To a bank this isn't a simple amortisation -- the quote has to be accurate and valid, which means that it has to use the business rules, current interest rates, special charges and everything else as done by the home loan application on the mainframe. The existing way to do this was to send a faxed request to the head office, have a special clerk enter a loan application into the mainframe (but not mark it active), get the response and fax it back.
Problem #1: the mainframe application was written in an archaic language using DB2. Problem #2: The business rules encoded into the application were largely undocumented -- the bank implicitly trusted any value they got from the application, even if they couldn't figure out how it was calculated. Problem #3: You can't simply query the database for the quote -- it has to be calculated using the appropriate application logic. Problem #4: You can't simply write the request into the database and expect it to be calculated -- the application doesn't work like that. Problem #5: Talking to the mainframe.
So how do you solve the problem? Well, this wasn't the only work going on in the bank, so they deployed Message Oriented Middleware as an integration technology (common in large enterprises). Intranet applications accessed objects that wrapped access to the MoM requests and responses. In the case of the home loan system, they had to run the terminal client for the mainframe application in a virtual environment, simulate keystrokes and directly read the screen in order to achieve input and output, and then write a further integration layer about that to expose "functions" that could be meaningfully accessed via the MoM.
None of which can be done by integrating to a DBMS.
Because in enterprises serious about their data, all data access is via a rules engine. This prevents the current global problem of having business rules hacked into literally dozens of places in your system, and completely unmaintainable (let alone not even knowing what your business rules are).
I should thank you though. It is people who think like you that drive a multi-billion dollar reverse engineering industry to recover system design and business rules.
I've got to agree with this. Reading Greenspun's blog I was left pondering how to start responding to something so completely wrong.
The article implies a lack of understanding of the JSP paradigm. Sure, binding variables to a relational database is tough. So if you insist on doing that, use JSP tags. But that's not the point of Java -- you should be access instance methods from a JSP page, and those instances can access any data source they choose.
VB and ASP are intended for developing front-ends to primarily relational data, so they make it pretty easy to accomplish. The fact that they make it easy doesn't mean that you can use the same design and technique to deliver a scalable, maintainable web site. All the current theory says take the pain up front and put in a decent template system, and never put code in your page.
"People who are serious about getting the job done on time and under budget" will get the requirements first, and not making sweeping bullshit generalisations. There is a huge problem in the industry at the moment with IS departments trying to coalesce the functionality of dozens of specific-purpose VB applications into one enterprise system. The size of the project, requirement for scalability, expected lifetime and regularity of changes, systems integration issues, cost, stability, customer technology preference and other technical and non-technical issues will all influence the choice of a development environment.
With a dynamic language... you could do bind variables by having the database interface look at local variables in the caller's environment
And if you look at development guides and bug reports, you'll find that it is exactly this sort of implementation that has insidious security holes. The security of systems that provide such shortcut functionality depends on the developer understanding how to use the system properly. Unfortunately it is quite often developers who don't have the time or inclination to understand that use these shortcuts.
With Web applications, nearly all of the engineering happens in the SQL database and the interaction design, which is embedded in the page flow links. None of the extra power of Java is useful when the source of persistence is a relational database management system such as Oracle or SQL Server
Greenspun seems to believe all "web applications" are Internet (rather than Intranet) applications. Beyond management systems (CMS and document management) I have seem few significant intranet systems that are merely a web interface to a database. Many intranet web applications interface to accounting, stock, POS, banking, quotation and other systems, where integration cannot be accomplished using a database. A Gung Ho "do it all in the web page because its fastest" approach is the quickest route to failure.
So ASP and PHP have their place, and they're almost certainly easier to understand for a CS senior who isn't interested in reading up on the design principles behind JSP... but that doesn't make them better.
While you are absolutely right ... I was kindof assuming that the user would approve the installation of each behaviour descriptor (in doing so breaking the first rule of assumptions).
On the other hand, curing the disease is what we currently do with virus cleaning software. You can treat the symptom, treat the cause, or prevent the infection. Microsoft is trying the third option.
Prevention is better than cure, certainly -- but there are limited. Darwinian evolution tells us that those organisms that can't survive their environment must adapt or die. Microsoft is attempting to address this problem by controlling the environment. The growing concern about supergerms and the dangers of household antibacterial products demonstrate the problems with this approach.
While controlling the environment is appropriate to some extent, Windows also needs to adapt and 'grow' a better 'immune system'. One way to do this is to have a description (for each piece of software) of the typical behaviour of that software, and prevent and raise an alert when atypical behaviour is detected.
Provisional patent Dec 2001. Filed Dec 2002. Granted Oct 2003. I don't think there should be a problem finding prior art.
#include "IANAL.h" but I just wrote my exam on Intellectual Property ...
Possessing a copy that is not legitimate is infringement. If you make the copy, that is direct infringement. If you accepted an illegitimate copy, even in good faith, that is indirect infringement. A prerequisite for using a copy is possession, thus use requires suitable permission from the copyright holder.
However, you do make an interesting point in this specific case: if you already have a legitimate copy and take an action that is delictual with regard to the copyright holder, do you (or can you) lose the right (which was premised on a contract with the holder)?
I would answer that as follows: this is a reciprocal contract in which the user agrees to (1) pay $20 and (2) waive the right to fair use, in exchange for which the copyright holder provides a (legitimate) copy. If the user exercises his/her fair use right, this is a breach of contract. The copyright holder could demand performance, damages, and/or another remedy.
It is possible that the use would keep the right to use the legitimate copy; it is also possible that a remedy would involve depriving the user of that right. I would agree that, on closer inspection, you do not automatically lose your right to use the copy.
Let me throw in a curve ball: what if the original license included a penalty clause "If the user breaches this contract (s)he shall not have the right to make use of the copy acquired in terms of the contract". This is typical in commercial EULAs.
Further to my last post ...
The ALA has some comments on mass-market licenses. In general a negotiated contract is enforcable over Copyright law, while a non-negotiated one ... well, that depends on the court, from time to time.
So riddle me this: a fBSD kernel coder sees a cute trick in the Linux kernel and, with minor modifications, uses it. Infringement or not?
Is it fair use?
Ouch. Strictly a violation of the GPL, but legally acceptable? How far does this go?
I'm going to be somewhat of a Devil's Advocate here. The problem with the GPL is the same as the problem with any shrink-wrap license: there is a combination of the private law of contract and the property law of copyright at work.
Consider the following simple license: "This software is Copyright. All Rights Reserved. You may receive and use a single copy of this software is you have paid the author $20. You agree to waive your fair use rights."
What does that mean, legally? Copyright law gives the holder certain rights, and gives the user of a legitimate copy certain rights. Now the holder has attempted to use his rights in conjunction with (a presumed) demand for the product and the law of contract to remove the statutory rights of the user.
So the user takes a screenshot of a menu from the program for a review in his blog. Now what? Arguably the user has not infringed on the copyright because fair use is a statutory defense against infringement. But the user has broken the contract. The effect of breaking the contract is (typically) to invalidate it and make the breaker liable for damages. Only the breaking of the contract, in this case, also terminates the right afforded to the user to use the legitimate copy. So by keeping the screenshot in the blog, the user is infringing copyright, because fair use only applies if you have a legitimate copy. Nasty.
More subtly, this contract also contradicts the doctrine of first sale. It requires payment directly to the author, and in the case of infringement the "onwership" of the copy is revoked, and cannot be transferred.
Let's look at this from a different angle. Another author releases his work into the public domain, but only distributes it to his web site, where he has a click-wrap license agreement: "This work is in the public domain and you may download and use one copy, but you may not copy it, distribute or publish it, or modify it in any way". No use of copyright at all, just the law of contract. Would this contract be considered legally valid? If so, is there a point in copyright at all?
When Microsoft claims their license locks an operating system to a particular hardware system, we object and say the license is invalid. But many of the same arguments hold against the GPL because ultimately the GPL, like a commercial EULA, is a combination of contractual and copyright law, and is largely untested ground.
This is incorrect. If you create a derivative work without the permission of the copyright holder (of the original), you own the copyright on the derivative. The copyright holder of the original work has no claim to your derivative.
HOWEVER, if you attempt to exercise any of your intellectual rights regarding your (derivative) work (i.e. publication, distribution, etc) every copy you make of your work will be an infringement of the copyright of the copyright holder of the original.
This is well established in international law. This page provides commentary on Xu Liu vs. Price Waterhouse LLP et. al, which illustrates a similar issue. Apart from this there are (several) cases in which the the rights to a motion picture derived from a book were limited (in terms of time) and not renewed: the distribution of the motion picture was found to be infringing, but in no case has the court found that the derivative work (the motion picture) is owned by the book's copyright holder.
The result is that SCO cannot claim ownership of Linux. All it can claim is that Linux is an infringing derivative, and that is therefore has a claim against anyone who has used and/or copied Linux.
Hi. Any country that has ratified the Berne convention or any more recent WIPO treaty will have had to enact law that requires copyright to vest in any qualifying creation. Publication is not necessary for copyright -- mere creation is sufficient. In fact, (first) publication is one of the exclusive rights enjoyed by the copyright holder.
You are of course correct, but you have to remember that this is written from a business perspective.
To a business "free" means gratis, and "free" source code that doesn't explicitly require royalty payments is believed to be completely gratis, forever, amen. This is why there is so much business concern and FUD about the GPL being viral: these liberal "open source" wankers have redefined the well-understand business term "free" into something to do with liberty, lulling innocent businesses into a false sense of profit opportunities. How inconsiderate.
Just trolling for anonymous chickens ;p
The big problem with any pay-per-send idea is spam economics. Somehow everyone believes that paying a poultry sum will scare spammers off, despite ongoing problems with spam calls, snail mail, SMSs, and the like. Charging money won't take away the spam.
A flowchart is an abstraction, and does not necessarily (in fact seldom does) describe software in its entirity.
A flowchart can cover the logical flow of a single function, a stateful class, an algorithm, a user interaction sequence, or any other level of granularity. The data required is global within that view of that part of the system -- that could translate in implementation to local, member, namespace or global variables.
Nothing in a flowchart requires the use of "goto" in implementation. The most common implementation of flowcharts (in my experience) uses a state engine, and can be developed in any language (including those without "goto").
The fact that a naive implemented in line-numbered BASIC may be easiest using "goto" and global variables doesn't detract from the fact that other language constructs like loops and subroutine calls, and various levels of scoping, can achieve the same result -- all described by the same abstract flowchart.
First, understand that "flowchart" is a concept, not a particular notation. It is, quite literally, a diagram that describes a logical flow that includes sequences and decision points. Here is a sample definition.
A flowchart is an abstraction, and does not necessarily (in fact seldom does) describe software in its entirity.
A flowchart can cover the logical flow of a single function, a stateful class, an algorithm, a user interaction sequence, or any other level of granularity. The data required is global within that view of that part of the system -- that could translate in implementation to local, member, namespace or global variables.
Nothing in a flowchart requires the use of "goto" in implementation. The most common implementation of flowcharts (in my experience) uses a state engine, and can be developed in any language (including those without "goto").
The fact that a naive implemented in line-numbered BASIC may be easiest using "goto" and global variables doesn't detract from the fact that other language constructs like loops and subroutine calls, and various levels of scoping, can achieve the same result -- all described by the same abstract flowchart.
First, understand that "flowchart" is a concept, not a particular notation. It is, quite literally, a diagram that describes a logical flow that includes sequences and decision points. Here is a sample definition.
Amazing how many people quote this crap without any understanding what they are saying.
First, understand that "flowchart" is a concept, not a particular notation. It is, quite literally, a diagram that describes a logical flow that includes sequences and decision points. Here is a sample definition. Search for "flowchart" and you will get hits on organisational structure, process management, Six Sigma, project management, and yes, software development. State and activity diagrams in UML are a particular notation for modern flowcharting.
Flowcharts remain a significantly powerful tool for various aspects of software design, especially user interaction sequences and state logic for UIs, as well as process modeling. They are essential in capturing conceptual business flows during analysis, as well as in describing algorithms in a visually obvious way (somewhere where pseudocode fails), even though they algorithm may not be implemented in that manner.
Flowcharts haven't been a particularly useful tool for program implementation for some time -- but they're still essential and actively used in design.
I've got to agree with this. In this interview Brandt (director of GoogleWatch) admits to spending two years optimising namebase.org for Google.
One of Brandt's major problems with Google is PageRank, which he believes is tyrannical rather than democratic. This shows a fundamental lack of understanding of democracy. The modern concept of "democracy" does not say that everyone is equal or has an equal say. It does say that everyone is equal before the Law, and that democracy is founded on the premise of citizens who are knowledgeable and capable of understanding complex concepts. It also says that common people (collectively) hold power.
So PageRank doesn't give an equal say to every web page out there. Web pages that are widely references are assumed to be "more knowledgable" regarding the topic(s) they cover, and thus a more likely source of information. Not a completely unreasonable assumption.
Brandt's concerns about privacy are, mostly, founded. But then, there's no such thing as a free lunch. Google is a massively valuable resource, and you get it gratis. So far Google has disclosed its privacy policies and not broken any promises, so users have agreed to their terms. If they don't like that ... don't use Google.
This is excellent advice (i.e. MOD UP).
It sounds like some areas of the Java solution are giving particular problems, in particular with respect to memory. If this functionality is provided by the application server, you need to look at alternatives (WebSphere, JBoss, etc). If it is provided by your custom-build CMS then profiling and limited refactoring to make use of object pools, etc, should take you a long way.
Most of the cost issues (apparently) relate to the application server and its host system; investigate the option to migrate to cheaper systems.
And a basic financial response: how much will it cost to scale the current solution? how much will it cost to develop the new solution (in particular bear in mind development infrastructure, salaries, and parallel deployment to prevent downtime in production)? how much will it cost to maintain the new solution as compared to the current solution? which solution best fits your business requirements (other than cost)?
A job interview is a very good place for an NDA, from a business perspective. You want to ensure you are getting the best candidate -- in order to do that you need to give the candidate as much information about your business as possible, ask questions, gauge the response.
Without an NDA, doing this could give away trade secrets (that's not only technology, it includes business practices, customers, competitors, suppliers) and other competitive information.
Your average NDA doesn't prevent you from disclosing where you work or went for an interview, but will prevent you from disclosing the package offered (e.g. to other employees) and from disclosing trade secrets or competitive information (to non-employees).
Any company that is NOT behaving like this either doesn't have a competitive advantage or secrets that its going to disclose to you in an interview, or doesn't care about its long-term viability.
What everyone seems to be missing in this discussion is that venture capital NDAs are not about technology and are not about secrecy. Very few startups (of any kind) use NDAs to protect their ideas from their business partners (and that sort of behaviour is ludicrous, as you describe).
An NDA is a business tool for protecting your investment in a business plan while trying to attract further investment, or while interacting with business partners who could reveal your competitive advantage.
There are a number of unscrupulous investors out there who will take the business plan presented by a startup and execute it themselves, cutting the people who came up with it out of the picture.
Note that I'm not talking about ideas here! Investors are not interested in ideas (unless they really are novel and profitable) -- they are interested in business plans that have been well researched and considered from marketing, financial, operational and strategic perspectives. In other words, a whole lot of investment (not just an idea) has already been put into a business plan.
The whole point of an NDA is to enable a startup to disclose all the relevant information to a potential business partner (a venture capatalist) without too much risk of being screwed. Its about keeping the secret of your competitive edge in the hands of those who need to know, and away from the competition.
Do you have the vaguest concept of what a "rules engine" is? Hint: its got little to do with input validation.
Your average rules engine has things like this: "Residential users pay a basic waster connection charge of 1080c which is exempt from sales tax and includes 50 litres of water free. The first 100 litres of water thereafter costs 2.6c per litre, after which the charge is 1.8c per litre up to 1000 litres, then 3.4c per litre. Insurance claims for burst pipes are only valid on accounts that pay 234c per month for the insurance and are not outstanding at the time of the claim; claims of up to 20000c are automatically approved, but anything beyond that must be approved by a supervisor and associated with an inspection report already submitted into the system."
Are we getting a clue yet? There is, surprisingly enough, a reason why system architects and system integrators have different job functions to database administrators.
Mmm ... I have a CDROM and CDRW, and have tried at least two other CDROMs that I borrowed from work. No luck. I can get most games to work if I keep a spare Windows 98 partition that has nothing installed except the current game I am playing. The problem seems to be some horrible OS / CPU (AMD Duron) combination rather than the CD drive (I've had the same problem with other games that work fine on another OS on the same system).
How exactly does your average home user download a 70Mb demo over a 56k modem ...?
... and that's a BIG if on the "restrictive copyright protections".
I recently bought myself a copy of Black & White. It was on a special and I picked it up for (the equivalent of) $9. It didn't work -- the copy protection doesn't like my system.
So I returned the game to the store, but got the "guilty until proven innocent, which is impossible to prove" treatment. That's a good time to accept the $9 loss and cut it there ... but I didn't.
Over the next week I spend around 12 hours fiddling with my system, downloading cracks, downloading emulators, downloading patches, in the vain hope of getting the damn game to work. And you know what? I've come to accept that the only way I'm going to get it to work is to cough up $1000 for a new computer.
Even if I had tried a demo version (is there one?) I couldn't have known that the copy protection on the real product would break it.
This is making some sweeping assumptions. First, that the data is stored in a SQL DBMS, or one that is extensible. Second, that the application you are integrating to allows something else to modify the database concurrently. Third, that the web front-end doesn't require real-time response from the "legacy" application (or that all the data is stored, versus calculated). Forth, that you can somehow access the DBMS.
Since many (esp. older) enterprise applications expect to own the database, they make assumptions that it hasn't been altered by other processes. Even when this isn't the case, few of these systems poll the database to detect changes so that you can effectively communicate with the application.
Let's take a real-world scenario: a bank wanted to deliver an intranet application for its consultants that calculated home loan repayments. To a bank this isn't a simple amortisation -- the quote has to be accurate and valid, which means that it has to use the business rules, current interest rates, special charges and everything else as done by the home loan application on the mainframe. The existing way to do this was to send a faxed request to the head office, have a special clerk enter a loan application into the mainframe (but not mark it active), get the response and fax it back.
Problem #1: the mainframe application was written in an archaic language using DB2. Problem #2: The business rules encoded into the application were largely undocumented -- the bank implicitly trusted any value they got from the application, even if they couldn't figure out how it was calculated. Problem #3: You can't simply query the database for the quote -- it has to be calculated using the appropriate application logic. Problem #4: You can't simply write the request into the database and expect it to be calculated -- the application doesn't work like that. Problem #5: Talking to the mainframe.
So how do you solve the problem? Well, this wasn't the only work going on in the bank, so they deployed Message Oriented Middleware as an integration technology (common in large enterprises). Intranet applications accessed objects that wrapped access to the MoM requests and responses. In the case of the home loan system, they had to run the terminal client for the mainframe application in a virtual environment, simulate keystrokes and directly read the screen in order to achieve input and output, and then write a further integration layer about that to expose "functions" that could be meaningfully accessed via the MoM.
None of which can be done by integrating to a DBMS.
Because in enterprises serious about their data, all data access is via a rules engine. This prevents the current global problem of having business rules hacked into literally dozens of places in your system, and completely unmaintainable (let alone not even knowing what your business rules are).
I should thank you though. It is people who think like you that drive a multi-billion dollar reverse engineering industry to recover system design and business rules.
I've got to agree with this. Reading Greenspun's blog I was left pondering how to start responding to something so completely wrong.
The article implies a lack of understanding of the JSP paradigm. Sure, binding variables to a relational database is tough. So if you insist on doing that, use JSP tags. But that's not the point of Java -- you should be access instance methods from a JSP page, and those instances can access any data source they choose.
VB and ASP are intended for developing front-ends to primarily relational data, so they make it pretty easy to accomplish. The fact that they make it easy doesn't mean that you can use the same design and technique to deliver a scalable, maintainable web site. All the current theory says take the pain up front and put in a decent template system, and never put code in your page.
"People who are serious about getting the job done on time and under budget" will get the requirements first, and not making sweeping bullshit generalisations. There is a huge problem in the industry at the moment with IS departments trying to coalesce the functionality of dozens of specific-purpose VB applications into one enterprise system. The size of the project, requirement for scalability, expected lifetime and regularity of changes, systems integration issues, cost, stability, customer technology preference and other technical and non-technical issues will all influence the choice of a development environment.