Milestone achieve by Adrian and Vik of the RepRap community, they’ve replicated entirely a Darwin machine, and this child is beginning to print itself another printer!

Adrian (left) and Vik (right) with a parent RepRap machine, made on a conventional rapid prototyper, and the first complete working child RepRap machine, made by the RepRap on the left. The child machine made its first successful grandchild part at 14:00 hours UTC on 29 May 2008 at Bath University in the UK, a few minutes after it was assembled.

With dozens of ssh connections each days, you better need a shortcut way to make it faster. Frustation comes to a end with this script:

Put this ruby script in your bin directory, make it executable, add your servers info hash in the array, and eventually copy your ssh public key in the various servers to never be asked for password.

When executing it, you can give it the ‘id‘ as an argument, and it will connect automatically to the server with the corresponding id!

Pressmark with a WordPress installation with all you need to start a social bookmarking website (like,, …).

You can see a demo of Pressmark installation on

Pressmark includes WordPress Prologue theme, which has been used by WordPress team to have a twitter-like dev-blog.
Prologue include Gravatar support, so go to upload your avatar on to have a nicer output!

If you feel like adding your own modification to the code, you can clone/fork the project on Github: All contributions will be welcomed!

Ideas to extend Pressmark:

  • Bookmarlet, Jabber bot for easy posting;
  • Import from bigger social-bookmark accounts (delicious, magnolia, …)
  • Cross-blogging to decentralized bookmark management in various blog spaces


  • Get Pressmark sources:
    • Download it from Github
    • If you’ve got git installed, clone it from Github (to easily get last updated)

      git clone git:// pressmark
  • Move the source to your webserver, ask a geek how to do it if you don’t know :)
  • WordPress configuration: copy ‘wp-config-sample.php‘ to ‘wp-config.php‘ and fill up the MySQL database information.
  • Access to the website where you’ve installed Pressmark, and begin the “2 min. installation” from WordPress
  • Now that your website is ready, go in the administration pages and activate the following options:
    • In ‘Design‘: select ‘Prologue‘ theme;
    • In ‘Setting‘: select ‘Anyone can register‘ and set the ‘New User Default Role‘ to ‘Author‘ if you want your users to post links;
    • In ‘Plugins‘: activate ‘WP-OpenID‘ plugin

After a week of “502 Bad Gateway” error on, it was time to dive in our new Nginx toy on Feevy server and understand what happened.

First, Nginx is not like Apache or Lighttpd, it doesn’t support FastCGI by default. So, you need to be sure you’ve compiled the fcgi module with your PHP installation.

On Centos, to compile a new PHP, just launch: /scripts/easyapache

Then you’ll need to launch the FastCGI process, download this FastCGI script, place it in /usr/local/bin, and add it to your init.d.

At the end, you just need to configure your php server in nginx, that would be the most simple part:

  server {
      listen 80;
      index           index.php;
      root            /home/wwwfeev/blog;

      if (!-e $request_filename) {
        rewrite  ^(.*)$  /index.php?q=$1  last;

      location ~ .php$ {
         fastcgi_index index.php;
         fastcgi_param SCRIPT_NAME $fastcgi_script_name;
         fastcgi_param REQUEST_URI $request_uri;
         fastcgi_param DOCUMENT_URI $document_uri;
         fastcgi_param DOCUMENT_ROOT $document_root;
         fastcgi_param REMOTE_ADDR $remote_addr;
         fastcgi_param REMOTE_PORT $remote_port;
         fastcgi_param SERVER_ADDR $server_addr;
         fastcgi_param SERVER_PORT $server_port;
         fastcgi_param SERVER_NAME $server_name;
         fastcgi_param SCRIPT_FILENAME  /home/wwwfeev/blog/$fastcgi_script_name;
         fastcgi_param QUERY_STRING $query_string;
         fastcgi_param REQUEST_METHOD $request_method;
         fastcgi_param CONTENT_TYPE $content_type;
         fastcgi_param CONTENT_LENGTH $content_length;

Sorry for all the people who couldn’t watch the Reprap move in 3D last friday in Bilbao, it’s finally working tonight!

The code to control the robot is really elegant, and it was not really hard to find the missing part to make it work properly.
I’ve also add a setMax() method on the axises, so the hardware opto-endstop are not needed anymore. but it’ll be cool to keep them just to use them to set the print-header home. I think I’ve seen some example like this somewhere, but I’m not usre yet how it works.

People interesting in downloading/cloning/forking the Arduino firmware for Reprap can go to the project page on Github.

[Textmate] Arduino Bundle

After first days with the Darwin machine, it became clear that something was needed to replace the current Arduino software and upload the RepRap firmware directly from Textmate.

So here comes my first Textmate Bundle, thanks to the elegant work of Arduino team to make it easier to upload program from command line:


Once installed, only one shortcut is available to make and upload your program on the Arduino board: Command-Shift-A

You can clone/fork the project from Github too, make your own repository and I’ll be glad to add your patch to the current simple bundle.
And come back during the week, you’ll surely see some update during the intensive RepRap hack session!

On the way to launch Live Clöthing, I had to hack this morning the register action hooks for WordPress, that don’t work as simply as excepted.

‘register_post’ action

You won’t be able to add more errors in $errors if you do not make it global in register_new_user() of wp-login.php:

function register_new_user($user_login, $user_email) {
global $errors;

‘user_register’ action

For some strange reason, $user_id is not available, you’ll need to add this hack to read it in your hook function:

$user_id = (int) func_get_arg( 0 );

[Jabber] Delicious Bot

Because when I see a good link, my main pleasure is to send it to as many friends as possible on IM, here is a simple jabber bot I could use to also save these links to my delicious account:

Download from

It uses jabber-bot and rdelicious gem for ruby, you just need to configure the config.yml with your jabber and delicious login information and maje it run with:

ruby delicious-bot.rb

The bot will connect to the master jabber you’ve configured in the config.yml, and you just need to send him the bookmark command:

bookmark url description

You can add your commands easily inside the bot, and fork the project from

Delicious-bot project on

We are going to use our own openid server for various projects, it was fairly easy to install at then end.

Because sources are diffused on the net, here is a all-in-one package you’ll just need to put on your webhost to start your server:

Download package

Update: OpenId-Server now on


In the package, you need to edit some configuration in web/config.php:

 * The administrator's email address.  You may leave this empty if you
 * wish.  If empty, the "Contact (email address)" message will not
 * appear on every page footer.
define('SITE_ADMIN_EMAIL', "");

 * Set these values for administrative access.  This account will be
 * able to create and remove accounts from the auth backend.  This
 * username will not be permitted to use an OpenID.  The password MUST
 * be an MD5 hexadecimal hash of the password you want to use.
 * Example:
 * define('ADMIN_PASSWORD_MD5', '21232f297a57a5a743894a0e4a801fc3');
define('ADMIN_USERNAME', 'admin');
define('ADMIN_PASSWORD_MD5', '');

Visit this page to transform your password in MD5 hash

 * Storage backend to use.  Currently the only choice is "MYSQL".  See
 * storage.php for storage backend implementations.  Parameters for
 * connecting to the storage backend.  See storage.php if you want to
 * create your own backend.
global $storage_parameters;
$storage_parameters = array('username' => 'openid',
                            'password' => '',
                            'database' => 'php_openid_server',
                            'hostspec' => 'localhost');

There are more options you can change in config.php, feel free to experiment :)

Link to HTTP server

You need to tell to your server to access OpenID server in the ‘web‘ directory.
Here is how it works on my webhost:

ln -sf ~/openid/web/ ~/public_html/openid/

Now you can access my OpenID server on

Indian Weekend in Asturias

Here is the video made by David from the rushes of our weekend with Mercedes in Asturias to meet Maki, a new Indianos.

Everything was perfect: cider bars, local food, hiking in the mountain, asturian connection y dulce alegria!

PS: estoy pensando en español cuando quierre escribir algo, probablemente vais a ver un cambio de idioma en los proximas semanas :)