As a Canadian, although I do sympathize with those in China trying to get around their censorship, I am concerned with one country developing a tool with the explicit stated goal of trying to undermine an internal regulation of another country. In effect, it provides the user with information which is not allowed in their own country.
What would the Canadian government think if people in countries with different drug laws started intentionally mailing their drugs, which they consider legal, into Canada? Better yet, what would Canada think if such an action was sponsored by the government of the offending country (Psiphon is coming out of a publicly funded university in Canada).
As another example, currently a hot topic up here is gun violence. Many of the guns get into Canada from the US, where the gun laws are not as strict. Certainly, and rightfully so, the Canadian government would be offended if the US government funded a program with the goal of getting more guns into Canada.
I agree both drugs and guns *can* be much more harmful than information, but if the consequence of having that information is jail sentence in a Chinese prison, then enabling them to access it is something that should not be taken lightly.
Thanks. Sometimes I really don't understand the censoring, I mean mod system here. Our audiobooks are currently freely downloadable, we have no advertising on our side, and it seems reasonable and on topic that if someone asks about Ajax to point them to our material. After all, this whole thread is about an article from a huge, profitable corporation. Maybe instead of audiobooks, I should call them "audicles", and then it will be ok to mention them when people are looking for information.
Every Ajax application uses the XMLHttpRequest object, so you'll want to be intimately familiar with it to make your Ajax applications perform and perform well.
I think this is true right now, at least to some extent, but as frameworks solidify and become proven, there will be less benefit to being "intimately familiar" with the XMLHttpRequest object. Of course, knowing more about the underlying technology can't hurt, and you will need to know them if you are the one writing a framework.
Sure, and some computational tools, the early,early,early forerunners of modern computers, are even much older. For example, from
http://en.wikipedia.org/wiki/Abacus
"The origins of the abacus are disputed, suggestions including invention in Babylonia and in China, to have taken place between 2400 BC and 300 BC."
Granted, there has been some improvement since then.
This is interesting stuff. I would like to learn more about the algorithms they use to analyze their data - the article has very few details. It is neat how systems like this are becoming favored over traditional human analysts (or at least reducing the need for people).
I remember back in grad school in the late 90s I worked on a major project to design an intelligent agent based system including the same functionality, but, in addition to pulling information off the internet, it could also take into account whatever other information could be gathered and interfaced into it (for example, there is also a lot of content on TV which could be fed into a system, in addition to the online data). It was a design project though and not implemented, perhaps I will need to resurrect it!
I do think the whole area of quantitative or at least semi-quantitative analysis of information, both textual and numerical, is going to explode over the next few years, driven by vast amounts of incredibly cheap computing power and bandwidth. Computer applications do amazing stuff right now, but five years from now truly "intelligent" applications will exist. The term "artificial intelligence" has fallen out of fashion, perhaps a sign of how common place these systems have now become.
As an example, our local phone company has a voice recognition system which actually works reasonably well, much, much better than anything 5-10 years ago. We are certainly making progress.
I am amazed at the number of repetitive articles on slashdot regarding censorship in China. It is an important issue, but it does seem the amount of postings/headlines it receives is much larger than what it deserves. Why don't we see similar amounts of postings on some other worthwhile social agendas? Here are a few suggestions, some of which overlap and in no particular order:
1. universal health care for everyone
2. preventing loss of life in Iraq and in other conflicts around the world.
3. ending world hunger and poverty
4. learning to embrace others, even if they are different
5. affordability of quality education
6. proliferation, continued research and attempted monopolization of WMD
7. reducing death and injury from car accidents
8. improving the environment
9. reducing risk of cancer
10. encouraging healthier lifestyles, like more exercise and eating well
This is good to see. Reuse for GUI widgets is one area where reuse has had an impact, in fact, GUI widgets are the most commonly reused components. There are a number of vendors for things like VB controls.
The components and patterns Yahoo has released will speed up the development of feature rich sites for other organizations.
When talking to another person, typically more information is conveyed non-verbally (including body language and spoken tone) than through the meaning of the actual words that are spoken.
This is one of the reasons why, for any profession where communication is important, it is difficult to replace face-to-face meetings with telephone calls or emails.
Of course, although body langauge and tone provide additional information, specific factual information must be conveyed by words and/or diagrams.
It will be interesting to see what comes out of this. There is much work needed to be done to improve computer security and perhaps events like this will raise public profile (and funding).
People truly rely on the internet now. Perhaps it is not as important as the telephone system, at least in terms of preserving life and limb, but the economic damage from a sustained, widespread internet outage would be tremendous.
On the plus side, if the internet was unavailable, I think many people would at least temporarily rediscover the real world.
I am not sure why another company would want to buy JBoss.
In its time it was very innovative with two things. First, making EJB type properties available to POJOs (properties like security, transactions, remoting). Second, they pioneered the business model of selling services based on a free product, which encouraged very wide-spread adoption. Both of these were controversial at the time and JBoss should be applauded for showing us the way.
However, the problem is now many other companies do the same thing. Big application server companies give away free copies, at least for development teams. Java itself is moving toward making EJB type properties available to POJOs. On top of all this, over the last few years there has been a clear trend to move away from EJBs, favoring instead something like a Tomcat/Spring approach for J2EE applications, and, in other cases, the even lighter LAMP stack.
It seems to me a few years ago JBoss would have been a great purchase, but right now I am not so sure.
Wow, I am amazed google will upload all the files on your machine. That must really chew through a lot of bandwidth, especially if they ever expand beyond just "text-based documents" (whatever that means. I write and record audiobooks, does that mean the resulting mp3s are "text-based"?). Also, most ISPs have some bandwidth limitation (I think mine is currently something like 3GB a month), how are they going to squeeze through my 100+GB of data to get it onto their servers?
Google is taking quite a risk of being a custodian of all that personal data.
We are working on audio content which we distribute as simple MP3 files, nothing fancy. I think ultimately the courts need to decide that users should have the right to use the music (or other content) they purchase wherever they want, as long as it is for their own personal use. I have dropped memberships from online services because they would not give out their content as MP3s. If enough people did this then companies will eventually distribute as MP3s (or some other standard which should work on basically all players).
Following the crowd probably evolved as a pretty good way of shortening the decision making process. If someone else ate a berry or mushroom and didn't get sick or die, then there was a pretty good chance that I could eat it too and would be ok. This saves a lot of time and energy instead of having to sort through everything by yourself.
I can see if this is restricted to information which is already public, then it is much harder to make an argument that it is invasion of privacy.
On the other hand, it is certainly another step along the way to increasing surveillance on the general population, and I can see they would ultimately want to combine this information with other information which is not public, like credit card purchases or wiretaps.
Given the size of the deficit, combined with google not releasing search history data, perhaps they should develop and launch their own search engine and try generate some revenue!
Demarco and Lister's Peopleware book has a good section on the importance of a quiet workspace. In a study they quote (this one from Cornell in the 1960s), researchers split a group of computer science students into two groups, the first group listened to music through headphones and the second group was in a silent room. Each group was given the same programming problem, which consisted of a series of mathematical operations, to implement from a specification. The speed and accuracy of the programming was about the same in each group, but, the assignment itself was a trick question - the end result was that the output number was the same as in the input. And, of those that realized this, the overwhelming majority came from the quiet room.
Most "technical" work uses the left side of the brain, I suppose leaving the right side of the brain free to listen to music to monitor the system. But, every so often, even in what is considered "technical" work, a person needs to be creative, and it would be unfortunate if at that point in time your right side of the brain is off monitoring the system.
Of course, if multitasking is so important, audio content is really the only content which has the potential for effective multitasking.
Apple's Ipod boom can hardly be sustained unless it can head off competition from PDAs and smartphones that can pack music players along with a host a other functions.
This can go both ways. I don't see any reason why Apple couldn't start putting some of those "other functions" into the iPod. Brand recognition is huge part of having a successful product, and, with the iPod brand, Apple has built a strong foundation.
I am not an expert on this, but in natural ecosystems, populations are often cyclic. Populations, and their consumption of resources, rise PAST the level that their natural resources will allow them to sustain, and then populations crash. There is always an overshoot and there is always a messy correction. It is very optimistic to think it will be any different with people and our natural environment, and this goes way beyond economics or planned economies or free economies. Economies are not "free", they are constained by physical and biological laws, many of which we don't know yet or understand.
I used to feel the same way, that economics would just sort it out. Since then I have read more, and unfortunately, as any student with a background in history would have known, when the environment and physical systems are involved, economics simply does *not* work. Physical/biological systems and the laws they work under are often swift and brutal and they do not care about economic "cost" or "benefit".
I suppose at 0.6mm thick and with "aircraft grade adhesive" they must stick very well, but I still can't shake the image of these going flying off while driving on the expressway. Certainly a step in the right direction though.
Google has done a great job positioning themselves between consumers and basically anything they want to purchase. If you think about what a consumer needs to do when they make a purchase, two key steps are first to find something you want and then secondly to pay for it.
Through their search engine and paid advertising, they basically own Step 1. They act like a gatekeeper, deciding who sees what and really having a tremendous impact on the success of at least some businesses.
As for the second step of paying for an item, they don't yet have a presence, so this is the logical next step. When their system goes forward, I suspect eventually a little slice of every transaction will go into google's pocket.
Eventually people will start talking about paying a "google tax". Businesses will need to recover the expense of advertising and the expense of the transaction. Guess who they will recover it from?
I do think there is potential in the overall design you are choosing, with a focus on expecting stuff to break and then simply making the system robust enough that if one module fails it is either restarted or another duplicate takes over and processing still continues.
If you go with restarting, and performance is critical, one of the important aspects will be to help you restart a downed module efficiently. From the GoF, the Memento pattern for storing an object's state may help you. The Command pattern may also be of benefit. For example, if processing something fails, you may only want to retry a certain number of times, in case there is a systematic reason for the failure. This type of functionality can be easily implemented using the Command pattern.
Also, although I have not read it myself, you may get some good ideas out of "Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects". I read the first volume of this series and found it to be a great reference.
My comments are focussed on the "Design Patterns" part of your question. What references have others found useful specifically for building robust software?
I have all too often seen these supposedly robust custom written systems degenerate into a big pile of sh*t which then requires much work to get fixed up. I would strongly recommend keeping close track on the status and quality of your project, and, at the first sign of slippage, particularly if you hear people saying "stuff just doesn't work", get some serious professional help if you want the project to succeed.
As a Canadian, although I do sympathize with those in China trying to get around their censorship, I am concerned with one country developing a tool with the explicit stated goal of trying to undermine an internal regulation of another country. In effect, it provides the user with information which is not allowed in their own country.
What would the Canadian government think if people in countries with different drug laws started intentionally mailing their drugs, which they consider legal, into Canada? Better yet, what would Canada think if such an action was sponsored by the government of the offending country (Psiphon is coming out of a publicly funded university in Canada).
As another example, currently a hot topic up here is gun violence. Many of the guns get into Canada from the US, where the gun laws are not as strict. Certainly, and rightfully so, the Canadian government would be offended if the US government funded a program with the goal of getting more guns into Canada.
I agree both drugs and guns *can* be much more harmful than information, but if the consequence of having that information is jail sentence in a Chinese prison, then enabling them to access it is something that should not be taken lightly.
Thanks. Sometimes I really don't understand the censoring, I mean mod system here. Our audiobooks are currently freely downloadable, we have no advertising on our side, and it seems reasonable and on topic that if someone asks about Ajax to point them to our material. After all, this whole thread is about an article from a huge, profitable corporation. Maybe instead of audiobooks, I should call them "audicles", and then it will be ok to mention them when people are looking for information.
Anyway, thanks again.
Every Ajax application uses the XMLHttpRequest object, so you'll want to be intimately familiar with it to make your Ajax applications perform and perform well.
I think this is true right now, at least to some extent, but as frameworks solidify and become proven, there will be less benefit to being "intimately familiar" with the XMLHttpRequest object. Of course, knowing more about the underlying technology can't hurt, and you will need to know them if you are the one writing a framework.
For a very good source on frameworks, take a look at http://ajaxpatterns.org/Ajax_Frameworks
If you want a one hour summary, take a listen to our most recent audiobook at http://www.developeradvantage.com/products.html . It's free for now.
Sure, and some computational tools, the early,early,early forerunners of modern computers, are even much older. For example, from http://en.wikipedia.org/wiki/Abacus
"The origins of the abacus are disputed, suggestions including invention in Babylonia and in China, to have taken place between 2400 BC and 300 BC."
Granted, there has been some improvement since then.
This is interesting stuff. I would like to learn more about the algorithms they use to analyze their data - the article has very few details. It is neat how systems like this are becoming favored over traditional human analysts (or at least reducing the need for people).
I remember back in grad school in the late 90s I worked on a major project to design an intelligent agent based system including the same functionality, but, in addition to pulling information off the internet, it could also take into account whatever other information could be gathered and interfaced into it (for example, there is also a lot of content on TV which could be fed into a system, in addition to the online data). It was a design project though and not implemented, perhaps I will need to resurrect it!
I do think the whole area of quantitative or at least semi-quantitative analysis of information, both textual and numerical, is going to explode over the next few years, driven by vast amounts of incredibly cheap computing power and bandwidth. Computer applications do amazing stuff right now, but five years from now truly "intelligent" applications will exist. The term "artificial intelligence" has fallen out of fashion, perhaps a sign of how common place these systems have now become.
As an example, our local phone company has a voice recognition system which actually works reasonably well, much, much better than anything 5-10 years ago. We are certainly making progress.
I am amazed at the number of repetitive articles on slashdot regarding censorship in China. It is an important issue, but it does seem the amount of postings/headlines it receives is much larger than what it deserves. Why don't we see similar amounts of postings on some other worthwhile social agendas? Here are a few suggestions, some of which overlap and in no particular order:
1. universal health care for everyone
2. preventing loss of life in Iraq and in other conflicts around the world.
3. ending world hunger and poverty
4. learning to embrace others, even if they are different
5. affordability of quality education
6. proliferation, continued research and attempted monopolization of WMD
7. reducing death and injury from car accidents
8. improving the environment
9. reducing risk of cancer
10. encouraging healthier lifestyles, like more exercise and eating well
This is good to see. Reuse for GUI widgets is one area where reuse has had an impact, in fact, GUI widgets are the most commonly reused components. There are a number of vendors for things like VB controls.
The components and patterns Yahoo has released will speed up the development of feature rich sites for other organizations.
When talking to another person, typically more information is conveyed non-verbally (including body language and spoken tone) than through the meaning of the actual words that are spoken.
This is one of the reasons why, for any profession where communication is important, it is difficult to replace face-to-face meetings with telephone calls or emails.
Of course, although body langauge and tone provide additional information, specific factual information must be conveyed by words and/or diagrams.
It will be interesting to see what comes out of this. There is much work needed to be done to improve computer security and perhaps events like this will raise public profile (and funding).
People truly rely on the internet now. Perhaps it is not as important as the telephone system, at least in terms of preserving life and limb, but the economic damage from a sustained, widespread internet outage would be tremendous.
On the plus side, if the internet was unavailable, I think many people would at least temporarily rediscover the real world.
Tomcat is also listed as one of "their" products.
I am not sure why another company would want to buy JBoss.
In its time it was very innovative with two things. First, making EJB type properties available to POJOs (properties like security, transactions, remoting). Second, they pioneered the business model of selling services based on a free product, which encouraged very wide-spread adoption. Both of these were controversial at the time and JBoss should be applauded for showing us the way.
However, the problem is now many other companies do the same thing. Big application server companies give away free copies, at least for development teams. Java itself is moving toward making EJB type properties available to POJOs. On top of all this, over the last few years there has been a clear trend to move away from EJBs, favoring instead something like a Tomcat/Spring approach for J2EE applications, and, in other cases, the even lighter LAMP stack.
It seems to me a few years ago JBoss would have been a great purchase, but right now I am not so sure.
Anyone out there know what kind of severance packages these employees will get?
Wow, I am amazed google will upload all the files on your machine. That must really chew through a lot of bandwidth, especially if they ever expand beyond just "text-based documents" (whatever that means. I write and record audiobooks, does that mean the resulting mp3s are "text-based"?). Also, most ISPs have some bandwidth limitation (I think mine is currently something like 3GB a month), how are they going to squeeze through my 100+GB of data to get it onto their servers?
Google is taking quite a risk of being a custodian of all that personal data.
We are working on audio content which we distribute as simple MP3 files, nothing fancy. I think ultimately the courts need to decide that users should have the right to use the music (or other content) they purchase wherever they want, as long as it is for their own personal use. I have dropped memberships from online services because they would not give out their content as MP3s. If enough people did this then companies will eventually distribute as MP3s (or some other standard which should work on basically all players).
Following the crowd probably evolved as a pretty good way of shortening the decision making process. If someone else ate a berry or mushroom and didn't get sick or die, then there was a pretty good chance that I could eat it too and would be ok. This saves a lot of time and energy instead of having to sort through everything by yourself.
I can see if this is restricted to information which is already public, then it is much harder to make an argument that it is invasion of privacy.
On the other hand, it is certainly another step along the way to increasing surveillance on the general population, and I can see they would ultimately want to combine this information with other information which is not public, like credit card purchases or wiretaps.
Given the size of the deficit, combined with google not releasing search history data, perhaps they should develop and launch their own search engine and try generate some revenue!
Demarco and Lister's Peopleware book has a good section on the importance of a quiet workspace. In a study they quote (this one from Cornell in the 1960s), researchers split a group of computer science students into two groups, the first group listened to music through headphones and the second group was in a silent room. Each group was given the same programming problem, which consisted of a series of mathematical operations, to implement from a specification. The speed and accuracy of the programming was about the same in each group, but, the assignment itself was a trick question - the end result was that the output number was the same as in the input. And, of those that realized this, the overwhelming majority came from the quiet room.
Most "technical" work uses the left side of the brain, I suppose leaving the right side of the brain free to listen to music to monitor the system. But, every so often, even in what is considered "technical" work, a person needs to be creative, and it would be unfortunate if at that point in time your right side of the brain is off monitoring the system.
Of course, if multitasking is so important, audio content is really the only content which has the potential for effective multitasking.
Maybe they will call it something like iPhone or iCall, along the lines of iWork, iLife, iWeb, iSight, iMac.....
Apple's Ipod boom can hardly be sustained unless it can head off competition from PDAs and smartphones that can pack music players along with a host a other functions.
This can go both ways. I don't see any reason why Apple couldn't start putting some of those "other functions" into the iPod. Brand recognition is huge part of having a successful product, and, with the iPod brand, Apple has built a strong foundation.
I am not an expert on this, but in natural ecosystems, populations are often cyclic. Populations, and their consumption of resources, rise PAST the level that their natural resources will allow them to sustain, and then populations crash. There is always an overshoot and there is always a messy correction. It is very optimistic to think it will be any different with people and our natural environment, and this goes way beyond economics or planned economies or free economies. Economies are not "free", they are constained by physical and biological laws, many of which we don't know yet or understand.
I used to feel the same way, that economics would just sort it out. Since then I have read more, and unfortunately, as any student with a background in history would have known, when the environment and physical systems are involved, economics simply does *not* work. Physical/biological systems and the laws they work under are often swift and brutal and they do not care about economic "cost" or "benefit".
s ter_island.html
Here is an interesting article:
http://www.greatchange.org/footnotes-overshoot-ea
I suppose at 0.6mm thick and with "aircraft grade adhesive" they must stick very well, but I still can't shake the image of these going flying off while driving on the expressway. Certainly a step in the right direction though.
Google has done a great job positioning themselves between consumers and basically anything they want to purchase. If you think about what a consumer needs to do when they make a purchase, two key steps are first to find something you want and then secondly to pay for it.
Through their search engine and paid advertising, they basically own Step 1. They act like a gatekeeper, deciding who sees what and really having a tremendous impact on the success of at least some businesses.
As for the second step of paying for an item, they don't yet have a presence, so this is the logical next step. When their system goes forward, I suspect eventually a little slice of every transaction will go into google's pocket.
Eventually people will start talking about paying a "google tax". Businesses will need to recover the expense of advertising and the expense of the transaction. Guess who they will recover it from?
I do think there is potential in the overall design you are choosing, with a focus on expecting stuff to break and then simply making the system robust enough that if one module fails it is either restarted or another duplicate takes over and processing still continues.
If you go with restarting, and performance is critical, one of the important aspects will be to help you restart a downed module efficiently. From the GoF, the Memento pattern for storing an object's state may help you. The Command pattern may also be of benefit. For example, if processing something fails, you may only want to retry a certain number of times, in case there is a systematic reason for the failure. This type of functionality can be easily implemented using the Command pattern.
Also, although I have not read it myself, you may get some good ideas out of "Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects". I read the first volume of this series and found it to be a great reference.
My comments are focussed on the "Design Patterns" part of your question. What references have others found useful specifically for building robust software?
I have all too often seen these supposedly robust custom written systems degenerate into a big pile of sh*t which then requires much work to get fixed up. I would strongly recommend keeping close track on the status and quality of your project, and, at the first sign of slippage, particularly if you hear people saying "stuff just doesn't work", get some serious professional help if you want the project to succeed.
Good luck and I hope your project turns out well.