Last week, I did a fair bit of driving around the UK (one of the reasons why this blog was quiet) which meant that I got a chance to catch-up with a backlog of unlistened to podcasts, in particular a whole set of presentations from my IT Conversations subscription. One episode that especially caught my attention was one of Jon Udell’s Interviews with Innovators (one of the best podcast series I know): Computational Thinking for Everyone, with Joan Peckham.
(For those of you who haven’t come across the idea of computational thinking, check out this earlier interview with Jeannette Wing, the blurb for which describes computational thinking as “ways of thinking and problem-solving that involve algorithms and data structures and levels of abstraction and refactoring [and that] aren’t just for computer scientists, they’re really for everybody”. See also: Computational Thinking, Communications of the ACM, March 2006/Vol. 49, No. 3 (PDF).)
One of the items that came up was the idea of passing by variables by reference, rather than by value. (If this means nothing to you, check out Pass by Reference vs. Pass by Value. [If you can find a simpler explanation, ideally as a CC licensed OER, please link to it in the comments below*.])
Now this by chance got me thinking about email, and the painful way people insist on mailing the same document to a cc list of recipients, and they all they reply with documents attached containing their comments on the original doc, and so on. Email used that way is passing by value. If a document is a variable, when we pass it as an attachment we pass it by value. So when a recipient changes the value, they have to return it (again by value) if they want the originator to see the changes they have made. They have to return it… More cc’ing, more attachments…
But instead, what if we pass a link (a reference) to a Google doc. In that case, anyone can change the doc, and everyone else sees the consequences of those changes. I add a comment to the doc, you can see it. And I didn’t havr to email the doc to you as an attachment. We were all passed a reference, and when any of us makes a change to the thing that was referenced, whenever anyone else looks at the doc, they see the changes I made. Passing by reference.
Wouldn’t it be much easier if we passed documents by reference, not by value?
And then came the next thought – the old, old idea I had about wikimail is actually all about passing the contents of the body of an email by reference, not by value. Long time readers may remember my wikimail (aka read/write email) ramblings from some time ago (and also this
possiprobably broken wikimail GM script for GMail, but if not, here’s a recap: the body of the email is a wiki page.
When I send you an email, I write a wikipage and send it to you. When you open the email, you actually open on a wiki page; so you can reply to me by typing in the page and sending me a wikimail reply.
Thinking about the usability of that, maybe rather than getting a new reply message in my email box, I should get a blue flag ‘recently changed’ notification on the “original” email, rather than a red flag (unread) reply message in my inbox? Alternatively, keeping tabs on the ‘recent changes’ feed to a wikimail page I’d sent (or received) would alert me to ‘responses’. (These change alerts could be tweeted to me, maybe?)
And just as media wiki pages have a content tab and a discussion tab, I guess wikimail messages could have a similar split personality?
Anyway, anyway, when I got back home, I saw announcements all over the place to Google Wave. I don’t know if it’s anything like wikimail (I haven’t had a chance to look at the info/watch the movie at all yet), but if not, I think there’s still scope there for reinventing mail by reference, rather than by value…
* This suggests a strategy to me for releasing OERs: having somewhere where I can request a resource that addresses a particular topic. OER publishers can then use that list to provide information about what materials the community needs and what they are likely to reuse… In this case, I’d like a mini tutorial on pass by value vs. pass by reference, in the abstract (i.e. not tied to the syntax of a particular language).
Here’s something to be going on with:
(Bah, WordPress can’t decipher a predetermined start time – watch the video starting 4 mins 19 seconds in…)
PS for a thought provoking initial critique of Google Wave, see Tim O’Reilly’s Google Wave: What Might Email Look Like If It Were Invented Today?.