Over a year ago I wrote a blog post about an idea that I had had since college. In that post, I proposed using smartphones as platforms for distributed computing projects. This was because desktop usage has decreased dramatically in the last few years and new server consolidation technologies are making it harder to run intensive distributed computing projects in single instances.1 I saw that there is great value in distributed computing projects like SETI@Home and Folding@Home, and even after I wrote the post I continued to yearn for enough time to make a proof-of-concept.
Earlier this week, Tony of ClockworkApps tipped me off to his implementation of a mobile distributed computing application for Apple's iOS devices. Though I personally don't own an Apple iOS product and thus can not try out the app myself, the fact that an implementation now exists for the concept astounds me and I congratulate Tony on the achievement. I'm excited to see that others are now recognizing the untapped potential in distributed computing on smartphones, tablets and other mobile devices and look forward to the standardization and implementation of this technology for all device platforms in the coming future!
1 - Though more and more "cloud software" is quite distributed, running singular programs to do intensive, long-running distributed computing tasks yields no benefit if those programs run in virtual machine instances on a single machine. Running multiple distributed computing tasks like SETI@Home or Folding@Home in their own virtual machines on a single server does not make sense. Not only does the server have to deal with the overhead of running each of the virtual machines, the processing of the tasks end up taking a performance hit since they are now emulated and processing is at the mercy of the hypervisor and its CPU timing. Instead, if a distributed computing program was properly tuned and run on a multi-core server, the performance would be drastically improved since the computing task would have near complete runtime in each core without overhead or dealing with processor/core timesharing. Granted, a lot of engineering has been done to minimize the overhead of virtual machines to increase the performance of the applications contained within them, but realistically nothing can surpass the performance of running as close to bare-metal as possible.