Software and People

Someone wrote to me yesterday with a couple of questions, and I thought the answers might be useful to other Friki users. The first question was about the format of the "wiki.transform" file which defines how Friki converts stored pages to valid HTML:

Is the transform language PHP, Perl, anything or would I have to read the Java to understand?

The transform language is pretty simple. Each line of the transform definition starts with the name of a Java transformation class (the ones supplied with Friki are in the "default package" so they can be used without package prefixes). You can create your own and use them without rebuilding Friki if you want to. For the great majority of transformations you shouldn't need to bother about the implementation details, though. Here's a list of the provided transformers:

  • Replace sep from-pattern sep to-pattern sep
    replace all matches of from-pattern with to-pattern. The transformed text may be re-transformed by later rules, if they match

  • Lock sep from-pattern sep to-pattern sep
    Like "Replace", but locks the resulting text to prevent it being messed with by later rules. (Note that "Join" cancels this effect)

  • FilterReplace filterclass sep from-pattern sep to-pattern sep
    Like "Replace", but passes matched text through the a user-supplied conversion routine before passing to the replace pattern. Typically used where the transformation is more than just a simple replace.

  • FilterLock filterclass sep from-pattern sep to-pattern sep
    Like FilerReplace, but locks the resulting text.

  • Join
    Joins all the locked and unlocked sections together again so that later rules apply to all.

  • Include filename
    read rules from a separate file (note that this is not fully working in 2.1.1, so I recommend against using it for now)
Notes:
  • sep can be any character which doesn't appear in the patterns on that line. Friki assumes that whatever character appears first must be the separator.
  • all patterns use "regular expression" syntax. (see the jregex docs or pick up a good book about regular expressions for more details)
  • In Replace and Lock, use $1..$n to represent matched groups in to-pattern. In FilterReplace and FilterLock, use &0..&n to represent filtered matched groups.
  • rules are processed in the order they are defined in the file

The second question was requesting a feature found in several other Wiki implementations (though not in Ward Cunningham's original):

I have added all the changes in your notes but still not creating all the links I would like. Is there a transform to allow FreeLinks like [[dslfnwqeoin]]

Luckily this can be done without stopping or restarting the server or the application.

  1. Go to your Friki data directory (the one you entered when you first started Friki)
  2. Edit the file wiki.transform
  3. add a line
      FilterReplace wiki.LocalWikiLink !\[\[(.*?)\]\]!&~1!
    immediately before the existing wiki.LocalWikiLink line
  4. reload your Friki configurations by using
      http://<your-server>/friki/button?button=RESET

Now you can have WikiWords like [[hello, world]].


Friki is a Java Wiki. It is simple to deploy (just drop in to any modern servlet container), small and very easy to customise after deployment. Supports the classic wiki markup and a few common extensions. Friki is available for download from sourceforge.

OK, that's not exactly what SebastianFiedler is discussing, but when reading his post "do we have a content problem?" I felt a strong resonance with my own thoughts (see my recent blogs here and here).

Sebastian's viewpoint seems to be that there is plenty of "content" out there already, it's just that educational establishments are unfamiliar with using it. For some fields of study that's patently true. I'm currently planning to teach a course in Java Software Development from September, and I'm spoilt for choice. There are even plenty of classic "learning objects" such as The "rules roundup" game at JavaRanch.com. This might not be typical, though. Such topics are "native to the internet" and have both an obvious vocational payoff and a large pool of skilled people willing to create and share material, so it's to be expected that there will be plenty of stuff available.

There are other fields of study where this wealth of material is not so easily available. For whetever reasons, teachers and practitioners have not made their resources available to the community. I know plenty of teachers who keep a treasure trove of learning materials in cupboards, drawers and files. I can easily imagine that this situation is endemic in subject areas that have little direct involvement with creating digital content.

I still feel strongly that a huge benefit could be gained simply by encouraging a culture of (and incentives for) sharing, and making that sharing as easy and painless as possible.

A few days ago I posted some thoughts about learning repositories. Alan Levine commented with some detailed points that I think are worthy of a post in their own right.

The problem with learning objects to date is that everything has been focused on building the collections, making piles of objects, and almost nothing on how to create something meaningful with them.

I agree with this. And I'd go even further and suggest that a lot of effort has actually been spent on making fancy (but ultimately empty) containers to put these learning objects in. Implicit in this approach is an assumtion of "if you build it, they will come". Unfortunately, this assumption may not always hold. As a thought experiment, think about your own, your colleagues, and your students attitudes to sharing. Not especially in the context of sharing "learning objects", but sharing in general.

I'm an habitual sharer, but I know I'm unusual in this respect. As a blogger, I'm sure you have some of the same instincts. But sharing is not easy, and often misunderstood. Last year, I was censured by the Dean of Education at the college where I work and study for putting some of my own notes, taken during a teaching course I attended, on the web. I fought back, and gained a grudging acquiescence, but it became clear that implied college policy is that everything, somehow, ought to be kept secret.

How would you and your colleagues feel if your students could easily find (and copy/paste!) past work by other students who had attended your courses, or who had taken similar courses elsewhere? Would this make your work easier, or harder? How rigorous are you (and your colleagues) about researching and ackowledging all the sources of information and teaching materials? Might there be any copyright, licencing or potential plagiarism issues? How confident are you and your colleagues in writing style - "Publishing" is a long way from making a few rough notes for a small and specific audience. Might any of your, or any of your students', work cross any confidentiality boundaries? Who owns the work? Who has the right to share (or to withold) it? What is the commercial value of the work - do you have competitors? Might something in the work be possible cause for a lawsuit?

It seems there are an almost infinite number of reasons not to share. I have a gut feeling that maybe the time and effort spent on making learning object repositories might actually be better spent on encouraging a culture (and an understanding) of sharing. Without this there is a real danger that all these pretty and expensive boxes will remain populated only by self-conscious examples, placeholders, and tumbleweeds.

The problem with "Web as my repository" approach is that the web contains vastly more junk that would need to be sifted through. Busy teachers who are not techies want a more refined collection.

Certainly. But this is not a problem unique to this domain. It is faced by every special-interest group, and is being aggressively tackled by teams across the web. I find it difficult to see how educational object repositories are so special that they should be built in isolation, ignoring (or clumsily re-implementing) work done to improve internet "findability" in general. Why build a repository when you can get the same benefits by just building an index? Things like dmoz, h2g2, and Wikipedia might serve as good models to start with. I can see huge benefits simply from disassociating the the notion of "a way to find things" from "a place to store things". After all, we have the worlds biggest "place to store things" in place and working already :)

The theory also goes that such objects have the capability to be assembled into larger chunks of content, so there would be APIs or meta information that might describe what can be connected. The "authoring" is the assembling of these discrete pieces into a chunk of learning content.

I'd love to find out more about what progress is being made on this. I currently find it difficult to imagine how this might work. Proceding from the assumption that if diverse things are to "plug together" the connections need to be standardised, I would expect to see a lot of evolving draft specifications of formats, interfaces and adapters. I guess I must not be looking in the right places, because I can't find a way to "plug" my colleague's Visual Basic "quiz" program (with its wealth of PowerPoint content) together with my Java Wiki software and the JavaBlogs RSS aggregator service (for example).

The objects most certainly would not be textual- they would be things like Flash, applets, shockwave, etc- stuff that Google cannot readily index. What you describe for some people more more like information objects or just media assets. A learning object might be something like an applet for measuring pH that could be connected to say another code object that can simulate the collection of test materials.

This I understand. Indeed, it was the main thrust of one of my blog entries a while ago. My point this time, though, was that in cases like these it's not the object per se that should be indexed, but its metadata (and, incidentally, the references to it, reviews of it, discussion about it, comparisons with it, blog posts on it, and all the richness of the textual web.) One of the great enablers of the web is its distributed, asynchronous model - anyone can reference, connect, and annotate. Any monolithic repository design looks limited and inflexible in comparison with this.

I had mixed feelings when I read this post about "Homogeneous templating of distance courses" from Randy Brown at Open Artifect. On the one hand I felt slightly envious of the chance to work on on-line distance education, and impressed by the quoted retention figures. On the other I felt saddened by the imposition of a mandatory look and feel to his courses.

I work part time as a teacher, and part time developing and maintaining software for commercial customers. Imposition from above of inflexible, poorly-thought-out "corporate standards" is a curse I face every day when developing software. Until now, I have managed to avoid it in teaching.

Regular classroom teaching seems to be a very individual, performance-oriented, even lonely, task. It's accepted that schemes of work and lesson plans will need to be adjusted to fit the needs of the learners from moment to moment. If one teaching style falls flat, try a different one. All the effective teachers I work with have developed individual approaches and continually work to refine and adapt them. Attempting to impose a common teaching style for all staff, all students, and all courses should seem clearly nonsensical.

And yet, when it comes to on-line teaching, all this common sense seems so easy to ignore. The same knee-jerk reactions that drive ill-informed committees to impose a single viewpoint on staff and products in industry now also appear in college boardrooms. I would be really interested to discuss the justification of why a common look and feel to teaching resources would ever be a good idea. In my (albeit naive) experience, the number one thing that catches student interest is novelty. As soon as things get "samey", learning becomes less of a journey of discovery, and more of a chore.

Observation from my industry experience seems to hint that most often the imposition of common style and standards is not done with any particular thought, but arises from some semi-conscious notion of "branding" or a kind of feeling that, somehow, more-similar is better. This is tenuous (to say the least) inside corporations, and in teaching it quickly becomes counter-productive. Would it make sense for all the teachers at a college to wear the same clothes? Would it make sense for a chemistry lab to have the same furniture and pictures on the wall as a Spanish or philosophy classroom?

I'm sorry if this comes out as a rant, but sometimes I despair when I see mistakes being repeated. Sigh.

I recently stumbled onto the The 1st Annual 1 to 2K Classic Text Adventure Competition, and ideas for it have been spinning in my head ever since. Rules are pretty simple: it must be a playable "classic text adventure", one of source code or executable must be below about 3000 bytes, and it must run on one of a (large) list of old and new computer types.

As I write this there are already a few interesting entries, mostly written in BASIC of one sort or another. I have some cunning plans involving assembler and compressed text, but my assembler skills are very rusty right now, so I hope I can find time to get it done before the deadline.

The whole thing is seriously retro, but sure sounds like fun...

Over at Auricle, Derek Morrison has gathered together some information about "learning object repositories". It's an interesting article, but it some ways it left me even more puzzled than before I read it. I'll try and explain.

Derek writes:

We want easy authoring, updating, archiving, retrieval and overall management of such material. We also want it to be finding and retrievable by software clients and even software agents/robots as well as humans.

This seems a reasonable set of requirements for a repository. What puzzles me is the proprietary and complex nature of the solutions reviewed.

Let's look again at the list of requirements. I'm not entirely sure what "authoring" means in this context, so I'll skip that for the moment. "Updating" and "retrieval" are commonplace services offered by every web/FTP server on the planet. To me "archiving" usually refers to keeping copies of obsolete material for potential but unlikely later reference. This also seems pretty easy using ubiquitous technology like FTP and zip. I may not understand everything that "Management" entails, but certainly things like associating objects in directories, moving and renaming them are also "business as usual" on the web.

So, it seems that storing, updating, archiving, retrieval and some basic "management" are available simply by placing learning materials on a garden-variety web server. Now, however, we get to "finding". This is arguably more tricky, but stop and ask yourself how you find stuff on the internet at the moment. How did you find this article?

I'm still unclear what anyone actually means by the term "learning object", but if the stored "learning objects" are primarily textual in nature, then they should be relatively easy to find using regular search engines such as Google to look for known content phrases. There will obviously be lots of cases, though, where searching by textual content is inappropriate. In this case it seems more reasonable to search by some form of metadata. So write this metadata in a text file or web page, include a link to the URL of the real resource, and you're back able to use regular search engines. Find a useful resource? make a link on one of your own pages so you can find it later ...

Some sorts of web sites have an even smarter method of finding things. A typical example is that of weblogs. Many weblog authors use software to create the entries which sends a "ping" to one or more "aggregation" services. Exactly the same methods could be used to track additions and updates to arbitrary collections of learning objects. They could even use exactly the same RSS, RDF or Atom message formats that the weblog systems use to distribute "feeds" of updates.

Now back to "authoring". I really don't know what is meant by this term here, but I'll hold out my hands for clarification, and try a few guesses while I'm waiting. At it's simplest level, I guess "authoring" is the same as writing. If I prepare a handout, or some lecture notes, or a graph, or whetever, I just need to get it into a form that can be stored on a web server. Stuff that only exists on paper, or a hand-drawn OHP slide, or a whiteboard, will need to be scanned or photographed. Most other forms of "learning object" will probably be in electronic form already.

It may be that what distinguishes "authoring" from mere "writing" is the production of accompanying metadata. If so, then it might make sense to produce some simple applications to walk "authors" through the choices and ensure things make sense. Such applications can also take care of naming and uploading the content and metadata too, if they want.

To summarise. I have a strange feeling that I must be missing something significant about repositories, management and authoring. If I'm not missing anything important, what's stopping us from just using the world wide web as it was intended? Why would we need specialist learning object repositories? What are the significant benefits such systems offer, that make it worth paying for, configuring, learning to use, and living with the bugs in these systems?

We went down to a family Christening, and associated eating, drinking, and socialising, in the west country. I have several relatives that live in and around the village of Cannington, near the town of Bridgwater in Somerset.

It was a very pleasant event, made even better by my brother Rod and I taking my two daughters fossil hunting the following morning, while most of the others were still recovering. The story is that about 25 years ago, Rod and a friend spent a week or so cycling around the area and discovered a small bay with a rocky beach. When they went down to sea level, they found hordes of ammonite fossils, many in excellent condition. They took a few photos, but didn't bring back any souvenirs. He had been intending for years to go back and check to see if his memories were correct, so this seemed a fine opportunity.

After navigating largely by memory, we eventually found ourselves in East Quantoxhead, from there it was out of the car and a mile or so of walking through woods and fields to get to the coast. Without a guide, I'd never have found my way there on my own. It was well worth it when we got there, though. The beach is fascinating, with really clear alternating layers of hard and soft stone. The hard rock layers are composed of lots of separate rocks, each with irregular sides but a flat and smooth top and bottom. In places they feel like a man-made flagstone pavement.

Finding the fossils was harder. I guess that they are only present in some of the layers, and the beach is composed of weathered chunks of stone from all at once. Eventually we found a richer area, although not the bounty that Rod remembered. Later we talked to a local, who pointed out that the cliffs are continually eroding, and Rod must have been there at a particularly lucky time. Still, I found enough to take a nice photo of my eldest daughter Elizabeth with the mark left by a medium large ammonite fossil, and found a smaller one (about 5cm across) to take home. Great way to spend a morning!

I just read at elearnspace a bit of a grumble about the pace of change in e-learning terminology.

I ws a little surprised, as (from my point of view) e-learning doens't seem to be changing especially fast. This could, of course, be simply because I'm not aware of the changes. However, it could also be because I'm used to the pace of change in the computer business, and find regular institutional learning (or whatever you prefer to call the kind of learning that doesn't have the 'e' prefix) to be glacial in comparison.

It seems to take several years for any new subject to percolate through the jungles of politics, the swamps of beaurocracy, the deserts of accrediting bodies and the graveyards of college faculties. I'm involved in the planning for a new programming course at the college where I work, and I have colleagues seriously recommending teaching it using QBasic, a language that has been obsolete for at least a decade. Worst of all, I can appreciate why they make this recommendation, and see how it could be a better match to the moss-covered syllabus we've been provided with. Against this backdrop, the changing fashions of e-learning must indeed seem like a whirlwind.

For the part of my career that's in the computer business, I long ago gave up attending college or training courses, preferring to study more up-to-date books on my own. Then I became irritated with the way books always seem to be at least one version behind released software, so I went to read documentation on the web. These days even that has lagged behind, lacking the effort being put into writing documentation rather than adding features, so I hang on mailing lists, wikis and RSS feeds, and get news of updates and discussion within hours. Compared to this, progress in most areas of e-learning is still a leisurely dance of articles, conferences and "we might try that next year".

Just in case anyone monitors this blog, I've been busy for a week or so with a bunch of end-of-term paperwork, and I spent the weekend 250 miles away at a family get-together.

Add that to a bit of instability in the blog server, and me deciding to do an overhaul and upgrade on my firewall box, and you get no perceptible internet output for a while. I have got a bunch of stuff queued up, though ...