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.

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.

Mel was musing on documentation in open projects recently.

In our recent code sprint on the Transterpreter project, we realized that for years we have had far too little documentation. Specifically, we’ve been lacking documentation on not just one front, but two.

First, we’ve lacked developer documentation. That didn’t change during our sprint. Someday, but not during this sprint.

200907181216.jpg

Instead, we focused on a new (user-centered) platform and end-user documentation. Given that we are working on a language and a runtime for that language, it becomes difficult to document things for people. “I downloaded it… now what do I do?!” Invariably, we say “write some programs!” That’s… less than ideal. We realized that if we want more people to explore parallel programming for embedded systems, we’re going to have to provide an easy path for engaged beginners to dive in and be successful from the start.

So, we brought our language and runtime to the Arduino. (There’s some cool videos over on the Transterpreter blog; check it out.)

200907181202.jpg

The Arduino is a piece of “open hardware,” meaning the design of the device is free and open. It is powered by the Atmel Atmega328, a 16MHz processor with 32K of flash and 2K of RAM. To many people, those are small numbers, but to us, they’re enough to write interesting parallel programs for controlling embedded microcontroller projects.

We have drafted the first 50 pages of a book that supports programming these affordable ($25 or less), open devices in one of the few parallel programming languages around. Our support library is called Plumbing, and we are excited about completing the first ten chapters and sharing them with a group of “alpha testers” who can help make sure our writing is appropriate for our target audience.

Who is our target audience? We have chosen the Student Artist as our target persona for the book. This is a notional college-age student who is studying art, has no significant programming experience, but wants to add interactivity and computation to their work. They don’t want to learn to program (per se), but instead want to achieve some end: a piece of art, an installation, or similar. The electronics and programming component is fascinating to them (and perhaps a touch daunting), but they’re willing and ready to learn what is necessary to make their art as successful as possible.

This persona, we believe, overlaps a great deal with the MAKE community, and even with many students of engineering and computing. However, we have explicitly forced ourselves to consider a target audience that is not studying programming. This forces us to think about what concepts we introduce when, focus on outcomes and results (as opposed to belaboring theory up-front), and do our best to support the artist/maker in fun and thought-provoking explorations from the start.

If you are interested in being part of the group who gets a look at the book early, please either drop me an email (matt at transterpreter dot org) or leave a note with contact information in the comments (a URL to your contact info, an email address, etc.). We’ll be finishing the drafting and revising that material over the coming weeks, and hope to have an initial release of the software (a simple IDE with Arduino support built-in) soon.

The MDI AirCar prototype is a toy I want. (Full article at Edmunds.com.)

2010-aircar-f34-mdi-fd-500-7.jpg

It runs on compressed air. If you have a renewable source for compressing the air (eg. hydro or wind turbines), it is a truly zero-emission vehicle.

It has a 180cc, two-cylinder engine that runs on compressed air.

2010-aircar-eng-mdi-fd-500-3.jpg

You can see the air cylinders underneath the seat.

2010-aircar-eng-mdi-fd-500-1.jpg

How awesome would that be for in-town driving? All we have to do is get all the bullshit Hum-Vees off the road so I don’t get killed the first time someone talking on a cell phone while yelling at their kids in the backseat loses track of the red light they’re approaching…

For the next three weeks, I have to friends and colleagues here in town. We’re busy hacking away, laying some foundations for the “next steps” in the work that we do surrounding concurrent and parallel programming languages.

It does mean that we have a very full house, but on the flip side, we’re eating well (everyone likes to cook or bake) and getting good work done so far. That, I suspect, will continue.

Especially the eating well part.

Speaking of which, I’m no longer frying, but instead burning, the mushrooms I have in the pan…

I'm going to USENIX '09

In two weeks, I’ll be giving a talk (along with Christian Jacbosen) at USENIX ’09 entitled Towards Designing Usable Languages. We’re excited about the talk, and it should be very, very exciting.

I believe the talk will be on-line when we’re done, so I’ll make sure to point to it. If you’re in the San Diego area, and want to try and get together, drop a note—the schedule will be tight, however. We’re in-and-out like a burger.

Friends of ours were heading through from upstate New York through to the Cleveland area. Erie, as it happens, is right on I90, and there are plenty of tasty places for a quick bite in such situations. So, we scooted up with Matthew and had a wonderful little lunch at George’s restaurant.

20090523-georges.png

Located right near the intersection of W26th and State, it has almost no parking to speak of. However, it was a respectable little diner, with friendly staff and tasty food. The patty melt, fish sandwich, and chicken and gravy were all sampled, and it was agreed that they did OK. For a place that looked a bit like a dive, it was priced right and very tasty.

Matthew, in case you were wondering, had the chicken gravy. His appetite has grown tremendously in the first two months of life. :D

Now, we are off to find milk, yogurt, and other tasty treats.

baa

This is outrageous.


Absolutely insane. Awesome, but insane.

Those crazy Welsh.

I received the funniest piece of SPAM today. In fact, it was almost not-SPAM. As far as I can tell, a human being wrote me. Possibly. It could just be a particularly eloquent script.

The email was about this blog.

In particular, my weblog has (apparently) been given a 6.0 out of 10.0 in the “Recreation” category at blogged.com.

Wacky.

image001.png

Just plain wacky. I’ll give them this much link-love for completely arbitrary reasons. I mean, why not. Like all the children in Lake Woebegone, I’m apparently “above average”. This is almost as entertaining as when I discovered that Squeaky owned 80% of the market share in my blog on blogshares.com.

Mike, I have not forgotten about my commitment to give something new a try.

I did want to point out, though, that my favorite shoe is now available in a biodegradable flavor:

200903091742.jpg

The Brooks Trance line is going biodegradable (as reported on MetaEfficient). I’m quite excited about this. First, however, I have some other shoes to beat up. And, some non-shoes to try out as well.