The edc3100 “inspirational posters”

The following is a work in progress intended to record the “inspirational posters” that I use on my course website. Mainly so I an remember what I used and why.

Inspirational posters??

Rather than take up the space “above the fold” on my course site with reams of text or less than useful navigation icons, I have moved toward a model with minimal text and an “inspirational” post for each week of semester. The idea is to provide something that is interesting, not text-based, and related to what the students may be doing/thinking in any given week.

The following image shows the current state of the course site.

edc3100 - 2015

I know have to think about whether there’s any good way of moving the “general” forums from the top of the site without losing functionality.

Start whinge

I’m learning to detest the intrusion from folk outside of my course into the learning space for my course. This week the “fish” block appeared in the left hand column. These are two links to various support sites created at a program or institutional level. The intent is that they will aid students and improve their learning. My hypotheses is that their impact is low (few students use the links) and this is partly because they are just plonked on the edge of the learning space and are not integral to the learning process for the course (a process which, in this course, points explicitly to these and related resources at a time appropriate to the learners.

And don’t get me started on “Fac of Bus, Educ, Law & Arts”. It’s bad enough when organisational restructures create conglomerations of disparate organisational units, let alone when they are inflicted upon learners who really don’t need to know that my course (and their education program) belongs to the “Fac of Bus, Educ, Law & Arts” and not USQ (the institution they enrolled to study at). Especially when it takes up huge amounts of limited space in the bread crumbs navigation space.

Which of course is all related to the broken idea of “consistent course websites”. It is especially ironic given that as I write this post, one of my students in EDC3100 (a course for pre-service teachers title “ICT and Pedagogy”) has just shared the following comment via Diigo on this reading for the course

There is no such thing as a one size fit all approach to learning or teaching and no individual student or teacher should stop talking and working out better ways of learning and teaching together.

(Note: semester starts tomorrow, so this opinion is the outcome of the students learning prior to joining this course and being infected by my views).

End whinge

Previously I’ve used Diigo to keep track of what I’ve used, but it’s time to be a bit more explicit.

Week 0 – orientation

Here’s the first image I’m using this semester. It’s used during “week 0″ the two weeks between when the institution opens course sites to students and the start of semester. In this course, it’s the “orientation and getting ready” period.

To be a teacher by ecmp355, on Flickr
Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic License   by  ecmp355 

The photo is from one of the students taking a course taught by @courosa. The quote is

To be a teacher is not to have all of the answers, but instead to be the first person willing to learn — Tyler Mantyak

Tyler appears to be using his own quote in the image. Love it.

The connection with my course is that many students find it a challenge. Especially in the first couple of weeks. This quote might help them remember that they need to be willing to learn and that learning is typically pretty hard. If they are finding the course a challenge, then maybe it is because they are learning (and not that the course is badly designed and implemented).

Week 1 – ICTs, PLNs, and you

For the first week I think a bit of Proust is called for.

Discovery of Wisdom by ecmp355, on Flickr
Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic License   by  ecmp355 

This photo (as with many) is also taken from a @courosa course. Continues the theme of taking responsibility for the journey. Also links nicely with the use of “learning path” as the metaphor for the weekly journey students have to go on.

Contradictions in adjectives: You can’t be consistent and optimal

One current challenge is attempting to engage productively with institutional strategic/operational planning. The big challenge in doing so is balancing the perceived importance of institutional level concerns (governance etc) with those of an individual teacher.

As part of this challenge I was reading a document summarising the aims of a rather large institutional project in ICT around learning and teaching. Yesterday I tweeted part of the strategies from that project (it starts with “Ensure the development of”

As my tweet suggests I see some contradictions in the adjectives.

Here’s a story from the dim dark past to illustrate how it’s essentially impossible to have an online student experience that is both consistent and optimal.

You shall not use single quotes!

Back in the mid-1990s CQU was a fairly traditional second generation distance education provider. As such it had a style guide for print-based materials (almost the only sort) that were distributed to students. In large part the aim of the style guide was to provide a consistent learning experience for students. One such element of the style guide was ‘You shall not use single quotes’. “Double quotes” were the only acceptable option.

So, that’s consistent.

Less than optimal

As it happens, in the mid-1990s I was the tutor in the course 85343, Machine Intelligence. The practical application of the concepts in this course were done in the Prolog programming language. Here’s a brief section of Prolog code taken from here. Can you see the problem this is going to cause in terms of consistency?

move(1,X,Y,_) :-
write(‘Move top disk from ‘),
write(‘ to ‘),

That’s write, Prolog code makes use of single quotes. The distance education study material for 85343 included sections of Prolog code. Do you know what the central distance education organisation did?

Obviously, because ‘You shall not use single quotes’ they automatically converted all of the single quotes into double quotes, printed the materials, and sent them out to students.

I don’t know whether the coordinator of the course got to proof the study material before it went out. But he was the Head of School and I’m willing to be if he did, he didn’t even think to check the style of quotes used in the Prolog code.

Consistent can’t be optimal

The lesson (for me at least) is that you can’t be consistent across all the courses in a university, while at the same stage claiming to provide an optimal learning experience for students.

This quote from Dede (2008) picks up on why this is a problem (or you can listen to the man himself)

Educational research strongly suggests that individual learning is as diverse and as complex as bonding, or certainly as eating. Yet theories of learning and philosophies about how to use ICT for instruction tend to treat learning like sleeping, as a simple activity relatively invariant across people, subject areas, and educational objectives. Current, widely used instructional technology applications have less variety in approach than a low-end fast-food restaurant. (p. 58)

And it’s not new

Here’s a quote from Jones (1996) – yep I had a bug in my bonnet about this almost 20 years ago and here I am again

With traditional on-campus teaching academics generally have complete control over what they teach and how it is presented. In CQU’s distance education model the subject matter’s presentation is controlled by DDCE. This results in significant tension between the desire to operate standardised systems for production and distribution of courseware and the desire for course designers to be creative and imaginative (Mark, 1990).

‘It’s like deja vu all over again’

There’s a paper or two here.


Dede, C. (2008). Theoretical perspectives influencing the use of information technology in teaching and learning. In J. Voogt & G. Knezek (Eds.), International Handbook of Information Technology in Primary and Secondary Education (pp. 43–62). New York: Springer.

20 Mark, M. The Differentiation of Institutional Structures. Contemporary Issues in American Distance Education, Michael Moore (ed), 1990, pp 30-43

Organising a change in session time

The next iteration of the ICT and Pedagogy course I teach is about to start. We’ve struck a small problem with one of the campuses, the person being employed to run sessions on that campus can’t make the scheduled time. I need to ask the students when would be the best time to reschedule the session. The following summarises how I’ll do this with Doodle and various other tools.

I’m posting this on my blog to share what I’ve learned about this task. Making this explicit illustrates to the folk in the course one way to make use of blogging. Share your learning, no matter how small or simple you may think it. It may also be of use to some of my colleagues at the institution. It’s also to help demonstrate a process of creatively combining ICT to help with an aspect of learning/teaching.

Two other important points the following illustrates

  1. The digital environment in which teachers (of all types) is littered with concrete lounges.
  2. How we live with those concrete lounges (how we do things with digital technologies) is going to be very different and dependent on our environment, skills, and the available tools (and the affordances we perceive).

    I don’t there are many people that would have completed this particular task the way I have.

The limitation of this example is that it is more a “classroom management” task, rather than a learning/teaching task. A learning/teaching task would involve the application of more pedagogical knowledge in the skills step.

The TEST framework

Over the last couple of years we’ve adopted/adapted Socol’s Toolbelt theory and TEST framework as a way of thinking about this sort of problem. Rachel – a past student – has a post that summarises some of the intent behind this approach.

In figuring out how to do this, I’m going to be thinking about the following

  1. Task – what needs to be done?
  2. Environment – where must this be done? What are the constraints?
  3. Skills – what do I know/have that can be applied to this task.
  4. Tools – what tools allow me (with my skills), in the environment I’m in, complete the task?


Three main steps to this task

  1. Inform the students about the need for a change.
  2. Gather their responses about which time best suits.
  3. Inform them of the chosen time.

In a perfect world, step #2 should also perhaps include the ability for the students to see and perhaps talk about their responses and related factors.


This is a course being offered at the institution that employs me. There’s a Moodle course site to which the students are enrolled. There are also a few other related tools.

It’s still a week and a half from the start of semester. So no face-to-face discussions are possible as the students aren’t on campus yet (generally). There will also be the question as to whether the students are checking their institutional email accounts yet. Plus, I’m at another campus.


Probably the main relevant skill is some capability to use a range of digital technologies.


Moodle messaging

Moodle will be one. It should have some messaging capability that I can use to contact the students (though of course such contact will be limited to their institution email or any forwards they have set up). Can I find that tool and discover it’s affordances?

Nothing is obvious from the institutional Moodle interface. So fall back on Google “moodle messaging” (Of course, I if I wasn’t already aware of this feature and this particular term, I’d now officially be in trouble).

That Google search gets me to the Using Messaging page. It appears this is using Moodle “instant messaging”, not 100% clear that this will email the students. Ahh, the FAQ seems to suggest that messages are only sent as email when the individual have configured their preferences to have messages sent. I wonder whether this can be changed at the institutional level, and whether or not my institution has?

So, not a great fit due to the reliance on students being in Moodle. Can I get a list of student email addresses?

Student records

The institutional student records system does allow me to download a spreadsheet containing student data. The should have email address as part of it.

Ahh, no. Name, ID number, information about the grading basis for the course (which is all the same for all students at this institution and information I already know, why is that included), program, year level, citizenship status, and a column that contains the word “View Student Details”. On the web version this is a link to detailed information about the individual. In the spreadsheet, it’s just the word.

Now that’s real useful. An example of a concrete lounge if I ever saw one.

That spreadsheet seems to be designed as is, rather than for the purposes of teaching staff.

Moodle participants list

Okay, struggling now. Student email addresses are included in Moodle and visible through the participants lists to teacher. In theory you can choose which groups to view. The groups should include campus. Yes it does.

But it doesn’t look like I can download the list of participants to a spreadsheet, or easily extract the email address.

Ahh, and now the super slow response times from Moodle are commencing.

So, my solution is to copy and paste from the HTML page into a text file and use the following ed/vi command (sorry this is really, really nerdy) to extract just the email addresses.

:.,$s/^.* \([^ ]*\)@\([^ ]*\) .*$/\1@\2/

I can then stick that list of addresses into my mail client and send an email.


I used Doodle a couple of years ago. But I couldn’t remember the name. So a quick Google for “scheduling meeting” and hey presto, Doodle is the #1 hit I get back. There appear to be others, but I’ll stick with what I know.

Doodle is aimed at making the process of scheduling events easy. You can set up an online poll, send people the link, and they make their choice.

I could have done this with the Moodle quiz tool. However, Doodle is quicker to use and also I don’t have to add Doodle to the Moodle course site. This could cause some confusion as it’s only relevant to a subset of students, but also because doing so would break the design I’ve used on the course site.

Set up the quiz, time to send the email……there have been 6 responses since the poll was released yesterday afternoon.

How to help improve the Moodle book module

As mentioned in the last post there are limitations in the Moodle book module that are acting as a concrete lounge. The following documents an attempt to help improve the module.

In the end, I’ve made some serious steps to contributing a bit of code to a standard plugin (as I write this, I’m imagining how experienced Moodle folk will shudder at the many misuses of Moodle terms in the following).

Task and context

As described in the last post the context is a course website hosted in the Moodle LMS. A course that uses quite heavily the Moodle book module. The module has import function that is meant to allow you to import a collection of HTML documents into a book.

Concrete lounge

The problems with the import process include

  1. Titles for imported titles are 100% from the HTML filenames.
    e.g. call your file “Diigo tool disappears_sub.html” and the chapter title will be “Diigo tool disappears_sub.html”. Rather than “Diigo tool disappears”.
    The _sub is required by the import function to indicate a sub-chapter. The .html is to indicate a HTML file.
  2. The order of imported chapters is based on the order in the file system.
    e.g. If I have the following files to import

    dj:001 david$ ls *.html
    A blog.html
    Diigo tool disappears_sub.html
    The tools we’ll be using.html

    Regardless of the order in which I add these files to the zip file (import is via a zip file), the order that they will appear as chapters in the book is dependent on the order the file system of the Moodle computer creates.
    Even if I create the zip file in the right order

    dj:001 david$ unzip -t
    testing: The tools we’ll be using.html OK
    testing: Diigo.html OK
    testing: Diigo tool disappears_sub.html OK
    testing: A blog.html OK
    testing: Twitter.html OK
    No errors detected in compressed data of

    The first chapter will be “A blog.html”

  3. There is not option to remove all existing chapters before import.
    There are situations where I’m trying to replace the entire book with the import. Currently I have to create a brand-new book resource, or manually remove all the chapters in the current book.
  4. No method for linking to a chapter prior to import.
    If I create the collection of chapters elsewhere, there will be times when I wish to create links between those chapters. Currently there is apparently no capacity to do this.


Here’s what I’ve done so far to address this problem with the resources available.

Process to make changes to Moodle core

This seems to be the process I need to follow for the above which translates into

  1. Is there a tracker issue?
    Via various trails I end up at the book page/section in tracker. Raising the question which versions of the book Module am I dealing with?
    Time to track through the book issues in tracker. Those related appear to be

    • support for re-importing chapters
      Close to what I’m working on. But it’s old. Created in 2008.
    • Book HTML zip incorrect URL
      Picks up on the issue with links between chapters that have been imported. This appears to have been fixed and should be in from 2.5 onwards. Need to check this (NOTE: I haven’t actually tried this process yet).

    Nothing apparent.

    So as a user I can report the bug/make a feature request and then contribute by making a fix. So let’s create an issue in tracker. What type of issue should it be?

    • bug – A problem which impairs or prevents the functions of the product.
    • improvement – An improvement or enhancement to an existing feature or task.

    Either could apply. I’ll be positive and call it an improvement. Issue created.

  2. Which branches should the fix be made on?
    The advice is
    Bugs should normally be fixed on all the supported stable branches that are affected. New features should just go into master, but sometimes minor enhancements are made on the most recent stable branch.

    So where does this fit? I assume a bug or minor enhancement. The other factor is that if I make this change on the version that my institution is using, that will increase the chances that I might get to use it this semester (which are very slim). Of course, it’s difficult to remember/discover which version of Moodle we’re using. I think perhaps 2.7 for now. Which seems to the other supported release.

  3. Develop the change using git
    Prior work contains an example of how to get a version of the Moodle source using git and start making changes. Will start with that.

    My issue number is MDL-49128

    The process I’ll use is

    • Fork the branch of Moodle I want to work on MOODLE_??_STABLE

      dj: david$ history | grep git
      git clone git://
      git clone git://
      git branch -a # what are the available branches
      git remote add upstream git:// # connect upstream
      git checkout MOODLE_27_STABLE

    • Create the branch

      git checkout -b MDL-49128-book-import-fixes origin/master

    • Make changes – see below
    • Testing process
        Has the following files that should be displayed in this order

        1. The tools we’ll be using.html
        2. Diigo.html
        3. Diigo tool disappears_sub.html (this is a sub chapter)
        4. A blog.html
        5. Twitter.html

        Without either fix the chapters will start with A blog.html, Diigo.html etc. through to Twitter.html.
        With the both fixes, the order of chapters should match the numbered list above. Also, the chapter names should not include .html or _sub

        Has essentially the same chapters, however, they are implemented as folders containing a single HTML.
    • Commit the changes to my repo
      This wasn’t as straight forward as I thought. Ended up with

      git remote set-url origin
      git push origin MDL-49128-book-import-fixes

      Which ends up creating this nice little summary on github.

    • Ask the Moodle devleopers to review it
      Updated the issue in the tracker, time to wait and see what I got wrong.

Making changes

I’ve been using the zipfiles approach. A zip file with a collection of HTML files, each file equals one chapter. This is fixed based on previous work.

There is also a zipfolders approach. A zip file of folders. Where each folder equals one chapter.

The order fix is working on zip folders. However, with the chapter names, I’m now getting both the chapter name and the file name. So The tools well be using/The tools well be using. Should the filename or the folder name be used?

I’m assuming the folder name. The book module import code appears to support this. For example when reading HTML files it is looking for default files in the folders. i.e. Default.htm and index.htm. Suggesting that it isn’t assuming that these have the names of the chapters.

That appears to be working.


I have to think that anyone who had used the import function in action – like I tried to do – would have been aware of the limitations of the import function. It just doesn’t seem designed to be useful. Thus it seems logical to suspect that maybe the original designer wasn’t a user. They weren’t solving their own (or someone close to them) problem. Just implementing a feature. Hence they weren’t in a position to know how limited it was.

This distance between implementing the function and using the function seems to be a common feature of concrete lounges. Anyone who has to use a concrete lounge for any length of time is going to be aware of the pain and want to change it.

The fact that this particular bit of pain has stood for so long, has to say something. Perhaps it’s just at the book module is just an unloved child? But it is part of Moodle core now, so it has to be perceived to be useful for some.

Framing an open book as situated, social, distributed and protean

My institution has some grants available to produce open textbooks. The following is an attempt to develop an interesting idea that might be funded by such a grant.

This is a quick first run at this. It hasn’t been informed by any literature or other searches for prior art. It’s constrained by my experiences and perceptions. It’s crying out for suggestions and improvement. It could certainly benefit from a revisit to Putnam and Borko (2000) and similar.

Is it even a book?

After completing the following, the biggest question I have is whether or not what I’m talking about is a book? Answering that question effectively would seem important for the chances of being successful in a grant application.

Perhaps why I think this is a book stems from the design of the course I teach. Each week has a learning path that the students will use as their initial foray into the wilds of the particular topic. They work through the learning path as if it were a multimedia book. Working sequentially through a sequence of pages. Those pages contain a bit of text, embedded video and other multimedia, and various activities and exercises.

The learning paths are situated in the Moodle LMS, so it doesn’t look explicitly like a book in the way that Project Management for Instructional Designers does. But that’s more a question of interface, than interaction.

Is that a valid/convincing argument?

Reservations about open textbooks

I have some reservations about the idea of funding academics to produce open textbooks.

As the tweet suggests, it strikes me as somewhat old fashioned. There’s thing called a World-Wide Web that has hypertext and multimedia capabilities that extend far beyond the capabilities of a “book”. Plus it’s taken off in a fairly big way and there’s an awful lot of good information out there. Is a “book” all that interesting, innovative and useful?

@s_palm and I seemed to agree at around the same time, that there are some more interesting possibilities.

The following is an attempt to expand on what might be interesting, useful and perhaps innovative.

Start with a conception of learning and knowledge

If the aim is to produce something to help people learn, it would seem sensible to consider at some stage conceptions of learning and knowledge. I’m going to draw on the “distributive view of learning and knowledge” that we used in this paper (this view has become my most recent hammer). It’s based on three themes from Putnam and Borko (2000), plus one we’ve added

That conception sees learning and knowledge as

  1. Situated in particular physical and social contexts.
  2. Social in nature.
  3. Distributed across the individual, other persons and tools.
  4. Digital technologies are protean.
    It’s pretty clear which one of the four we’ve bolted on, just from the summaries. As it’s currently framed, this one doesn’t fit nicely. It’s also more than just digital technologies, learning and knowledge are protean (tending or able to change frequently or easily; able to do many different things; versatile).

An open “book” with a distributive view

The following uses those four themes to think about what an open “book” might look like if this distributive view of learning and knowledge is used. It’s going to focus explicitly on the main course that I teach – ICT and Pedagogy. A 3rd year course for pre-service teachers aimed at developing their capability to integrate the use of digital technologies into their teaching.

The aim of any grant application would be to start developing the practices and tools that enable the production and support of an open “book” that supports some of these. I do have a question about whether or not such a “book” is in danger of just becoming an online course of some description?


A good “book” would be situated in the different contexts within the course. What are those contexts and how might a “book” be situated?

  • Learner’s learning environment.
    The environment in which learners learn is incredibly diverse on many characteristics (devices used, their PLE, time, location, etc.). So format of the book, the devices used to read and contribute to it should be flexible.
  • Course environment.
    The abstraction of the course is still core at universities. Each course has its website and specific rules, nature and timing. The situated nature of knowledge and learning provides some arguments about why each course should be different. An open “book” should support that.
  • Other course environments.
    It should also support the ability to move into other course environments. The difficulty of doing this is perhaps one reason most university courses remain silos unto themselves. The book should be visible to other courses/teachers, it should be easily customisable to the needs of different courses, and yet retain the ability to share changes between courses.
  • Teachers’ teaching environment.
    Just a learner’s learning environment is different from others. So to a teacher’s teaching environment. More specifically how they go about “authoring” and curating a “book”. Teacher’s shouldn’t have to under-go massive change to contribute. It should start from their current environment and work out.
  • Learner’s professional environment.
    Learner’s in my course range from early childhood educators right through to VET educators. There are a number of professional environments with which they must engage (e.g. the Australian Curriculum). The “book” should integrate with these professional environments. For example, have a simple way to integrate links and content like a content descriptor from the curriculum.

    This also points to the book containing “authentic activities and resources”. Dealing with issues and knowledge that are meaningful to them.

  • External environment.
    In part this is the “open” nature. Anyone should be able to access it from their environment. Hopefully it’s something students continue to draw upon and contribute to for the rest of their professional lives.
  • Institutional environment.
    Sadly, institutions have policies, systems and other constraints on how and what can be done. Will need to be cognisant of those. In my context, this means linking in and working with the Moodle LMS.


Authoring and reading a book are typically very individual tasks. There are views of learning that see it as arising from social interaction. From engaging with and becoming familiar with how specific communities think and act.

Some ideas from this view include

  1. Support for multiple authors and versions.
    Not only should I not be the sole author, there should be active support for people to “fork” their own version of the book (or parts thereof). The influence of Smallest Federated Wiki here. Both learners and other teachers.
  2. Capture the residue of the communities experiences.
    The experiences, actions, and creations of the people “reading” the “book” are able to be captured and used to enhance the “book”. This post gives an example of this and some of its origins in the learning communities literature.

    Examples might include

    • the idea of learners forking off and changing versions of the book;
    • the capturing of annotations (as shown in the blog post
    • sharing prior answers to exercises provided by learners as examples.


The big idea here is that cognition is just not in the head of the learner. Instead, it’s a function of the individual, other people, and the tools/environment they have to work with.

In terms of learning, there seems to be an obvious connection to mindtools defined by Jonassen (2000) as

computer-based tools and learning environments that have been adapted or developed to function as intellectual partners with the learner in order to engage and facilitate critical thinking and higher-order learning (p. 9)

Kirschner & Wopereis (2003) extend this a little to “include the facilitation of work (by knowledge workers)” (p. 110) and argue that “(Aspirant) teachers must therefore learn how to use mindtools both as a means of encouraging constructive learning in the classroom and as a tool for their own professional growth” (p. 110). Jonassen (2000) describes 5 characteristics of mindtools that connect nicely with these themes and could be useful.

The particular “mindtool” I have in mind for here is a unit planning tool. My course (and its “book”) currently asks learners to develop a unit plan to demonstrate their capability of designing the integration of ICTs into their teaching. Currently this is supported by a unit plan Word template. It does not contribute a lot of cognition to the task.

The rough idea is to develop a unit planning “mindtool” as part of the book, that would

  1. be used by learners to develop a unit plan;
  2. provide direct connections to parts of the book explaining each section of the unit planning process;
  3. provide access to relevant examples based on the learning objectives chosen for the unit plan;
  4. provide checklists and suggestions for what to do next;
  5. provide access to examples that have been critiqued;
  6. be integrated with curriculum where possible; and,
    e.g. if you specify the unit is for Year 7 Mathematics in a Queensland school, then the only learning objectives you can choose from are taken from the appropriate curriculum. The only criteria you can use in a rubric, are from the appropriate curriculum.
  7. track coverage of learning objectives in learning experiences.

Another possibility from the “distributed” perspective is that the “book” doesn’t reside on one specific server. It is instead distributed across many different locations, courses etc.

Perhaps more importantly is that the implementation of the book should not require the adoption of a single authoring process or presentation tool. The aim is not to develop the one-ring to rule them all, but to enable the building of a network of tools that can contribute to the book. Which tools are used, depends on the situations of the learners, authors, teachers, readers. Picking up on some points made in another discussion about “books”


In short, the idea is that anyone and everyone can change the book. In fact, the aim would be to explore if and how some aspects of change can be automatically enshrined into the book. This also links to the social perspective above.


Jonassen, D.H. (2000) Computers as Mindtools for Schools: engaging critical thinking, 2nd Edn. Upper Saddle River: Prentice Hall

Kirschner, P., & Wopereis, I. G. J. H. (2003). Mindtools for teacher communities: a European perspective. Technology, Pedagogy and Education, 12(February 2015), 105–124. doi:10.1080/14759390300200148

Putnam, R. T., & Borko, H. (2000). What do new views of knowledge and thinking have to say about research on teacher learning? Educational Researcher, 4-15.

Kludging an authoring process with Moodle books (almost)

The following outlines an attempt to evolve the authoring “process” I currently use with Moodle books into something a little more useful. It won’t be the be all and end all of authoring process, just enough to solve the immediate problem I have. i.e. bricolage

I’ve essentially got this working on my end. The problem is that the Moodle book module has a few flaws in how its import function works which means I can’t really use this approach. At least until the book module is fixed. I’ve fixed most of it on my own install of Moodle. Will have to find out how that might happen.

Some related work

As it happens @abelardopardo wrote a post yesterday titled Re-visiting authoring: Reauthoring that touches on the broader problem and offers a solution. Many of the conditions he outlines align with mine, however, my need is more immediate and contextual than what would be need to explore and adopt his solution.

And I remember @timklapdor doing some work around this broader issue last year. Yep, I even commented on his post. A comment that captures some of my disquiet about institutional approaches to solving the authoring problem (I know my institution will be having another go at this soon).

Meaning I’m not trying to solve it at the institutional level. I’m simply aiming to enhance my current practice a bit. An “inside out” approach, rather than outside in.

A better idea

If I had the time I might have modified the approach below so that rather than exporting the Moodle book into HTML files on my computer, I’d have it exporting to pages on my smallest federated wiki (SFW) (and back into the Moodle book). With this approach the SFW version would be the definitive version. It has version control built in at the paragraph level and opens up a range of possibilities of students (and others) being able to fork and work on their own versions of the content. An affordance that could potentially be much more interesting from a learning perspective and in terms of being “open”.

However, the SFW authoring environment doesn’t feel quite as natural to what I plan to use below. That may simply be familiarity, but there’s also the problem that SFW somewhat denigrates the use of HTML and is somewhat limited in terms of presentation and embedding. Why not use SFW, rather than Moodle books? Mainly because the course design currently (and perhaps problematically) relies on Moodle activity completion. Not a function that is available in SFW, nor a function that is sensible in the SFW world-view. It also appears – after a quick test – that SFW doesn’t necessarily play all that nicely with search engines. Meaning that SFW doesn’t solve my big bug bear with Moodle, no search capability.

Deja vu all over again: why?

I do this with some reservation due to a sense of deja vu. Almost 20 years ago as I prepared my first totally web-based course I wrote a set of scripts to help with authoring the web-based study material (thank you the web archive). Tools and an outcome not unlike the approach I’m working toward below and not that far removed (but far more primitive) than those mentioned above.

Why? Why after 20 years this authoring problem still hasn’t been solved? Why do there remain a plethora of disjointed systems and no-one really good solution?

Perhaps mainly because there is a plethora of disjointed systems in which the resources that are authored have to fit. Each of those disjointed systems have different world-views and subsequently sets of functionality. Hence it’s almost impossible for one authoring process to fit nicely into all of them. e.g. the talk above about integrating SFW and Moodle books. Adding more complexity, and touching on the comment I made on @timklapdor’s post, the people who are likely to use, the people that will use these authoring systems come with their own set of world-views, preferences and peccadilloes. The gaps between all these world-views are perhaps just big enough to prevent the wide acceptance of a single approach.

Suggesting that designing or selecting a single system (an outside-in approach) for everyone to use is destined to fail. There will always be gaps between the different world-views. Even if you can get everyone to agree, in a year or so another type of system will arise and there will be another gap to overcome. Perhaps a better approach is focus on what people are currently doing and bridge the gaps (an inside-out approach), which is sort of what I’m doing here.

The problem and context

As outlined in a previous post and shown in the following screenshot my course uses “Moodle books”. Each Moodle book tends to be focused on a specific task and generally is wrapped around external resources.


These books were originally written in HTML using the vi editor and manually imported into Moodle. Last year I made ad hoc changes by using the book module’s “editing” interface. That’s not a great process.

The wish list for what I want from a process

  1. Have an authoritative source HTML file that contains all the content for the book.
  2. Use directories and files to create a structure that mirrors the learning paths on Moodle.
  3. Perhaps in way that allows the content to be put on another website so it can be searched.
  4. Have that structure under source control.
  5. Allow simple updating of the Moodle book.
  6. Benefit from the Moodle migration smarts.
    The Moodle books point to additional Moodle activities (e.g. quizzes, discussion forums) etc that are used in learning activities in the books. When a new offering of the course is prepared, the old offering is migrated. This migration process is smart enough to have the books in the new offering pointing to the activities that belong to the new offering. The “books” in source control wouldn’t be automatically updated this way.

In essence, I’d like to edit the books using vi (or whatever HTML editor etc I end up using) on my local computer. When I’m happy with the book, commit it to source control and import it into Moodle.

In a perfect world, at the start of a new term I’d have a process that dumps the migrated books from the new course site onto my local computer ready for editing and importing into source control.

Exploration and Development

The following documents some exploration of various possibilities that might help achieve the above.

Import and export from a Moodle book

When I started all this either I was aware of, or the Moodle books didn’t have an import facility. Time to play with that as it may be the foundation for putting content back into Moodle quickly.

It appears it accepts each chapter as a HTML file. Which is a bit of a bugger as I’d hoped to work with a single HTML file locally and upload that. Appears I may need some sort of script to produce the format required by the Moodle book. Let’s test this out

  1. Download an existing book.

    I’m doing this by using the “print book” function. This produces a fairly bare HTML file of the entire book that forms the basis for the local copy.

  2. Look at the HTML.
    Diigo/Firefox has stuck a bunch of css etc into it. Remove that.

    • book_summary/title
      classes book_summary and book_info use for entire book information.
    • class book_toc_numbered
    • Chapters are surrounded by a div with class book_chapter, heading 2 used for the title.
    • Sadly sub_chapters also appear to use class book_chapter but with heading 3
    • A collection text/css files are created when saving the printed file.
  3. Import that single HTML file into another book.
    Well that doesn’t work. Apparently an invalid file type. Let’s try removing all the diigo etc crud. Nope that doesn’t help.
    So what about a single section of HTML?
    Of course, it has to be a zip file that you upload. Idiot. So zip file with two html files. One the big HTML from the book itself, and the second a small excerpt.
    So it does the import and presents some feedback – “Importing” “Relinking” and then a continue button.

    Appears to be a very simple import. Each HTML is create as a single chapter. Sequenced in the order found in the zip file.

    What if I import again, but change one of the files to end in _sub.html. This is meant to create a sub chapter. That works as expected. Another two chapters added to the book, exactly the same as the other two. But the test_sub.html has been created as a sub-chapter. i.e. the title of the chapter is taken from the title, but it isn’t smart enough to remove the _sub, even though it knows what _sub at the end indicates. Note: I really should do something about that, looks like it would only take the addition of a single line of code.

  4. Look at the content and develop the script.
    Looks like the script will need to parse the HTML “print” version from the book by

    • Extract all the div class book_chapter
    • for all of those (in order that they are found in the HTML file)
      • create a new file with the following name format NUMBER TITLE{_sub}.html
        1. NUMBER – A number such as 001 to ensure that the order stays the same.
        2. TITLE – the title from the heading 2 or three immediately inside the div.
        3. _sub – if it’s a heading 3 – indicating a sub-chapter.
      • Add in the content of the div into that.

    Also appears like I’ll need to have two separate functions, related to preparing the version of the file to

    1. edit; and
      This would be a single HTML file that I use to edit.
    2. import.
      The one outlined above that would imported into Moodle.

    So which Perl HTML parsing module to use? TreeBuilder::XPath was the most recent I’ve used. But I’m doing jquery a bit recently, so Mojo::DOM is interesting.

    Yep that worked. Script is now producing an EDIT.html file that I’ll use to make changes.

  5. Import the broken up HTML files into another book
    The aim here is to

    1. extract all the book sections from the EDIT.html file
    2. create a collection of separate HTML files containing the contents of each book section
    3. zip up all those separate HTML files ready for importation
    4. remove the files

    Done. Fairly simply. Tried import into the book and it’s sort of worked. The problems to solve are

    1. The inclusion of “.html” in the chapter name.
    2. The inclusion of “_sub” in the chapter name.
      These first two problems appear to be down to how the Moodle book import function works. i.e. it doesn’t remove these, which is somewhat surprising. Have made some initial changes to my local Moodle installation (about line 83 of mod/book/tool/importhtml/locallib.php), but which won’t work on all uses of the module – e.g sub-directories, HTML files with .htm extensions etc.

      # DJ's changes
      if ( preg_match( "/\.html$/", $chapter->title ) ) {
          $chapter->title = preg_replace( "/\.html$/", "", $chapter->title );
      }  # end DJ's changes
      if (preg_match('/_sub(\/|\.htm)/i', $chapter->importsrc)) { // If filename or directory ends with *_sub treat as subchapters
      # DJ's changes
          // remove _sub from title, should be last given above replacement
          if ( preg_match( "/_sub$/", $chapter->title ) ) {
              $chapter->title = preg_replace( "/_sub$/", "", $chapter->title );
          } # end DJ's changes
    3. The inclusion of #39; (i.e. html entities) in the chapter name.
      This appears to be due to the process I’m using to save and process the exported book files. I need to modify it to decode HTML entities. Easy enough in Perl using HTML::Entities. But I also have to update the heading back in the HTML. Done.
    4. Chapters having no content.
      My immediate guess is that the HTML files being imported still have some of the Moodle book divs etc and that this is clashing. So remove those and test. Nope, that didn’t work. Time to look at the code

          if (preg_match('/<body[^>]*>(.+)<\/body>/is', $html, $matches)) {
              return $matches[1];

      Oh dear, regular expression matching. That’s the problem. It requires a body tag around the outside. Have to love open source projects where you can look at the code. That’s fixed.

    5. Duplicate headings.
      The import file needs to have the heading title and the other book chapter remnants removed to prevent issues. Done.
    6. The chapter numbers still present.
      The Moodle book import processes the collection of files in the order it sees them in the zip file. To make sure that the order is what I want, the filenames start with numbers. The problem is that the import process doesn’t remove the numbers, so you end up with stuff like 2 2 Diigo where the first 2 is from the Moodle book module and the 2nd 2 is from the file name.
      I can’t change the Moodle book module code quickly enough to help me.
      Can’t remove the numbers in my export script as this would change the order of the files imported.
      Leaving exploring the zip function to see if I can specify the order the files should be zipped in the script, without relying on numbers in the file system. Can do this with zip, however, the book module doesn’t play nicely. It looks like it just unzips the file, forgets about any order in the zip file and relies on the order from the file system.
  6. Additional problems
    Of course it’s not going to be as simple as this. A major problem will be that via this process I will lose the capability to correctly link between pages in a book. The import process back into the Moodle book will either actively change links to a Moodle book, or it will ignore them.
    It will also play silly buggers with links to/from other Moodle books. i.e. modifying a book this way will break all other links to the original version of the book.

    Some possible solutions

    1. Have the import script look for and announce links to Moodle books.
      Thereby allowing for manual intervention.
    2. Run the institutional “check course” function to check for broken links
    3. Modify the book module so that the import function supports some sort of variable for pages.
      i.e. the ability to use {TITLE_OF_PAGE} as a link to a page within the current book. Where TITLE_OF_PAGE is the chapter title.

Export all Moodle books

This will have to wait until another day.

A structure that works

Looks like being something like

  • Week folder
    • Book folder
      • ALL.html – the version imported from Moodle.
      • EDIT.html – output of “ ALL.html” ready to edit.
      • – output of A zip file ready to import into Moodle that contains ALL.html split up into the appropriate separate HTML files.


Wait for another day. But I assume the aim would be to have EDIT.html in git with the surrounding structure.

Planned process

  1. Create a folder for each week.
  2. In that create a folder for each book using 001 etc to get order correct
  3. Save a HTML version of the book from Moodle into EXPORT.html in that directory
  4. Run the script which will produce an EDIT.html file in that directory
  5. Make the changes in the EDIT.html file
  6. The EDIT.html file can be kept in github?
  7. Run the script to produce the import version.

To do

  • Look into how to suggest/contribute the following changes to the Moodle book
    • Modify the chapter titles imported to remove the _sub and the .html.
    • Import chapters in the order they are contained in the zip file (if possible)
      The zip stuff is done by lib/filestorage/zip_packer.php. ATM, the book module is simply extracting files to storage. Hence the problem with out of order. zip_packer does have a list_files method that might just provide the list of in order file names that we’re after. This actually works and the book module does use this initially to get the filenames. But it loses the order when it creates a hash with the pathName as the key.

      That’s fixed.

    • Have an option to remove all existing chapters prior to import.
  • Think about the implications of integrating SFW .