Wednesday, December 24, 2014

A Gift for the World - Donate Spare Computer Time

As I write this, depending where you live in the world, today/tomorrow is a major holiday for people of certain religions. Of course, there are billions of people around the world who don't celebrate right now, but who celebrate other holidays at certain times of the year when gift-giving is a tradition.

No matter what holidays you celebrate, or when you happen to read this post, how would you like to give a gift to the rest of the world? And it doesn't really cost anything (except a bit of electricity consumption when your computer is turned on).

The gift is participation in a volunteer "grid computing" project. Wait! I know, your eyes started to glaze over when you saw "grid computing."  Please, bear with me for a second!

There are literally hundreds of millions of computers around the world.  Many of them are inexpensive laptops or tablets for personal use.  You might not think that your "old laptop" is very powerful, but the interesting thing is that it is probably only "in use" for about 2-5% of the time when it's turned on.  The rest of the time, it's sitting there waiting for something to do.  Even when it looks busy, because it's streaming music or uploading a YouTube video, the brain of the computer (the CPU) is idle most of the time.

So it's possible (and easy) to set up your computers so when they're turned on but not in use, they're helping solve scientific problems that could benefit millions of people.  For example, my laptop is currently running projects to help study proteins.  This research is useful in fighting diseases such as malaria, cancer, Alzheimer's, and HIV.  My laptop is also helping to catalog a high quality model of our near galaxy.  It's also searching for pulsar stars, and working on a few other projects.  And it's not costing me a penny, other than my electric bill.

Ok, at this point, if you don't want to try to help cure diseases like cancer, Alzheimer's, etc., then you can stop reading.  But if I've aroused your curiosity, let me describe in more detail how it works, and I'll explain some of the specific projects that I'm supporting.

The Software:

The project is called BOINC, which stands for Berkeley Open Infrastructure for Network Computing.  Berkeley of course refers to the University of California at Berkeley.  You don't have to be very tech-savvy to make it work on your computer.  The people at Berkley set up the software to try to make it as user-friendly as possible, and to run in the background so you never notice it.

BOINC is currently available for a number of platforms.  For Windows, your computer must be running XP (service pack 2) or a more recently operating system, which should cover 99.98% of all Windows machines still functioning.  For Mac's, you need OS X 10.4 or later.  There are also versions for Linux and for Android, although the Android software is currently not working properly since Lollipop was released.  That should be fixed shortly.

Here is the download page for BOINC:

How It Works:

Basically, an institution that has a very large amount of data to process, but not enough computers to do it, can set up their project with BOINC.  People who decide to contribute computer time to a project will receive small chunks of data to process.  Your computer will spend a few hours or a few days processing this chunk of data, and then sends the results back to the project's institution.  The institution then sends you another chunk of data to work on.  This all happens in the background, so you don't have to spend any time answering or sending emails, etc.  And if you're worried about the internet usage, you can restrict the times that data is sent or received, and you can cap the bandwidth if you want.  But for most people, this won't be a big deal.  The bandwidth that most of these projects will send/receive in a day is probably less than you'd use watching a two-minute YouTube video.  If you're on Android on a phone, you can tell it to wait until you're at a free WiFi point to send/receive, so you don't use any of your mobile data.

The strength of the system is that the institution can be sending chunks of data out to dozens or even thousands of computers all around the world to simultaneously help work on analyzing data!  If you're curious about what happens to data that can't be processed, and whether or not it affects the project, there are safeguards.  For example, if you are processing info for a project and your laptop gets run over by a bus, there are deadlines built into each chunk of data.  So for this example, if the institution doesn't get results back from the data chunk that your computer is working on within say, 30 days, it sends the same chunk out to someone else's computer to analyze.

Slightly Technical Section:

You can ignore this short section if you want to avoid technical stuff!

If you want to really control the parameters for BOINC, you can customize a lot of stuff.  For example, I have mine set up so that after ten minutes of no activity on the computer, it starts to run.  I think this is fairly typical, although maybe the default is one hour.  But as soon as BOINC detects that you're using the computer (either through physical interaction such as a keypress, or high CPU usage such as watching a video) then it suspends operations until it knows that you're not using the laptop yourself.  This way, your laptop is never "slowed down" when you're using it.

For CPU usage, I have mine set so that BOINC doesn't run if my CPU is over 15%.  When it is running, I have it capped at a maximum of 95% of CPU.  For people with advanced graphics cards, which probably isn't a lot of people, you can allow BOINC to use the processing power of your card.  For example, I have a fairly nice nVidia GeForce 870M video card, so that's also helping to do calculations when BOINC is running.  BOINC supports quite a few nVidia and ATI/AMD cards.

From the BOINC Manager program, if you want to get really technical, go into View and switch to Advanced.  Then go into Tools and select Computing Preferences.  This is where you can play with your CPU and network and hard drive usage settings.  You can also determine whether or not it auto-loads when you boot your device, or whether it has to be turned on manually.  You can also temporarily do a suspension of processing with a single click in the Manager program.  For instance, I have mine set up to auto-boot and run most of the time, but just in case, I suspend it when my computer is rendering large video and audio files (although it shouldn't run then anyway because my CPU is too busy).

Although BOINC runs on all major platforms, not all individual projects using BOINC are able to run on all platforms.  For example, many projects can't take advantage of GPU processing, and some projects only run in Windows and Mac environments.

Cool Stuff:

BOINC on all my machines has a screensaver, which I've turned on.  I've matched the screensaver start time to my "start BOINC processing after 10 minutes of downtime" setting, so when BOINC starts, the screensaver comes on.  You don't have to run the screensaver.  However, for some of the projects, it's pretty cool, and it's a nice conversation piece if someone notices it and asks what your computer is doing.  You can tell them that you're saving the world.

To get to your screensaver settings in Windows, go to Control Panel then Display then Personalization.  I have mine set to never blank, run the generic BOINC portion for 1 minutes, then run project screensavers for 1 hour.  So it keeps switching back and forth between the generic one (1 minute long) and then an hour of various project screensavers.  Within the project screensavers, I have it set to switch every 2 minutes, so there's more variety.

Some of the screensavers keep spinning or displaying changing graphics of stuff being studied, so a single screenshot isn't very exciting.  But here are screenshots from two projects that my laptop is running, from the Rosetta and Einstein projects:

These screensavers have captured the attention of many people who have been by my house to visit.


Here are some of the projects that I'm supporting.  I have them set to cycle automatically, so my laptop processes one for an hour, then moves on to the next, so they eventually all get an equal share of my computer's time.  In the preferences, you can allocate different percentages of your overall CPU to various projects, in case there are some projects that you want to support more than others.

Milky Way 
This project is creating a highly accurate three dimensional model of the Milky Way galaxy using data gathered by the Sloan Digital Sky Survey.  They have a facebook page and website and YouTube channel, like many of the other projects.

Determining three dimensional shapes of proteins in research that will hopefully lead to a cure of some major human diseases, including diseases such as HIV, malaria, cancer, Alzheimer's, etc.

An astronomy project studying sixteen different properties of galaxies, and also helping to produce an atlas to help astronomers better understand the distant universe.

Sponsored by the Swiss Tropical Institute, this project is doing modelling/simulations of large human populations to determine optimal strategies for delivering mosquito nets, chemotheraphy, and new vaccines that are currently under development and testing.

Searching for spinning neutron stars (pulsars) using data from the Arecibo observatory.  Volunteers helping with this project have already discovered several dozen pulsars over the past couple years!

This is the project that got BOINC started over a decade ago.  This project searches through data gathered by various observatories and looks for non-naturally occurring radio signals from outside our solar system, in other words, the search for extra-terrestrial intelligence.  So far, none have been found, but people continue to search.  You probably know this joke: "What's the biggest sign that extra-terrestrial intelligence actually exists?  That they haven't tried to contact us."

World Community Grid
This one, sponsored by IBM, is actually a group of non-profit projects on things like research into HIV/AIDS, cancer, tropical and neglected diseases, solar energy, clean water, and many more.  For instance, there is an Ebola research project available from this group.

If you want to see a more complete list of projects to choose from, go here:

Obviously, there are dozens of projects available to chose from.  You can contribute to just a single project, or you can contribute to a dozen or more.  Your choice.  You'll find that most of the projects specifically fall within research areas within the following fields, due to the data-crunching requirements of these areas of study:  astronomy, math, physics, quantum physics, biology & life sciences, and medicine.  Just remember that you have to install BOINC itself before you start participating in a project.

Getting Started:

After you install the BOINC software, you'll have to go to the "load project" section and pick a project that you want to support.  After that's set up, load another project if you want.  You'll probably be impatient at first to see it start working.  Give it time.  When you first install it, it needs some time to download data to process, to think about how to set things up, and so on.  Also, your stats screens and screen saver will display stats showing how many "work units" your system has completed.  Don't expect those to go up right away!  It may take hours or a day or two before your system finishes processing the first batch of data, then the data has to be sent back to the project sponsor and verified.  So it may look like you've processed 0 units of work for a few days, and then all of a sudden it'll jump up to hundreds or thousands of units processed.  Be patient.

Final Thoughts:

You may wonder how many people are participating in these projects?  As of today, it appears that about 236,000 people from around the world are contributing computer time to various BOINC projects.  They are doing this on about 481,000 computers.  By the way, many users are running BOINC on several machines and tablets and phones simultaneously.  For instance, I have it running on three devices in my house.

There are many web pages showing the stats and progress of various projects.  Some users gather together in "teams" to 

I highly encourage you to contribute to this project.  Seriously, what do you have to lose?  Some people leave their computers running all night, doing nothing!  Think of how good you'll feel if you know that your computer isn't dormant, it's helping advance research in the cure of diseases that kill millions of people every year!

Also, the screensaver options are great.  They've really drawn attention to the project when people see them.  The whole concept is a great conversation starter.  Next time you have friends over to visit, wouldn't it be cool to say, "Hey, I just set my computer up to help study a potential cure for Ebola."

If you're worried about the electric bill, remember that it's not going to cost you anything unless you leave the laptop on longer than you normally would have.  And realistically, leaving a computer on overnight, year-round, to contribute to these projects is not much different than donating $20 once a year to a local charity.

Even if you only have a single computer running the BOINC software, and it's only running a few hours each day, you're still contributing to a great cause.  And what about your computer at work?  If you're not on a special networked computer, maybe that one can also be allowed to BOINC?  You better check your company's policies first, but some companies are fine with this.  After all, it's for a great cause. 

Once again, here's the link to get you started:

Please, share this post with other people you know who might be interested in learning about these projects.  I've just added share/retweet/like buttons below.  There are probably lots of people out there who would love to contribute to some of these projects, but just don't know that the possibility exists.