There's no place like ::1

New Blog Layout and Hire Me Section

This week I’ve introduced a new static blog engine based on the awesome Octopress blogging framework. I really love the simplicity, the readability and the mobile support of the default template.

OTOH, you may be noticing there is a new section on the top of this blog called Hire me. Since sometimes I have free time on my freelance work, I created that central point where potential clients could contact me and see my status.

Since for now there isn’t any type of notification system, please bookmark that page if you’re interested on working with me.

Dropbox SDK Module for Titanium Mobile (iOS)

Today marks the first day I’m selling a piece of software on the internet.

This is the full Dropbox SDK module for Titanium Mobile applications. This is ONLY FOR iOS DEVICES (iPhone/iPad). It implements the full Dropbox SDK API in a clean JavaScript way.

Included with the file there is documentation and two different Titanium applications where the API is exercised. One of them is a clone of DBRoulete found on the Dropbox SDK, but implemented on top of Titanium Mobile.

I’m using this module in production on two iOS applications, so the module will be maintained.

Vim + Rails + Ctags = Power Navigation (Screencast)

The lack of a proper (read: simple, fast, non-java) IDE for Ruby and Rails projects is something I still miss when using Vim. Specially when I need to work on a legacy project, I would love to have a better way of navigating through the methods and classes.

Recently I found an old but very efficient way of doing that using vim and ctags. The following is a simple screencast where I show how to use ctags to solve that type of problems.

Vim + ctags demo from Ruben Fonseca on Vimeo.

Map Crowd Reduce

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).

It’s called Map Crowd Reduce and it’s available on github.

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.

Finally, I couldn’t have built this project without the help of some friends.

Twitterrsslinks Version 2

Today I’m announcing version 2 of twittersslinks.

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.

There’s a good excuse to learn node.js. :)

Without further ado, here’s version 2 architecture (sorry for the quality, I am definitly not a drawing guy…):

The site is completely free, and now beneficts from the real-time user-stream feeds. Also, I’m using pusherapp for the first time, just in case you are on the browser and a new tweet arrives :)

The live website runs on a EC2 Micro instance, and I will definitly open the source in the near future. Happy tweets :)