Wednesday, April 9, 2008

Toward Harnessing Computation in the Browser

Popular news is focusing on the promotion of the new google App Engine for hosting web applications (techcrunch, high scalability, and zillions of others). Like AWS, I am reminded of the continual abstraction and automation of common tasks, in this case the movement of application servers to a scalable although constrained web-version for the masses. Anyway, an aspect of the google approach that got me thinking was their limit imposed on CPU (megacycles), and more interestingly the exploitation of the user as an information processor.

I remember one of the the comments made by von Ahn in his Human Computation talk at google was regarding his desire to exploit the "wasted" effort of humans playing games toward more meaningful ends. This motivated his notions of games with a purpose toward solving AI-complete problems. An alternative approach may also consider the computation available on users machines that is also wasted playing solitaire and more importantly surfing the web. The obvious mesh of these two ideas is to push computation to the user (client browser) in such a way that the user wants (or is forced) to donate cycles.

A first pass at the approach may be toward the exploitation of more creative computation, such as evolutionary art. One may imagine a widget or badge people put on their site that downloads some Flash or Java application and permits asynchronous communication with a job server. For example, one may use a Genetic Program and accept subjective user feedback on generated art or music where feedback is set back to the central server as "fitness". The value of the accumulated effect would be the slow evolution of an art corpus on the server. The important point of the example is that the generation of new art (the computation) occurs on the client, shifting the cost from cycles to transfers from the server. This trade-off may be manipulated by the software for a given application such that the balance of costs for transfer and computation are optimised.

Naturally, the application does not have to be interactive, it could be a badge for folding@home or SETI, showing stats to the user as well as doing a snippet of computation toward the project. It's a strange although strangely appealing paradigm, and I'm sure there would be real applications ($) beyond art and research that could take advantage of the approach. Importantly, the benefit is that the discrete (drive-by) computation available scales with the uptake of of the widget (a tenet of collective intelligence). I'm sure you could think of a cool tag line for the tech, something along the lines of distributed computation projects in the browser, or donate your CPU while you surf your favorite blogs.

3 comments:

Jason said...

A paper with similar although perhaps less marketable notions called Donating Cycles over the Internet using Web Services. As such, I don't expect the notion is that novel, rather it will be the execution, application, and uptake that would differentiate this approach.

I also think that it does not have to be limited to satellite implementation (widgets), instead a site could be designed around the approach.

Jason said...

I think one path is the satellite for distributed computation approach, the second is a service in which the user powers the computation for themselves. This latter case is more interesting as it also allows the use of satellites: users can form micro-swarms for themselves with readers of their blog/site.

I'm not sure on the application, something along the lines of personalization using this UCompute or ICompute technology. Pushing further suggests the user also store their data, meaning the site/hub may simply provide the mechanism for facilitating user interactions.

Jason said...

An interesting example called CPUShare. Their tag line is: The Low Cost P2P Virtual Supercomputer. Still a desktop client.