[Spime] Distant touching

Par défaut

Internet communication has not reached its limit yet: we have text, sound and video easily available. Few years ago, some people tried to develop odor extension, but I’ve not seen this really breaking through yet.

Because I need to communicate with someone, and I miss something, I was thinking about adding another sense to our internet communication: touch.

Since then, I’ve been playing with the Arduino card (see previous post), and play to connect it to an USB massage gadget. By internet, both gadget will communicate, each personn allowed to make the other gadget massaging more or less quickly.

Today I’ve discovered that Thomas Edwards has already complete his touch project!

From there, I’ve found many interesting links that will greatly help in my own project, hoping that knowledge will flow in both directions:

  • Phy2Phy: a wiki about physical interaction over IP, with lots of useful information to develop your own hardware, and because interaction is not limited to touch;
  • Touch source code and more technical information

[Electronic] Arduino board

Par défaut

Wanting to do a fast electronic prototype of an idea I had last night (more description about this idea in a later postà, I discovered this morning the Arduino project.

What is Arduino?

Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.

Arduino

What to do with it?

It’s basicly the Processing.org wet dream:

  • You make and verify you program in Processing (or similar IDE from Arduino)
  • You connect your board to your computer via USB and send the program to it
  • You disconnect it, find any external power source (batterie or plugged), and you app is running on a small hardware machine

Now you can add enough outputs (led, motor, …) and inputs (switches, potentio-meter, …) to make any physical hack. Smaller version of the board are also available!

And Berlin is the best place to live to get this working, everything is available in shops, and this one was particulary cheap: 27€

How to install it?

This board is working on Windows/Linux/Mac platform, but I had some difficulties to make it really plug&play on my Mac. Follow Gck instructions on Arduino forum if you have some problems too.

[Berlin] Streetart walk

Par défaut

First day walking in Berlin, looking for a bike shop, and finally finding one nice white in a Kreuzberg shop with a frog as emblem, looking for british people to get the joke.

Lots of photos during this trip, mostly of streetart, well mixing with a quote from Florian Hufski blog:

Modern street art is the product of a generation tired of growing up with a relentless barrage of logos and images being thrown at their head every day, and much of it is an attempt to pick up these visual rocks and throw them back.
Society’s headlong march into bland conformity should not necessarily be welcomed with such openarms.

Streetart mosaic

  1. Falling bomber
  2. Giant head
  3. Sun
  4. Zoom on sky
  5. Flying head
  6. Indian chef
  7. Red guy
  8. No hands, no problems
  9. Mashu^

[RepRap] PIC programming working!

Par défaut

That was a long struggle… After testing a lot of different way to program the RepRap electronics PICs under Linux, and scouting the forum about some hints, Zach Hoeken send me an answer about the method he used few months ago: « I bit the bullet and used windows« .

How to program RepRap PICs with an Olimex PG3B programmer:

  1. Get a Windows-ready system;
  2. Download IC-Prog (and the NT/2000/XP drivers if necessary);
  3. Open IC-Prog, and set programmer as PicPro2, with inverted Data and Clock;
  4. Download RepRap firmware files from Sourceforge;
  5. Open files with IC-Prog, click ‘Program’ with the chip plugged on the programmer, and wait… Done! Repeat this step for all chips.

You can find more explanation about PG3B programming on SparkFun Electronics, they have a nice tutorial to use it on Windows.

Now, I want to come back to linux, try to make it work one way or another, and finish the electronic tests to be able to plug everything correctly and play with the software part.

[Ruby] God monitor

Par défaut

Update: this script, from September 2007, is a bit out-dated, you can get more info on official God gem website.

Looking for a ruby programmer? Contact me

After many ways to monitor Feevy updaters, we’re finally using God gem today to manage everything with Ruby on many platforms.

Documentation is really clear, and it’s easy to adapt it to your own code. The nicest point was to be able to control our non-daemonized updaters, and monitor them all in the same tool.

Here is our script:

require 'rubygems'
require 'god'

ROOT = File.dirname(__FILE__)

God.init do |god|
  god.pid_file_directory = "#{ROOT}/pids"
end

[*0...20].each do |updater|
  God.watch do |w|
    # watch with no pid_file attribute set
    w.name = "updater_#{updater}"
    w.interval = 30.seconds # default
    w.start = "ruby #{ROOT}/updater.rb"
    w.grace = 10.seconds

    w.behavior(:clean_pid_file)

    w.start_if do |start|
      start.condition(:process_running) do |c|
        c.interval = 5.seconds
        c.running = false
      end
    end

    w.restart_if do |restart|
      restart.condition(:memory_usage) do |c|
        c.above = 150.megabytes
        c.times = [3, 5] # 3 out of 5 intervals
      end

      restart.condition(:cpu_usage) do |c|
        c.above = 50.percent
        c.times = 5
      end
    end
  end
end

[updated]: thanks to apeiros on irc://#ruby@irc.freenode.net for quick array initialization tips!

[RepRap] Extruder Kit mounted

Par défaut

Closing screw I’ve just arrived few days ago at Madrid, and I’ve had the joy to received the RepRap Extruder Kit built this summer by RRRF!

The pieces are well cut, and there is some neat mechanical design (I’m new in this domain) helping to put pieces together.

The only issue has been the middle part, containing the driving screw, with one of the part just a millimeter short. It looks one-sided, if put on the wrong side, there’s a gap at the bottom of the piece near the plastic part.

Now, I’m just missing « 40mm length of 3mm braided steel wire », some « JB Weld high-temperature epoxy glue » to finish completely to assemble this extruder kit. Thanks to Fernando from Barcelona who gave me a ferreteria address to visit in Madrid to get this kind of pieces.

The next missing part is the PIC programmation, I’ve got some issue with the Olimex PG3B pogrammer and pkp (under Ubuntu), they seem unable to communicate, and the programmer board is stuck with PRG1 led once parallel port is open… Hope to solve this during the week before to leave to Berlin with everything connecting, and come back soon with all mechnaical parts!

[Ruby] RFeedFinder and RFeedReader

Par défaut

In the refactoring process of Feevy.com (mostly to remove dirty spaghetti code), I’ve write my first 2 ruby gems, with some time to learn and practice with new toys for ruby.

Rubyforge

http://www.rubyforge.org

That’s the place that hosted most of rubygems and is the most useful to deploy your own, it comes with all you need to start and deploy a project: svn, webspace, bug tracker, forum…
But it would be a pain to deploy everything by hand, a gem is available to do it quicker.

New Gem

http://newgem.rubyforge.org/

It’s a simple gem that would generate for you an environment where to build your gem, with a few rake tasks to easily deploy it locally and on rubyforge.

Configuration is simple, just replace ‘FIXME‘ in code with what is needed and start coding your new gem.

To deploy on Rubyforge, don’t forget to setup your access on your local machine.

RFeedFinder

http://rfeedfinder.rubyforge.org/

Main purpose of RFeedFinder is to locate the feed url inside a webpage. It can be really tricky, sometimes using recursion or lucky guesses, but it should work 95% of the time.

RFeedReader

http://rfeedreader.rubyforge.org/

Once we’ve got a feed to parse on Feevy, we want to read its first item. That the purpose of this gem.

Another purpose is to use this gem to update Feevy posts from external clients. Feevy server was doing all the job when a feed was updated, now updater clients can parse the feeds too, and return the complete info to Feevy server, so we’ve another performance boost on the central server.