Sunday, October 4, 2009

Proactive Computing: Now and in the Future

What is proactive computing?
Proactive computing is carried out continuously on your behalf. By contrast, reactive computing reacts to your commands by executing the tasks that you specify. Servers in proactive computing continuously sense and respond on your behalf – they acquire data from multiple sources, analyze the data, and determine actions that you want taken on your behalf. The action may be to send you information that you want, carry out an operation – such as making a reservation – on your behalf, or to store results so that they can be given to you the instant you ask for them.

Proactive computations and sense and response applications
Proactive computations continuously carry out sense and response operations on your behalf used whether you interact with the server using request-driven or event-driven interactions. In request-driven interactions you request information from a server and the server replies to your request; in event-driven interactions the server sends you signals when it detects events – changes in the environment that are significant for you. In request-driven interactions, proactive computations respond to the identification of important information by storing the information so that it can be given to you when you ask. In event-driven interactions, proactive computations respond to the identification of important information by sending you the information or an alert signal.

Proactive strategies may waste more effort than reactive strategies.
Proactive computation obtains information and results of computations that you may (or may not) want. Results that nobody wants are discarded. In contrast to proactive computing, results of reactive computing are not wasted in the sense that the computation is carried out because a client asked for it. Proactive computing is like having the car you want to buy available immediately at a local dealer; by contrast reactive computing is like ordering a car that is built for you from scratch. Both proactive and reactive information computing have advantages. Reactive computing gives you exactly what you want when you ask for it. Proactive computing guesses what you want done for you and does it.

Why is proactive computing becoming more widespread now?
Before the nineties, information processing was primarily reactive. Proactive computation is becoming more common now. Why? There are four main reasons:
  1. More people are connected to the digital world for more time. Some services can estimate where you based on the location of your phone or GPS on your car; they know what you are searching for on the web; they may know the messages that you sent and conversations you had in chat rooms; and they may have access to your calendar. Servers can be proactive because they know more about you, and so they can make better guesses about what you are about to do.

  2. Advertising is effective when it gives you exactly the information you want when you want it. An advertisement for a restaurant in the vicinity is more useful to you if the ad server knows where you are, the time of day, your preferences in food, and possibly the people you are with. Proactive computing can help advertisements be more targeted to the individual. Advertising revenues will drive proactive computing.

  3. Users demand more information and more quickly. They want to know what their friends in social networks are doing, when prices of investments and products change, and when interesting posts to blogs become available.

  4. Computation is getting cheaper and the cost of proactive computation that is wasted is negligible. Proactive computation was prohibitively expensive before the nineties, but is no longer expensive now.
These trends will continue to drive proactive computation in the next decade.

Proactive effort on your behalf requires knowing what you want.
Services can learn about you by monitoring your activities. They can then carry out proactive computations for you based on what they’ve learned. Alternately, you can ask a service to carry out tasks continuously for you. Proactive computations can be successful if servers can learn about the kinds of work you want done, and if they can estimate what you are doing and are about to do. Proactive computations are a nuisance or worse if they send you spurious alarms or carry out inappropriate operations on your behalf.

Proactive computations and privacy
A person or a software agent can do better proactive work on your behalf the more it knows about you. The more the person or software agent knows about you the less privacy you have. Perhaps the only way to have proactive services work on your behalf is to trust that the services won’t use your private data maliciously.

Proactive computations today
When a search engine crawls the web and indexes information so that you can access it quickly, the search engine is doing proactive computation. Servers don’t wait for you to execute a search query to start crawling the web; they are being proactive because they expect the information to be useful to someone. Many online vendors continuously identify new items and price reductions that will interest their customers and then send alerts or coupons to their customers; they don’t wait for their customers to ask. Stock analysts proactively run predictive models of stock prices and alert their customers when they should take action. Proactive computation is quite widespread already, and I predict that it will become much more so in the next decade.

Programming notations for proactive computation
When you want to tell a server to carry out computations on your behalf, what notation do you use to specify the service? Consider a healthcare researcher studying a disease such as MS. Must she tell the service how to extract information from genomic databases relevant to MS? She will more likely use a shrink-wrapped application designed specifically for healthcare researchers that allows her to specify something simple: a disease, a gene, a protein, or a drug. Likewise, an employee of a power utility is unlikely to describe how to simulate the grid and is more likely to use a canned application designed for utilities. The emphasis on simplicity has made search engines ubiquitous; the same emphasis will make other proactive computations useful as well.

Presenting results of proactive computations
Results of web searches are presented as lists. Results of searches about directions to an address in a city are presented on maps. Likewise, results of proactive computations will be presented using displays and mechanisms appropriate for that computation. In some cases this may be done using lists but very often more sophisticated interfaces will be used. A healthcare researcher may prefer a relationship diagram in the form of a graph in which the nodes are nouns such as proteins and genes, while the edges are relationships such as the protein expressed by a gene; the researcher can explore the graph, following different links to detect useful patterns. Browsers now support powerful user interactions and you will see them used in proactive computational systems.

The Future
Many people have tailored the start pages of their Web browsers with information dealing with topics such as weather, traffic congestion, stock quotes, and news. In the future, you will be able to populate your start pages with information and results of proactive computations finely tuned to your specific needs. If you are a healthcare worker doing research on a disease, a portion of your start page may contain new information acquired from gene databases about genes associated with the disease and probable 3-D conformations of proteins associated with the gene. Investors will have start pages with data obtained from complex economic models. People working in the electric power industry will have predictions of power demand and potential problems such as windstorms. The start page on a cell phone, netbook or laptop is becoming the point where you begin interacting with the digital world, and results from proactive computations on your start page will make you more effective.

As I described in previous posts on this blog, sense and response applications are becoming widespread, and these applications are proactive. You will benefit from sense and respond applications that work continuously on your behalf at work and at play. Sense and response – and therefore proactive computation – will be at the core of applications dealing with the important things of life including water, food, energy, health and security.

Get ready for a world in which valuable proactive computation is done on your behalf.