On 11/25/06, M. Edward (Ed) Borasky <znmeb / cesmail.net> wrote: > 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. -- Giles Bowkett http://www.gilesgoatboy.org