Omer Kilic (twitter)is now a PhD student at the University of Kent; I had the pleasure of working with him while I was there doing my degree a few years back. (In fact, Omer’s excitement about embedded systems is part of the reason why I finally got over my own fears about real hardware and started playing with small systems like the Arduino.) Adam Sampson has hooked him up with our nascent Plumbing library for the Arduino, and he has some tasty-tasty blinkenlights going on:


Parallel Blinkenlights! from Omer Kilic on Vimeo.

I’ll try to get a website and some getting started information up on the web in the near future. Plumbing is a library for handling input and output on the Arduino in a parallel-safe way, using the occam-pi programming language. The code for the above example probably looks something like this:

PROC main ()
   PAR
    blink (13, 500)
    blink (10, 400)
    blink (7, 600)
    blink (4, 300)
:

How do you do that?

For a number of years, we’ve been working with a language that is fundamentally parallel in nature. More importantly, the Transterpreter was at the core of Christian Jacobsen‘s doctoral work. The Transterpreter (other than having a really cool name) make it possible to run occam-pi programs on really tiny devices. The Arduino is an example of what I mean by a “tiny” device.

While I don’t know exactly how fast Omer is blinking the lights, I know he is blinking them in parallel. This means that they are blinking at the same time. When programming in occam-pi, you pretend that it is possible to do things simultaneously by writing PAR, and then you let the tools take care of everything else for you. I only say “pretend” because the Arduino only has one processor—but, despite this, we write PARallel code in occam-pi and let the tools take care of things, regardless of whether we have one processor or one thousand.

As a result, blinking four LEDs is one of the easiest things in the world to do. As you can see, Omer is blinking four pins at different rates of speed, all underneath one PAR block.

Open-source is Awesome

Everything we work on is open source (GPL/LGPL), and we have the first few chapters of a book drafted to support people learning with these tools. We’ve aimed the book at artists and (people are assuming are) non-programmers. That doesn’t mean we’re talking down—it just means we’re writing lots of tiny chapters that expose just one thing at a time. I’ll work on getting some minimal website up for the materials, get some mailing lists set up, and see if we can’t get a few people playing with the fun stuff. I wasn’t planning on releasing things this soon, but it looks like we’re starting to see a bit of interest. That must mean… it’s time to release!

You see, right now I’m out in Raleigh, NC taking part in POSSE (Professors’ Open Source Software Experience), which is graciously being hosted by Red Hat through the auspices of gdk. As Dr. Panic points out in his blog post about packaging software, I chose to do something other than “Hello, World” yesterday. I decided I’d try and get all the tools we need for the Arduino packaged up as a Red Hat package, so RH users could download things and dive in. That took a long time, and I’m not done yet… but I’m making good progress! Sadly, I can’t run myself under a PAR block… I’d be able to get so much more done…

We’ll get stuff online, and others can join in the fun. That can be part of tonight’s homework… along with everything else the POSSE organizers have us doing.

Packaging software takes a long time.

Most of the afternoon and evening, my screen looked like this:

20090721-packaging.png

Now, I have a headache that won’t go away, and it still looks like this. I suspect it is a combination of things, so I’m probably going to crash out early and get up early to continue packaging.

I’d love to have a good package of our Arduino tools, but I don’t think I can stay up and haxor it. My head just hurts.

Ah! Unto us a package is born!

The firehose is tough to drink from.

Dave showed us Planet Mozilla. Chris is showing us Planet Fedora.

The volume of information available is huge. But, I’m particularly interested in the fact that students can quickly/easily begin joining a community on the periphery. Through IRC, mailing lists, and aggregators, students can get up to speed quickly on topics they’re interested in.

I’m especially interested in the fact that the Fedora project has an open PR project. The fact that students in a liberal arts context can engage widely across these projects is something I have to keep thinking about.

I haven’t collected many autographs in my life. In high school, my quartet had a chance to sing the Blackbird Medley with the Acoustix; they signed a CD for us. In grad school, I had the opportunity to meet Steve Jackson, and spent half-a-day geeking out over LEGO Mindstorms robots and giving him a tour of Indiana’s virtual reality environment; I asked him to sign my copy of Car Wars. While presenting at USENIX a few weeks ago, David Brin gave the closing invited talk, and I asked him to sign my name badge. Those are, to the best of my (flawed) memory, the only signatures I’ve ever collected.

While I didn’t seek it out this new set of signatures, that doesn’t diminish the awesomeness of the gift. The POSSE organizers got OSS authors to sign a copy of Fogel’s Producing Open Source Software. And there are a lot of signatures.

signed-book.jpg

A critical lesson from today is that these projects are open, and we can take part. The barriers to entry are low. That said, I know what kind of effort goes into the little corners of the open source world that I’m part of (occam-pi and the Transterpreter, providing support for Untyped)—many of these people are associated with projects that I use to get things done on a daily basis. That’s really humbling.

Overall, very, very cool.

200907202124.jpg

This week I’m in Raleigh, North Carolina. The majority of my time here will be spent at Red Hat HQ taking part in POSSE 2009. POSSE is a gathering of faculty and open source practitioners where we are learning about and practicing the skills necessary to take part in open source communities. Our goal is to walk away prepared to begin introducing OSS into our classrooms and continue growing the community.

Today we covered a fair bit of ground, with conversation ranging broadly from technology to pedagogy. The people here who have worked to integrate their students into (large, production-quality) open source projects are, truly, inspiring. I look at the experiences that my students have in our classroom, and can’t help but want to provide them with opportunities like those I’m learning about. At some level, of course, that’s my job—to provide first-class learning opportunities for the students of computing at Allegheny, as well as students at the College as a whole. But there is more to it than that.

From the perspective of computing today, I can see why I want my students involved in open source software projects. On the surface, it provides them with incredible experience and resume fodder—it is a way for them to make real contributions to shipping products. (You’re probably reading this on Firefox, which is one of the projects we’ll be haxing on this week.) These large projects provide real-world experience for students that companies today are looking for. These kinds of projects have real users who provide real feedback. And to deliver working products to those users, students must learn to work with global teams, and how to learn the processes involved in managing a project in a distributed, sometimes decentralized manner.

Perhaps most importantly, however, is that students should feel empowered to dive in. The barrier to entry is low. And further, there are many ways for students to get involved. In fact, the students do not need to be studying of computing per se. The writing of documentation, maintaining wikis, testing software, localization (translation) are just a few of the ways that students can begin to engage an open source community.

Open Source @ Allegheny

One way to think about how I will integrate my experiences with POSSE into my local context is to think about the Computer Science Department and how I might bring my ideas to bear there. Or, I could think about how I might better serve a larger community—my College as a whole—as well as serve needs that are often overlooked in open source projects.

Allegheny has an excellent center for experiential learning that provides a home for cross-disciplinary courses with an outreach/experiential focus. Further, we have a strong English department, and a course in technical writing. I think it would be possible to discuss brining the technical writing course under the auspices of ACCEL, and begin integrating it with efforts like flossmanuals.net and writingopensource.com. This transforms technical writing from an academic exercise to one that provides high visibility for the students taking part, as well as visibility for Allegheny and its role in open/community-based projects.

This is a brainstorm at the moment, but I think it represents the most productive line of reasoning I have to date. Coupled with Allegheny’s Year of Social Change, this could be a good time to begin bootstrapping this kind of work in the liberal arts context.