Third-party source scripts have been used forever, most notably for ad servers. You break that and you have to provide an alternative way of including dynamic ads on the page. Remember, the Web still runs on advertising dollars.
Looks like SpellingCow was lifted from another project without attribution (http://me.eae.net/archive/2006/09/04/spellingcow/ ). This whole post/project smells fishy.
But worse yet, the argument that developing web applications with Ajax is hard is a straw man. Imagine you had to design a desktop GUI by twiddling with the screen bits directly or, worse yet, implementing application logic in the graphics controller. Blech!
If you want to simplify how you write webapps using Ajax, try a server side framework like Echo2 or ZK. These allow you to write webapps much like a desktop GUI while working in only one language context -- Java on the Server side.
This isn't a problem that is unique to open source, of course, but it isn't one that is focused on a great deal, with the exception of frameworks like Ruby on Rails.
Open Laszlo is a very slick, open source platform for writing Flash apps. They're also working on producing a DHTML/Ajax target for it -- write once, run with multiple runtimes.
Sometimes its not feasible to shut down an application because its vulnerable to spam or sql injection. The Apache mod_security module can provide a stopgap until you can fix the app. Probably a good idea to have it in place in any case.
Actually, DWR exposes POJO's on the server via Javascript peers in the client.
GWT, on the other hand, is really two things in one: first, it compiles Java code to Javascript, much like javac converts Java to bytecode; big portions of java.lang and java.util are available to the developer. Second, it allows you to execute and debug your code in a JVM. The idea is that the code in the JVM will behave exactly like the compiled Javascript code in the browser.
I think the point of GWT is that good Java programmers are easy to find whereas good Javascript/CSS/XHTML programmers are hard to find. This way they can write Java and produce Javascript. For more on GWT, see here.
Second, I've used Morfik WebOS ApplicationBuilder (did I get the caps right?;-) for some evaluation POC's and have some familiarity with it. Can't say I'm a big fan of it's kludgy IDE interface. Right click doesn't bring up anything useful so you're making trips to the top menu bar all the time. Hopefully, they'll clean it up soon.
It (Morfik) also isn't the sort of thing you'd want to write a little sidebar widget in, which is about all GWT seems to be good for at the moment.
Lastly, for me the choice is really about supportability. If I'm going to buy into a proprietary IDE/Framework, I'm going to pick something by a large, established company. So TibCo GI and GWT are worth considering, Morfik is not.
Re:Ajax web framework support
on
Head Rush Ajax
·
· Score: 1
Donald Knuth advocated something calle "Literate Programming" (see http://www.literateprogramming.com/). To quote from DK:
I believe that the time is ripe for significantly better documentation of programs, and that we can best achieve this by considering programs to be works of literature. Hence, my title: "Literate Programming."
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other.
The idea is that the code and documentation are written together and that you use a tool to "weave" a document from the source for a human to read and another tool to "tangle" that same source into computer compilable source code.
I've written quite a few large scale C and C++ LP's in my time using the tools Nuweb and Funnelweb. Those programs I wrote are all still in use these many years later and maintained by developers many employment generations removed from me.
Since moving into OOAD, I've gotten way from that practice, since the IDE's I use aren't really suited for doing Literate Programming. Maybe it's time to take another look.
Oof! Undecidable is not the same thing as not computable. Undecidable, to simplify, means that a statement has no truth value in a system of axioms, i.e. its positive or negative could be added as an axiom and the system would still be consistent.
Not computable, by contrast, means we can't write a program to compute correct results for all inputs. So, while every program either halts or it doesn't, we can't write a program that determines whether it does or it doesn't. The Halting Problem is thus decidable, i.e. the Theorem "The characteristic function for the set of all non-halting turing machines is computable" is false and thus has a truth value.
Whew. Still, all digital computers are actually FSA's, since they don't have an infinite tape, so the halting problem there is computable.:-)
As I point out in another post, what makes all this possible is Infiniband. Imagine 10GB ethernet and put the extreme turbo on. With GB ethernet (not even 10GB), you've got a slow, data bound cluster that can't do squat. That's why all the high performance computing guys are using Infiniband.
This kind of stuff has been around before, but it wasn't cheap. That's why the cheap super computers are popping up now.
PC's, Apples, who cares. What made all this stuff possible, both technically and economically, is Infiniband. What is Infiniband? Well, think of all those special purpose, packet switched data buses and high speed networks of the past (mucho $$) and make them an industry standard (less $$) and you've got infiniband. Blows 10GB ethernet away.
That's what all the HPC (high performance computing) guys have been using to glue their clusters together. See www.infinibandta.org for more info.
Will Infiniband make it to a server near you? Only time and the economy will tell.
Your argument is good as far as it goes, but you make one crucial oversight: in global trade liberalization there will be winners and loser. In the long term it all evens out, but in the short term it is the role of government to implement public policies to help the losers. That means investing more in retraining, relocation and other programs to help affected workers and businesses.
Someone else has addressed the "paradox of thrift." Just look to Japan for an example of this. While many have correctly pointed the finger at their corrupt banking system, corporate cost cutting had at least as much to do with the collapse of their economy and the current bout of deflation.
If the US goes down this road and our economy implodes, a world that depends on American consumers as its engine of prosperity will suffer. That includes India and China.
Already happened. Correspondence or "postal" chess has seen the use of computers -- at first in a clandestine fashion, then legally -- for quite some time.
Definitely the computer + human is better than a human, but in postal, a human kicks the computers ass.
That's because the extra time isn't so valuable for a computer, but a human can really scope out all the heuristic nuances of a position.
There are some limits on how deep a computer can look. A human being can sometimes see 20, 30, even 70 moves deep at a flash. This is especially true of the endgame. There are some endgames involving just a few pieces that take 60+ moves to work out to a win. Using some simple principles, a human being can just "see" these. A computer would need to know that this is a position where the principles should be applied.
Sort of analogous to a proof, another area where brute force usually loses out to intuition.
As for the complexity of chess, each position has on average 30 (yeah, yeah, very rough guesstimate) possible moves. With various techniques (alpha-beta pruning, etc.), you can bring down the complexity to search n-ply deep to 30^(n/2). Looking at Deep Blue, which did 200 million moves per second, it could do between 14 and 15 ply in 3 minutes. (30 ^ 15/2) > (3 * 60 * 2 * 10 ^ 8) = 180 seconds * 200 mill > (30 ^ 14/2). With extensions, such as quiescence (keep making moves until there are no more captures, etc.), that can go a bit deeper even.
That's pretty good, but not so good in the openings, where you really need to see much farther ahead to make good decisions, and not so good in the endgames, where you sometimes need to see 40 moves deep.
Actually, at move 5, the program is still in its database of canned openings. The IM's or GM's that were in charge of weeding out closed or other disadvantageous positions from a computer standpoint didn't do a good job.
I'll praise the machines when they can play without an opening book.
/. paranoia strikes again. All this information is available in the Windows Update Privacy Statement. I guess it's good that someone bothered to verify, but this "scoop" is not much of a shocker.
Interesting that you mention IBM. Before MS, there was IBM, that big ugly monopoly we loved to hate. I grew up in Binghamton, NY, the birthplace of Big Blue, so maybe I'm just too brainwashed, but I still fall down laughing every time I see an IBM Linux ad.
Still, interesting that you mention IBM. How did they end up getting dethroned? They didn't see the desktop as a replacement until it was too late.
MS is paranoid. They view anything and everything as a threat. Not until the current generation of MS execs are cold and dead will MS forget the lesson of IBM.
As a software vendor, how can you use open source to be more competitive? A few ways come to mind:
1. Use it to reduce cost for producing base SW on top of which you sell your value adds. Example: Sun GPL'ing tomcat.
2. Use it to stay in an unprofitable market so as to add credibility. Example: IBM stays in the OS/Hardware business with Linux.
3. Use it to undercut a competitor in one of their strategic markets. Example: hmmm, help me out.
Keeping in mind that Open Source works best when user=developer, point 3 suggests a plan: contribute massively to open source efforts where SUN, Oracle, IBM and Apple compete, but Microsoft does not.
So, MS could contribute to Open Source JAVA on non-Microsoft platforms, undercutting anyone trying to make a buck. Of course, if JAVA succeeds wildly, without anyone making any money off of it, it could still result in competing substitute products for MS. Risky.
I'm a big fan of exploit detection tools. If you don't have exploit code, you can't test the efficacy of the fixes.
First, what sane admin would patch a system and then not test to see if it in fact had been fixed?
Second, it's far more cost and time effective to run a black box exploit detection script against a heterogenous network environment than trying to manage a diagnose and patch effort from a white box administrator perspective, -- in short, try to map every machine and os and package version to the appropriate fixes.
Third-party source scripts have been used forever, most notably for ad servers. You break that and you have to provide an alternative way of including dynamic ads on the page. Remember, the Web still runs on advertising dollars.
Looks like SpellingCow was lifted from another project without attribution (http://me.eae.net/archive/2006/09/04/spellingcow/ ). This whole post/project smells fishy.
Ouch. Adding a script tag dynamically is old hat in Ajax. See the DOM Based On-Demand Javascript pattern.
n g
In fact, there are a number of project under way that use dynamic script injection to emulate cross-domain XHR. See http://ajaxian.com/archives/jsonp-json-with-paddi
But worse yet, the argument that developing web applications with Ajax is hard is a straw man. Imagine you had to design a desktop GUI by twiddling with the screen bits directly or, worse yet, implementing application logic in the graphics controller. Blech!
That's the situation with Ajax and webapps right now: writing code in the wrong places and at the wrong level of abstraction.
If you want to simplify how you write webapps using Ajax, try a server side framework like Echo2 or ZK. These allow you to write webapps much like a desktop GUI while working in only one language context -- Java on the Server side.
As I see it there are three reasons for AJAX's success:
1. It enables a paradigm shift from developing forms based webapps to component GUI webapps.
2. Developing webapps this way is more efficient and less error prone.
3. Both of the above reasons drive many companies to adopt Ajax into their software and change their business model, to SaaS, for example.
You can only hold 7+-2 things in your short term memory at once. This limits your ability to learn and problem solve. Complex environments increase the number of concepts you have to juggle in your brain at once -- the cognitive load -- and make errors go up and productivity go down.
This isn't a problem that is unique to open source, of course, but it isn't one that is focused on a great deal, with the exception of frameworks like Ruby on Rails.
Open Laszlo is a very slick, open source platform for writing Flash apps. They're also working on producing a DHTML/Ajax target for it -- write once, run with multiple runtimes.
Last, you're already starting to see the melding of Ajax and Flash.
Sometimes its not feasible to shut down an application because its vulnerable to spam or sql injection. The Apache mod_security module can provide a stopgap until you can fix the app. Probably a good idea to have it in place in any case.
Actually, DWR exposes POJO's on the server via Javascript peers in the client.
GWT, on the other hand, is really two things in one: first, it compiles Java code to Javascript, much like javac converts Java to bytecode; big portions of java.lang and java.util are available to the developer. Second, it allows you to execute and debug your code in a JVM. The idea is that the code in the JVM will behave exactly like the compiled Javascript code in the browser.
I think the point of GWT is that good Java programmers are easy to find whereas good Javascript/CSS/XHTML programmers are hard to find. This way they can write Java and produce Javascript. For more on GWT, see here.
First, can anyone even find the patent application?
Second, I've used Morfik WebOS ApplicationBuilder (did I get the caps right? ;-) for some evaluation POC's and have some familiarity with it. Can't say I'm a big fan of it's kludgy IDE interface. Right click doesn't bring up anything useful so you're making trips to the top menu bar all the time. Hopefully, they'll clean it up soon.
It (Morfik) also isn't the sort of thing you'd want to write a little sidebar widget in, which is about all GWT seems to be good for at the moment.
Lastly, for me the choice is really about supportability. If I'm going to buy into a proprietary IDE/Framework, I'm going to pick something by a large, established company. So TibCo GI and GWT are worth considering, Morfik is not.
Not one of our shills; they're all accounted for.
-Dietrich
I believe that the time is ripe for significantly better documentation of programs, and that we can best achieve this by considering programs to be works of literature. Hence, my title: "Literate Programming."
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other.
The idea is that the code and documentation are written together and that you use a tool to "weave" a document from the source for a human to read and another tool to "tangle" that same source into computer compilable source code.
I've written quite a few large scale C and C++ LP's in my time using the tools Nuweb and Funnelweb. Those programs I wrote are all still in use these many years later and maintained by developers many employment generations removed from me. Since moving into OOAD, I've gotten way from that practice, since the IDE's I use aren't really suited for doing Literate Programming. Maybe it's time to take another look.
Oof! Undecidable is not the same thing as not computable. Undecidable, to simplify, means that a statement has no truth value in a system of axioms, i.e. its positive or negative could be added as an axiom and the system would still be consistent.
:-)
Not computable, by contrast, means we can't write a program to compute correct results for all inputs. So, while every program either halts or it doesn't, we can't write a program that determines whether it does or it doesn't. The Halting Problem is thus decidable, i.e. the Theorem "The characteristic function for the set of all non-halting turing machines is computable" is false and thus has a truth value.
Whew. Still, all digital computers are actually FSA's, since they don't have an infinite tape, so the halting problem there is computable.
As I point out in another post, what makes all this possible is Infiniband. Imagine 10GB ethernet and put the extreme turbo on. With GB ethernet (not even 10GB), you've got a slow, data bound cluster that can't do squat. That's why all the high performance computing guys are using Infiniband.
This kind of stuff has been around before, but it wasn't cheap. That's why the cheap super computers are popping up now.
PC's, Apples, who cares. What made all this stuff possible, both technically and economically, is Infiniband. What is Infiniband? Well, think of all those special purpose, packet switched data buses and high speed networks of the past (mucho $$) and make them an industry standard (less $$) and you've got infiniband. Blows 10GB ethernet away.
That's what all the HPC (high performance computing) guys have been using to glue their clusters together. See www.infinibandta.org for more info.
Will Infiniband make it to a server near you? Only time and the economy will tell.
Your argument is good as far as it goes, but you make one crucial oversight: in global trade liberalization there will be winners and loser. In the long term it all evens out, but in the short term it is the role of government to implement public policies to help the losers. That means investing more in retraining, relocation and other programs to help affected workers and businesses.
Someone else has addressed the "paradox of thrift." Just look to Japan for an example of this. While many have correctly pointed the finger at their corrupt banking system, corporate cost cutting had at least as much to do with the collapse of their economy and the current bout of deflation.
If the US goes down this road and our economy implodes, a world that depends on American consumers as its engine of prosperity will suffer. That includes India and China.
Already happened. Correspondence or "postal" chess has seen the use of computers -- at first in a clandestine fashion, then legally -- for quite some time.
Definitely the computer + human is better than a human, but in postal, a human kicks the computers ass.
That's because the extra time isn't so valuable for a computer, but a human can really scope out all the heuristic nuances of a position.
Just to shed a little more light on this:
There are some limits on how deep a computer can look. A human being can sometimes see 20, 30, even 70 moves deep at a flash. This is especially true of the endgame. There are some endgames involving just a few pieces that take 60+ moves to work out to a win. Using some simple principles, a human being can just "see" these. A computer would need to know that this is a position where the principles should be applied.
Sort of analogous to a proof, another area where brute force usually loses out to intuition.
As for the complexity of chess, each position has on average 30 (yeah, yeah, very rough guesstimate) possible moves. With various techniques (alpha-beta pruning, etc.), you can bring down the complexity to search n-ply deep to 30^(n/2). Looking at Deep Blue, which did 200 million moves per second, it could do between 14 and 15 ply in 3 minutes. (30 ^ 15/2) > (3 * 60 * 2 * 10 ^ 8) = 180 seconds * 200 mill > (30 ^ 14/2). With extensions, such as quiescence (keep making moves until there are no more captures, etc.), that can go a bit deeper even.
That's pretty good, but not so good in the openings, where you really need to see much farther ahead to make good decisions, and not so good in the endgames, where you sometimes need to see 40 moves deep.
Actually, at move 5, the program is still in its database of canned openings. The IM's or GM's that were in charge of weeding out closed or other disadvantageous positions from a computer standpoint didn't do a good job.
I'll praise the machines when they can play without an opening book.
/. paranoia strikes again. All this information is available in the Windows Update Privacy Statement. I guess it's good that someone bothered to verify, but this "scoop" is not much of a shocker.
Another good book for learning higher math is How to Read and Do Proofs: An Introduction to Mathematical Thought Processes . Definitely not for beginners, but an excellent introduction to "real" math. You don't need calculus, but you need to know what Real numbers and Integers are.
Interesting that you mention IBM. Before MS, there was IBM, that big ugly monopoly we loved to hate. I grew up in Binghamton, NY, the birthplace of Big Blue, so maybe I'm just too brainwashed, but I still fall down laughing every time I see an IBM Linux ad.
Still, interesting that you mention IBM. How did they end up getting dethroned? They didn't see the desktop as a replacement until it was too late.
MS is paranoid. They view anything and everything as a threat. Not until the current generation of MS execs are cold and dead will MS forget the lesson of IBM.
As a software vendor, how can you use open source to be more competitive? A few ways come to mind:
1. Use it to reduce cost for producing base SW on top of which you sell your value adds. Example: Sun GPL'ing tomcat.
2. Use it to stay in an unprofitable market so as to add credibility. Example: IBM stays in the OS/Hardware business with Linux.
3. Use it to undercut a competitor in one of their strategic markets. Example: hmmm, help me out.
Keeping in mind that Open Source works best when user=developer, point 3 suggests a plan: contribute massively to open source efforts where SUN, Oracle, IBM and Apple compete, but Microsoft does not.
So, MS could contribute to Open Source JAVA on non-Microsoft platforms, undercutting anyone trying to make a buck. Of course, if JAVA succeeds wildly, without anyone making any money off of it, it could still result in competing substitute products for MS. Risky.
I'm a big fan of exploit detection tools. If you don't have exploit code, you can't test the efficacy of the fixes.
First, what sane admin would patch a system and then not test to see if it in fact had been fixed?
Second, it's far more cost and time effective to run a black box exploit detection script against a heterogenous network environment than trying to manage a diagnose and patch effort from a white box administrator perspective, -- in short, try to map every machine and os and package version to the appropriate fixes.
DJK