Parallel programming tends to invoke images of expensive multi-core processors and clusters of blade servers buzzing away on interesting problems. But Matt Jadud, a computer science professor at Allegheny College, believes that even teeny-tiny devices like Arduino boards can benefit from a judicious application of parallel programming. At next month's OSCON conference he'll talk about how parallel programming can help artists and makers. In the following Q&A, he reveals a handful of interesting parallel applications and looks at the broader educational impact of low-cost computing.
Why does parallel programming make sense on a small device like an Arduino board?
Matt Jadud: The reason is that we're trying to solve an educational problem. We look at the Arduino as a brain for things like robots or other systems that you might want to play with, that interact with the real world. And the last time I checked, the real world is always happening. Often, multiple parts of it are happening at the same time. So even if you're watching one sensor, another is telling you something you should know about.
What we're trying to do is use languages that have been around for a long time -- in our case it's Occam -- and put it in a context where we're able to say "do this and this at the same time." And I want to let the software handle the complexity for me and make sure everything talks to each other correctly. We're trying to put that in more people's hands, so they can learn about parallel solutions without having to implement them from the ground up.
What are some of the interesting applications of Occam/Arduino?
Matt Jadud: What's nice about the language is it's very easy to replicate control across a lot of inputs and route data between processes. We have some people who are using this for art installation work, looking to control large numbers of inputs and outputs.
Another contributor is adding servo control code. Although that's not necessarily interesting in and of itself, it's really neat from having worked on this for a number of years to see somebody come along and say, "Hey, I want to make this better." I know that's the open source way, but it's still fun when it happens to a project you work on.
We've released the Mac version of our tools, and by OSCON we'll have the Windows and Linux installers done.
How can these tools help artists and tinkerers?
MJ: We wanted to give the Arduino community a choice of tools, and let people think differently.
For example, we were working with a student art major who was involved with the RepRap Darwin project. Through that interaction, we started to see what matters to an artist if they want to sit down and engage in some kind of interactive digital art.
Basically, an artist or a tinkerer or a hacker has a goal. They don't really care about learning Occam. They don't care about how this language is different from C. They just want to make a cat door that keeps their cat out when the cat comes back with a mouse. Or they want to make some kind of installation piece. Trying to focus as much on the user and the possible goals they might have is what's motivating our work right now.
How have low-cost computing devices changed the educational process?
MJ: Over the past 10 years, with the advent of Lego Mindstorms and broad adoption of cell phones, more computer science faculty have been willing to bring devices into their classroom experiences. But devices can be expensive and require tools that are closed or difficult to obtain.
Devices change rapidly, too. If I develop a curriculum and I need two or three runs of a class to really get all of my materials ironed out, by the time I'm done, the hardware and software have marched on. That's hard. I'm not even talking about the "lazy teacher" or anything like that. It's hard semester after semester to update software tools to keep up with a constantly changing platform.
What's wonderful about Arduino is that it's cheap. I have no qualms about a $20 lab fee for my students where they get to own the computer when they're done. That encourages them to continue playing afterwards. And I have confidence that even if the hardware changes, I can order 30 more Arduinos myself and assemble them. If I want a five- or seven-year run on a particular curriculum, I can get it. It means I have time for the tools to stabilize.
Because Arduino is open, it's a vibrant and exploratory community. When somebody goes out and buys an Android phone, they're buying a phone. When somebody goes out and buys an Arduino, they've got trouble they intend to cause. They're going to do something with that. That's an interesting space to be in when you're trying to develop tools to support learning and exploration.
Matt Jadud will be exploring this topic further in "Plumbing: Parallel Programming for Artists and Makers," a session at the 2010 OSCON conference.