My latest open project is a “SETI-at-home-like infrastructure for massively distributed CPU-intensive jobs based on HTML5 WebWorkers and node.js for distributing tasks” (quote from Pedro Teixeira’s blog).

This project made into the final SAPO Codebits 2010 programming contest, but unfortunately didn’t win :)

The project consists of a node.js server that starts a HTTP server on port 3000. To start a new computation, you must supply some javascript functions: a split/segmenter function that generates jobs, a map function, and a reduce function.

After that, the system gives you an URL that you can share with anyone wanting to contribute with CPU to the computation. The client side functions are run inside a WebWorker so it never blocks the main UI thread.

With the code there are 2 prewritten examples:

find the number of primes between 0 and 60000 (brute force)

this uses a brute-force method of testing if each number is a prime, from 0 to 60000. it runs very fast and can be used to debug.

find a MD5 collision with the MD5 on all words with 5 or less alfa words

this lasts 15 minutes on a single machine. when I tested it on the main stage, 50 people connected their browsers at it lasted like 20 seconds (#win).

We are currently trying to write a parallel Mandelbrot fractal using map reduce :) it will be awesome.

TwitterRSSLinks is a Twitter (OAuth) service that filter all your timeline tweets that contain HTTP links, so you can aggregate and watch them later and so on. The website outputs the tweets in a variety of formats including JSON, RSS and ATOM.

Version 1 was shutdown because I had no plan for monetizing the service, and at the time, there was a good alternative. Now the alternative is dead and Twitter UserStreams is in Beta.

ActivityStreams is the next big thing TM. It defines a protocol to syndicate activities taken from web applications (mainly social ones) and services. Just imagine a common spec for describing the activities a user do on Facebook, FriendFeed, Delicious, etc.

The protocol originally targeted the Atom XML Standard, via an extension. Later, some work has been done on standardizing a JSON format too.

With that in mind, I’ve tried to implement a Ruby parser that defines a common API to access both the Atom and the JSON specification. Is is now available on github and also as a Ruby gem.

Here’s a simple demonstration on how it works. We take the excellent Cliqset feed proxy and get an activity streams annotated Twitter Atom feed:

The JSONAPI is very similar. Some documentation is up on rdoc.info and it is worth checking the spec too. Have fun :)