Wednesday, August 26, 2009

Illuminato X Machina In Action

I got a few emails about seeing the Illuminato X Machina in action, so here are the first two videos I took.

Last week, I took a few videos of Dave and Chris programming and running an array of Illuminato X Machina cells. In the first one, there are only two cells. As soon as Dave attaches the second cell to the first, it automatically boots up, downloads the code, and begins to execute the same program.



The idea is the same, but when there's two arrays that are each pre-programmed, the most updated code will "infect" the rest of the grid until they're all synched up. In this case, the cells are set up to accept compare code against what their neighbors are running, and download it if their neighbor's code is newer.



With blinking lights (my language of choice :-) the Illuminato X Machina code sharing scheme shows robustness in action. Even if one of the cells stops working, the others can carry on. And if the cell comes back online or is replaced, it will autonomously boot up and check with its neighbors to pick up the latest program...and continue running.

The code for these two demos will be up on www.illuminatolabs.com soon, and I'll be posting a couple more videos as soon as I get them uploaded. In the meantime, feel free to email me at jhuynh at gmail if there's a cool project I should try with a tribe of IXMs...

7 comments:

b said...

Very cool, so what happens when you upload code from two different USB connections to different grid points? Does the code get overwritten in a first-come first-served basis? Could you have waves of code rippling through the system?

Chris said...

@b
That's a great question!

At the time of sketch compilation, the code is date stamped. The IXM will only accept newer code than what he currently has.

You can also set voting rights to control code flow through the grid. Setting owner id of the board prevents different owners from programming each other.

Matt said...

it'd be cool to try to write one version with blue lights, and one with red lights, date stamp them the same, and see how they propagate through a grid.

on the other hand, something i've been wanting to check out is what happens if you program one in the middle, does it ripple out symmetrically? there's a slight propagation delay randomizer involved, so it likely would exhibit some "chaos" :-)

Jim said...

Could you explain a bit about the 2-way switch. I am interested in it's purpose. Why does it require four chips, U15 through U18 on the north sheet of the schematic? It looks like it could explain how Cell #141 could power down Cell #1914 with the help of the neighbors but he can also attempt suicide by disconnecting all his sides?

I wonder what a shield would look like on an IXM :-) Xbee, H-Bridge, SD card, one of your battery packs the mind boggles.

I am fascinated by this design. There seems to be as much art as system in the design. As others have said, very impressive work.

Rich said...

If a cell can program it's neighbor, doesn't this also open up the possibility of a bug (or virus) spreading to the entire array? Remember how on the TV show how Star Trek:TNG finally got rid of the Borg? They infected one unprotected cell, and watched it propagate...

-Rich

Matt said...

@Rich yep, the propagating code is an enhancement but can also lead to "biological" behavior - not always a positive thing. on the other hand, you can also disable that in the program header ... i suppose that'd be the antidote?

Rich said...

Ooooh! A 3D, real-time version of Conway's "Game of Life"! Biological programming comes full circle. Conway's Life was my first "real" programming assignment. Actually, this would be a cross between "Life" and "CoreWars", if anyone here is old enough to remember that one.