Thursday, August 20, 2009

Physical Computing Meets Modular Robust Computing

I think I first heard the term physical computing when I met Tom in NYC, and talked to him about his research interests. There's something very simple and practical about the idea: the more you can touch it and play with it, and manipulate it with your hands, physically, in front of you, the more intuitive it is to understand. Physical computing is all about learning electronics and engineering with your hands. That's what the Arduino was initially all about, for simple circuits and basic components. What makes physical computing fun is that things become easy to pick up and learn, guys with no previous engineering experience can pick it up and actually get it and start to use it.

Now that physical computing is becoming more widely appreciated, Dave thought it made sense to try to apply physical computing to another topic, albeit slightly higher in the learning curve in comp sci and computer engineering:

-Parallelism,
-Interconnectivity,
-Robustness and
-Modularity

These are like the four horsemen of the computer architecture apocalypse for computer scientist majors learning advanced engineering topics... they're coming to get us all, one of these days. Probably sooner than later. Everyone's coming out with parallel processors, but the only tool out there to learn about parallelism and parallel processing is big, heady, theory books whose average word size is 22 letters long, and all the citation references are at the end of the book, reminding you of why hyperlinks were invented in the first place. But yeah, I hate having to read big words when I try to learn on my own. I like little words. I will not eat green eggs and ham:

I do not like the clockspeed wall,
It will not run my code at all.
The speed of light, it will not fall,
All my clock pulse are belong to EOL,
Bringing register sync down to a crawl.


Ehhhh... Ok not that bad, but you get the idea... actually that sounded a bit more like some weird chant than a Dr. Seuss poem.

In the Slashdot article, one comment mad me laugh, even though it wasn't highly karmad. It pretty much sums up a lot about the physical computing nature of the Illuminato X Machina, even though the comment I think was meant to be a joke. Dave has actually written code to do exactly this, and it's baked into the default API on the Illuminato X Machina. The only part that's different is at the end...

...Begin quote...
Anonymous Coward
Independent decision making modules Cell# 3712: Hey guys, have you noticed that #1914 never seems to accept requests?
Cell# 141: Well, he does sometimes reject.
Cell# 4439: I don't route to him very much anyway.
Cell# 1142: He rejected the last three of mine. I kind of agree.
Cell# 3712: So what should we do about it?
Cell# 141: Can't we just fry him? There's plenty of us anyway.
Cell# 3712: That's a bit harsh.
Cell# 4439: Ok, I got the records here showing that he rejected 90% of requests the last week but allocated two hundred percent of average power to himself.
Cell# 3712: That motherfucker, let's do it then.
Cell# 1142: I don't really want to fry him, but I don't mind that much if you do.
Cell# 141: Ok, gather up all your spare power, STAT!
...End quote...

EDIT: Cell# 141 ought to be saying: Ok, I've tallied the votes and we all agree. Let's power this guy down starting with me disconnecting him, lest his fault is indicative of a failure that could become systemic, maybe because he shorted out. Or maybe the Deus Operator unplugged him. Don't know don't care he's broken.

I suppose you could also have an Annoying Devil's Advocate cell say, "just playing devil's advocate here, but shouldn't we all try to send Cell #1914 a packet just to see maybe he's sleeping". Or a Flamebait Cell say, "Wait is this really the most efficient way to handle the situation, you overzealous socialist cells. I've decided randomly to keep trusting him for the next 5 messages I send then he gets the can." Or Middle Management cell, "Wait, I understand what you're saying but we should really ask our boss before we make any decisions right now... I'm not comfortable committing to this right now." I spend too much time in meetings.

At least the Illuminato X Machina is getting people to talk about modular robust parallelism in new, normal-person-speak, which I think is needed as parallelism increasingly grows mainstream... the goal is to make experimentation with robust modular parallel computation accessible.


4 comments:

Dave Baldwin said...

Have you guys seen this yet?
http://msdn.microsoft.com/en-us/concurrency/default.aspx

you’re version is so much less PR b.s. than this MSFT stuff

Matt said...

@dave - thanks for the link, actually some of the links below on that site looked interesting. but that first paragraph is a zinger...ha ha ha... "Microsoft’s goal is to increase productivity by encapsulating complexity" should read "Microsoft’s goal is to increase productivity by encapsulating *IT IN* complexity" - by coding everything in C# with poor documentation and .net frameworks that crash and make you click away vista authorization popup alerts every time you try to open a control panel :-)

St.Eligius said...

A little suggestion for the liquidware page selling these things (if you have any control of these things) please post a link to the API documentation for the little buggers. I think I might be more inclined to buy if I knew what I had to work with.

Matt said...

yep,... of course... t minus 10 hours... :-)