For the past couple of weeks, I've been playing around with Ruby on a
Gumstix computer. This is a small machine -- it fits in the palm of an
adult hand -- with an ARM (Intel XScale variant) processor, 16 MB of
flash disk and 64 MB of RAM. The basic component boards are, as the name
implies, about the size of a stick of gum. There are two models, one
which takes an MMC card and the other which takes a Compact Flash (CF)
card. The operating system is Linux (2.6.18 at present). See
http://gumstix.com
for the hardware, cross-development toolchain and other software details.
I love those little things. I don't have any yet, but I'm planning to
get some for a toy robotics project with a target date for late summer
/ early fall next year.
I have enough of this working that I'm looking for testers and ideas for
applications. The basic software distribution includes Ruby, although I
had to tweak the Ruby makefile a bit. SQLite 3 already runs on the
platform as well, as does lighttpd, so one obvious one is a Rails port.
I have most of the pieces of the Rails port working -- the hardest part
is getting all the paths and environment variables correct for both the
cross-development toolchain and the target system. Because of speed and
space issues, anything that involves a C compile step, such as
sqlite3-ruby, needs to be cross-compiled and cross-linked on the host
development system.
Right now, the pieces that are mostly working are on RubyForge at
http://rubyforge.org/viewvc/RailsOnAStick/?root=vgrails
You'll need a Linux host, Ruby 1.8.5 and Rake for this. As far as I know
any Linux with Ruby 1.8.5 will work, although I only use Gentoo so there
are probably a few things I take for granted that will need to be added
to the project for other hosts. So ... what would you do with one of
these? A robot that speaks Ruby? Hmmm ... how about a robot duck that
types? A "massively parallel" map-reduce engine (non-floating point --
the hardware doesn't have a floating point unit)? A network monitoring
device?
OK, well, if I had an unlimited budget, I'd buy a couple thousand of
them and line the inside of my car with them, set them up on a private
WiFi network with Hadoop -- an open-source Java implementation of
map/reduce and the Google filesystem -- and see if I could set up
massively parallel computation within my car so my car could plot the
behavior of neighboring cars, drive itself, understand speech
commands, and talk. In other words, in an ideal world, I'd use this
technology to build my own Knight Rider.
However, to be a little more realistic, and to speak about Ruby rather
than Java, there was a recent project using those things which added
them to tiny remote-control helicopters and set up a WiFi network to
explore flocking in flying robots, and they had a simple Web
application for their user interface. That would be a perfect use of
Rails in this context, and of course you could write the flocking code
in Ruby as well.
http://perso.orange.fr/pascal.brisset/chromicro/doc/chromicro.html
My own project for next year is going to basically involve creating
"Simon," the 80s toy, with four animal skulls, four Gumstix boxes, and
a set of LEDs. I haven't figured out the input devices yet. This is
for Burning Man so it's going to be a bit garish and otherworldly, but
the basic idea is, Simon was a little toy which threw aribitrary
sequences of flashing lights at you and you had to put them back into
the machine in the correct order. The sequences grew quicker and more
complex as you levelled up in the game, and this implementation will
be played in a small ring, where you have to actually physically run
from light to light to replay Simon's sequences, and of course the
sequences will be delivered by LEDs located in the eyes of painted
animal skulls. It's going to be quite terrifying. It'll entertain the
children at Burning Man during the day and send the festival's
acidheads into therapy for the rest of their lives during the night.
Obviously there will be Gumstix boxes attached to the back of each
skull, along with a WiFi network and some simple code to coordinate
the flashing of the lights and so on and so forth. The lack of a
proper input device is the remaining hurdle, but I'm pretty sure I can
figure it out.
Obviously, if Rails is available on Gumstix, I'll use it in two ways
for this project: in the way the robot helicopters people used their
Web interface, i.e., as the admin or control interface, and
additionally I'd probably use the "restful" stuff in edge Rails to
coordinate the "Simon"-style sequences of flashing lights.
I'm not actually sure about that, I was originally planning to do it
all by hand, but I've found it's very interesting to push Rails
further than it's supposed to go, and it usually holds up pretty well
when you do. Besides, if it's available, well hell, why not.
Anyway, in terms of my timeframe, I'm not even planning to get my
first box until next year. I'm getting an illuminated fur coat, which
is not going to be cheap, and then there's the usual December
holidays, with all their associated expenses. However, Gumstix are
pretty cheap, even with the WiFi option.
Wow, I just checked the web site, they look SO different than they
used to. They didn't used to have the cases on there, it's a big
change visually. Hmm, also it looks like they use Bluetooth instead of
WiFi. I have absolutely no idea what the difference is there, I have a
feeling it probably doesn't matter.
Anyway, I am definitely massively interested in this project, but I
probably won't even get my first box until early next year.
···
On 11/25/06, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:
--
Giles Bowkett
http://www.gilesgoatboy.org