Gotta catch ’em all!

TL;DR

I created a plugin for WordPress that you can use to store and retrieve xAPI statements (“results”) from H5P content types.

Don’t become butter scraped over too much bread!

H5P does neither have the user management features of moodle nor does if offer the tools for analyzing data like Learning Locker does. I love it for that. I love it, because it’s done on purpose.

H5P is not intended to become a silver bullet system to “end” all silver bullet systems. It will not become a full-blown Learning Management System. It will not allow you to analyze all the data you may collect. It will focus at what it is good at: enabling you to create, remix and share interactive content. However, it doesn’t quite stop there.

There’s more than meets the eye!

Although you may not notice it, H5P makes use of some established standards that allow you to build your own solutions that may be taylored to your particular needs. For example, there is the so called Experience API or xAPI. It’s an open standard that is used to communicate data about learners’ experiences to other platforms:

  • Tom attempted fill in the blanks test.
  • Lisa scored 100 % in the multiple choice quiz.
  • Alice completed the essay.

It actually is a little more powerful. And a little more complicated. Whatever. Let’s simply pretend these statements were test results and let’s say that you can use the interface to send this kind of information to a platform that’s specialized for storing, retrieving and analyzing the data, possibly giving you some valuable insight into where you could help your students.

This is great. And you can choose and use the best tools for the job. Yet, with great freedom comes great inconvenience. At least that’s how some people may perceive it. They don’t want to configure lots of stuff or to switch systems for different tasks. And in some cases, they just want to get a small thing done. All they need is a screwdriver, not a power drill. If you’re one of those people and if you’re using WordPress, I may have something for you.

Gotta catch’em all!

I created a plugin that allows you to catch all those tiny xAPI statements that H5P emits. You can store and retrieve them. Of course, I had to name the plugin H5PxAPIkatchu 😀 (Yes, I know, there’s an additional for a reason).

Gotta catch 'em all!

I might train it, so it could possibly learn some new tricks. However I will not — I repeat — I will not turn it into a power drill. It’s a screwdriver. If you e.g. need to analyze the data, you can export them to a CSV file and import them to a spreadsheet program (boring) or maybe to some Jupyter environment with scikit-learn for some sophisticated machine learning action (cool). And, since it’s open source software, feel free to contribute, fork or build upon!

A word of advice …

Using the plugin is not necessarily the smartest thing to do. One of those xAPI statements is not very large, let’s roughly say up to 2 KB in average. Let’s cut that down because the plugin is not intended to store everything. We might have 1 KB per statement. That’s tiny, right? But each H5P content type typically sends out different statements. Let’s assume five in average. Now we have 5 KB and need to multiply those with the number of people that use the content type. This number will grow over time …

You’ll have to do the math yourself for your particular setting. Just make sure your database has enough storage capacity. There’s a reason why there are programs and platforms that are specialized for tackling this job …

4 Replies to “Gotta catch ’em all!”

  1. Hi!
    I installed your plugin. It looks like it didn’t create a necessary table in the db (wp_h5pxapikatchu_object) because I’m getting a bunch of error logs in my server logs saying the table doesn’t exist (which I confirmed by looking at the database.)

    Would you please update the plugin, or just tell me what needs to be in that table, and I’ll create it myself?

    Thanks a ton!

    Aaron

  2. Thanks! I looked further up in the logs, and it turned out that the table creation statement had character encoding and collation statements at the end that my server didn’t like. I ended up removing those and now it works!

    Thanks again!

Leave a Reply

Your email address will not be published. Required fields are marked *