Inspiration
Nobody likes online ads, but they offset the cost of websites and services that we know and love. We suggest an alternative which doesn't steal your time and attention: letting websites borrow the processor in your pocket. Ferris is a distributed computation platform which runs in your web browser to effortlessly connect users together to crowdsource solutions to a hard, concurrent task, benefiting users, site owners, and society as a whole.
Although existing platforms to “share cycles,” like Folding@Home, exist, they typically use large amounts of resources for extended periods of time, which “typical” users often deem unacceptable. Furthermore, they demand more commitment than just opening a webpage. Our solution is far less inconvenient for the typical user, and requires no effort whatsoever on the part of a casual website visitor.
What it does
The Ferris server, as part of a website, maps a computation over an iterable structure. Clients load a tiny Javascript stub (with only a single script tag!) which fetches work intermittently from the website, performs a task, and returns the result to the server. We imagine that with little contributions from visitors to a popular website, even the most computationally demanding of problems could melt away.
- Here’s what to expect as a website user:
You load a webpage with the Ferris client stub,
You advance an important social cause or aid the website creator by donating a few spare CPU cycles.
- Here’s what to expect as a website administrator:
You identify a useful computation over an iterable structure,
You create a javascript function which operates on each element of this structure,
You apply Ferris, let website visitors perform the work, and reap the rewards.
The possibilities are endless -- advance cancer research, assist routine website maintenance, help with a tricky numerical optimization problem, or do anything you can imagine, just by leaving a browser tab open.
Demo task: Protein contact maps
At present, our demonstration task sends each client a peptide sequence from the human genome from the NIH’s RefSeq database, and requests that they compute a protein contact map, a common task in examining proteins. We use the well-renowned BLOSUM62 scoring matrix to determine the feasibility of matching any two amino acid residues.
This example, consisting of a computation of nearly 100,000 human proteins, is but a narrow subset of what you can accomplish with Ferris, and we're excited to push the limits.
Want to see for yourself? Contribute some cycles at https://ferris.ninja or see what other users like you have computed at https://ferris.ninja/visualize !
What's next for Ferris?
Our platform can be made faster and more efficient. With the upcoming WebCL standard, we expect to be able to get more “bang for our buck” from web browsers. In the meantime, it would be entirely possible to represent many useful computations in OpenGL shaders and return an image encoding the computational results, in old-school GPGPU style.
We look forward to making more tasks for Ferris to run. Ideally, we would love to distribute analysis of DNA microarray data, contribute to cancer research, or maybe just crawl the web.
Built With
- ambition
- dedication
- javascript
- postgresql
- ruby
- ruby-on-rails
Log in or sign up for Devpost to join the conversation.