Archive for the 'Infrastructure' Category

Creating a ‘full fat’ RSS feed for Google Gmail labels (enabling some dark social judo)

In this post I want to cover three things. First I want to introduce a little app I’ve developed which allows you to create a RSS feed for any of your Gmail labels (with the option to remove certain links – useful if you don’t want others unsubscribing you from mailing lists). Secondly I explain how it was made and how you can use it yourself. Finally I want to discuss how this could be used in an open course environment, utilising the vast processing power from services like Twitter and reusing there target marketing emails to your benefit with a bit of ‘dark social judo’.

What is Gmail Label Feeder?

It’s a little Google Apps Script app that you can setup to select one of your Gmail labels, preview content (with the option to remove all the links you’d like not to publish, like unsubscription links) and publish a public feed of the result. This video (embedded below) gives an overview of the problem and how the ‘Gmail Label Feeder’ app works:


How can I setup Gmail Label Feeder and how does it work?

Whilst logged in to your Google account open this script and then follow the instructions below:

  1. In the Script Editor File > Make a copy (this makes your own personal copy of the script which lives in Google Drive. With this copy you can control permissions etc and means I except no liability if it goes wrong, breaks, doesn’t work)
  2. From the Script Editor Run > setup
    IMPORTANT: when authenticating use the Gmail account you want to create feeds for
  3. Still in the Script Editor File > Manage versions… and create an initial name and ‘Save New Version’
  4. Then, Publish > Deploy as web app… and select ‘Execute the app as: me’ and allow anyone access even anonymously
  5. Finally open (and bookmark) the ‘current web app url’ to create (atom) feeds for your gmail labels

The process covering the creation of individual feeds is covered in the video above. The video below shows the five steps for the initial setup:

How it works

Having already used Eric Koleda’s Feed+ script when creating a similar app to turn Scoop.it searches into an RSS feed it wasn’t too much effort to change the source data to a Gmail account. It’s not the first time I’ve hacked the functionality of Gmail having already used my inbox to re-enable Google Reader social share features, so I already knew/had code to GmailApp.search using the ‘label:’ search operator. One thing I struggled with was removing selected links from emails. The UI side was straight forward thanks to the fantastic framework already developed by Eric. Initially I tried Removing html tags and content where tag content matches an array of values using Xml.parse() but as you see from the answer and comments from Jonathan Broughton and Bruce Mcpherson (thanks guys!) I used regex instead (only after getting caught out by line breaks and tabs).

Dark social judo: Pulling the email push

I was first made aware of ‘dark social’ via Alan Cann (who is ironically quoted in the THE today for his work around social media) and in particular his move to email as the main communication tool for students.

Alexis Madrigal at The Atlantic — who writes about the influence of what he calls “dark social” on engagement and traffic patterns. While everyone is busy watching Twitter and Facebook because they are easy to track, Madrigal argues that most social traffic still comes from old-fashioned or difficult-to-track sources like email and chat messages – (From Dark social: Why measuring user engagement is even harder than you think)

The use of email is something we’ve paid particular attention to in the open online course ocTEL, developing a daily newsletter to push a automated summary of course activity (talking about automated summaries read Tony Hirst’s Notes on Narrative Science and Automated Insights). There’s nothing particularly new in this but one whole I wanted to plug was getting an archive of these back into the ocTEL Course Reader (an RSS aggregation of all available course activity), hence the Gmail Label Feeder. Whilst doing this and picking over my own inbox for example emails I started to think about the ‘push’ I got from social sites like Twitter, Google and LinkedIn keeping me aware of activity and making suggestions for people and content I might like. Whilst some of these are very basic action reporting others require a degree of processing to generate.

Social push

The particular scenario I had in mind was if for example you were running a course Twitter account, when you get the inevitable ‘suggestions similar to’ or ‘do you know’ would there be some value judo style ’pull when your opponent pushes’  and publishing this content so it’s available to all your students. Even if this is of little individual value to the student wouldn’t aggregating this data in a machine readable way be useful down the line. Have a look at the menu of push options, wouldn’t at least some of these be useful to your students. Should we be doing a bit more dark social judo?

Twitter dark social menu

Opening the intercom with your open course participants: Tracking and engaging students

Earlier today I popped in the visual.ly site to see if they had anything new. After login in, having a quick nose I moved on. Minutes later I got this email:

Email from visua.ly

My initial reaction was:

Looking at how they did this there are some clues in the email. Notice the email contains a link with ?source=intercom (campaign tracking), and the email domain for the sender is intercom.io. Visiting the intercom.io site it’s immediate to see the pieces fall in place, Intercom providing a customer relationship tracking/engagement service which allows condition based automated messaging.

intercom dashboard

If you click ‘Start using intercom’ more is revealed about how this service works. By embedding a code snippet to your sight which returns the logged in user email (in the advanced setting this can be encrypted/hashed rather than plain text it appears you still need to send either a user_id or email in plain text as well as hashing)

intercom setup

And true to their word in 30 seconds I was able to track active on the ocTEL testbed site.

intercom test dashboard

Tracking user logins is a standard feature on most platforms (and can also be enabled in WordPress with the last login plugin), but there are nice features of Intercom that might make it a useful component within an open course situation. As well as tracking ‘last seen’ Intercom are able to track location, extended social profiles and levels of engagement. The fact it’s easy to install is a big plus, but if you are prepared to pay the $50/month you can get your hands on some nice additional features. As well as auto messaging you can reassign message replies to other users (the scenario I have in mind is reassigning messaging to other tutors).

So what would your reaction be if this tool was used in a course like ocTEL? Are there similar or better tools out there that you know about?

PS I’m currently having problems getting the email encrypted version of the embed code to work. Others might have more luck

Update: Here’s the code to add to your theme’s function.php to added Intercom.io support

Webinar: Overview of cMOOC platform trends and creating your own open online course using WordPress 15th May 16:30BST

As part of ocTEL on the 15th May at 16:30BST (check in your own timezone) I’ll be doing a webinar on platforms for Massive Open Online Courses (MOOCs), in particular focusing on some of the connectivist style recipes I’m aware of. As part of this I’ll be taking participants behind the scenes of the ocTEL course highlighting some of the configuration/customisation that’s been done to the WordPress platform. There will be lots of opportunity for questions so if you are thinking of hosting a similar style of course it’s a great chance to find out some of the pitfalls.

This week’s webinar is on platforms for Massive Open Online Courses (MOOCs) and in particular focuses on the connectivist style of courses being often taught by individuals or small teams of academics. As well as an overview of emerging trends there will be an in-depth behind the scenes look at the ocTEL platform. ocTEL is built on the open source WordPress blogging platform which has been supplemented with a set of additional plugins and some custom coding. Participants will gain an insight into the challenges of developing and running a connectivist style open course and have the opportunity to quiz the platform architect Martin Hawksey.

You can access the Week 5 webinar via this link A recording of the session is here.

Tapping the rhizomes of dotlife: Creating an RSS search feed for Scoop.it posts

This was a useful post to write and reflect on some ideas. If you are here because you want to make RSS feeds for Scoop.it posts searches here’s the Feed+ Machine Chrome Web App and the standalone Feed+ Machine App

Recently when reflecting on my career path two key moments came to mind. First around 1999 having graduated as a structural engineer I got a job converting course content marked up in Word documents into HTML. Why this was important was I was forced to understand the raw building blocks of the web, I was in a foreign world and I needed to learn the language and fast.

Luke, view the source

A decade later and my interests shifted, less about static content and more dynamic data. Tapping into the work, primarily of Tony Hirst, my eyes were opened to the opportunity of remixing the web. Taking existing data, a dash of code/3rd party services and creating new things and ideas. In this world data feeds are the new building blocks to play with. In particular RSS and Atom feeds are the prize. Usually openly available and easy to manipulate/render.

Luke, find the feed

Unfortunately this ease of access appears to be putting off the big 3rd party services. With the latest Twitter API atom isn’t an option, with Google+ RSS feeds should be forgot about. This is a great shame a number of open online courses recognise the value of learners finding their own space, feeding their activity into tools which can aggregate, potentially sense make, and feed the rhizomes of the networked learner.

Like other open courses this is the challenge we face in ocTEL, pulling distributed activity into the machine. For some services RSS is still championed.  Diigo where the RSS badge with pride..

RSS from Diigo

JISCMail go even further also flying the auto-discovery flag (yet another front being eroded) …

RSS from JISCMail

What about Delicious …

Where's the RSS from Delicious

Mendeley … exists but you have to go digging

Mendeley have some, but not telling you

Google+ … this is where it gets interesting

[trumpets] Feed+ by Eric Koleda

Eric Koleda has created a Chrome Web App (Feed+) that lets you create RSS(Atom) feeds for Google+ searches. Using Google Apps Script Eric has created a user interface and it does all the negotiation with the Google+ API converting the data into RSS. Given the availability of a Scoopit API and using Eric’s base code I’ve forked the project to create the Feed+ Machine Chrome Web App and the standalone Feed+ Machine App (Google login is required to manage your feeds). To begin with it only supports creating feeds from Scoop.it! post searches, but given Eric has done such a great job on the design it’ll be easy to extend. I’ll spare you the details of the code but the source files are here if you want to unpick what’s going on and ask questions.

Here’s an example of a feed for Scoop.its referencing ocTEL, which we are already digesting in the ocTEL Course Reader. But why do this? My interest is primarily in capturing as much of the digital landscape, each artefact collected adding more detail to the map. Whilst material pulled from Scoop.it is potentially yet another churn of existing content, who is sharing and any insight they add provides additional context and may be another way in which participants can identify and migrate to new clusters of activity.

There is a downside to this to this approach. Having a search feed from Scoop.it is useful but having wrestled with the ScoopIt API there is much more data available not being captured such as metadata around posts and topics. So perhaps like others I should abandon the feed and favour JSON and start filling the Tin Can

PS NEW!!! CETIS briefing on Activity Data and Paradata for more developments in this area.

Dashboarding your WordPress bbPress forums to gain quick top level insight

The term ‘dashboard’ currently seems to have a similar effect to marmite, you either love it or hate it. Fortunately it looks like the trend is towards increased personalisation of the way data is presented for both visual and exploratory purposes (an example of this is Thomson Reuters finance system Eikon), so if you don’t like marmite you can have something else instead.

One of the reasons I like using Google Spreadsheets is it’s a fairly easy environment to pull data into, provide specific views and share with others. Recent examples of this include the work I did providing a summary of the discussion activity within the open online course LAK13 (btw the recording of the recent ‘Geek Out’ webinar covering this is available from here). This example takes the existing Atom feed from Canvas discussion boards, which contains all forum posts, and provides some lite summary of activity (shown below – click to enlarge).

CanvasNetworkDashboard

When faced with a similar challenge for ocTEL it made sense to evolve this existing work rather than reinvent. As previously outlined in the ocTEL course recipe, we use the WordPress platform as a course hub, creating additional functionality using plugins. For the discussion forums we use the bbPress plugin. Like the rest of WordPress, bbPress creates a number of data feeds that we can use for forums, topics and replies. As far as I can tell though these feeds follow the WordPress global reading settings for the number of items available and are limited to RSS2.0.

One of the really nice things however about working with WordPress is once you have you basic stack of plugins its easy to customise using your themes functions.php script. And that’s what we’ve done for ocTEL. Using WordPress’ extensive codex documentation we can see it’s possible to create our own feeds. So by adding this custom action in our theme functions.php and including this feed template in our theme folder we have an Atom feed for all our forum activity. With some very minor tweaking of the Canvas example mentioned above I’ve now got an overview of ocTEL forum discussions dashboard.

[If you have your own bbPress forums you can use the code above to create your own data feed and File > Make a copy of the spreadsheet to dashboard your forums.]

So now we have some insight to the ocTEL forum activity it raises some interesting question. Besides turning the insight into action the questions at the top of my mind are: how do we promote this data endpoint? what other data feeds and formats would be useful? How do we license the data? Your thoughts as always are very welcome. 

PS My colleagues Lorna Campbell and Phil Barker have recently published an Activity Data and Paradata briefing paper

#ocTEL- an open online course recipe using WordPress

Having recently posted the ingredients card for ocTEL I thought I flesh out some of the details and give ‘mama’s secret recipe’. Like most recipes it’s not perfect and I encourage you to try it yourself and refine where necessary. Also it’s worth remembering that even though the course is in progress the recipe is being continually refined so it might be worth tracking the code and developments announced here.

Look and feel (child theme)

Starting with the basics, ocTEL gets it’s appearance from the Responsive Theme. The advantage of this is it automatically gives us a mobile and desktop friendly interface. Because we were planning a number of customisations we created a child theme (more info. on child themes). Child themeing works well but one issue is as we have customised some of the templates we are now locked into an older version of the parent theme, version 1.8.9.3 (the parent theme is now version 1.9.3).

Course Reader

As previously mentioned we’ve developed a bespoke Course Reader into our child theme. This incorporates the functionality of a couple of other plugins (Jetpack for infinite scroll, WP Favourite Posts). The main new template files are archive.php and content.php. To give the Course Reader it’s own configurable sidebar widget additionally there is sidebar-archive.php which is registered in the child theme custom functions.

Registration

Within ocTEL my life is made a little harder because registration is entirely separate to the WordPress site. Ideally I’d just use the Theme My Login and enable the ‘Enable User Moderation’ and ‘Enable Custom E-mail’ modules then moderate new users using admin approval. In Settings > General you would also need to set Membership to ‘Anyone can register’ and ‘New User Default Role’ as Subscriber). In the Theme My Login custom email options I’d direct new users to complete their profile (within ocTEL we use bbPress (a forum plugin) which gives us a nice profile page – I’ll detail how we customise this later).

Theme My LoginIn ocTEL we still use Theme My Login mainly for a front-end login screen and instead to create the accounts we use the Add Multiple Users (AMU) plugin. When creating usernames the rule of thumb we used was to use the person’s twitter username or combination of firstNameLastName. The reason for using the twitter handle is FeedWordPress (the aggregation plugin we use) tries to match authors to existing user accounts “with the same name as either (1) their login, (2) their display name, (3) their e-mail address (if given), or (4) one of the “aliases” listed in the user’s profile” [Ref].

By using a Twitter handle  gives FeedWordPress another dimension to match authors using the theory that your twitter handle may be your ‘nom de plume’ for 3rd party services, hence trying to avoid the situation of users being ‘analytically cloaked’ (Suthers & Rosen, 2011). Logins and passwords generated by AMU were exported back to ALT to allow them to distribute via their mail merge system.

Some additional complication is in the original offsite registration form was that users were asked if they a) wanted to be publically listed, b) receive course related emails. To display course participants we use Author Avatar List which allows you to list users based on role.  So by using User Role Editor we duplicated the ‘Subscriber’ role as ‘Subscriber Unlisted’. As AMU lets you define the role for each new user the import data was reshaped in Excel to include this.

As part of the  course related emails we were keen where possible to automatically subscribe users to the ‘daily newsletter’. The newsletter is distributed using the MailPress plugin which does have a built-in add-on to synchronise its mailing list with the site users.  The problem is there is no easy way to batch subscribe a subset of users who opted for email correspondence, instead you have to dig into the guts of the SQL database (to get easy access to this we use Adminer) and do an import from there. If the course was configured so that the default was you got the daily newsletter but you could opt out on an individual basis this would have been a lot easier as there is a tickbox in the MailPress Settings for newsletter Subscriptions for default on.

Feed aggregation

imageLike many other similar courses we are using the FeedWordPress plugin to pull data from external feeds. Most of the setting are left as default.  Where we perhaps do something different is in the Categories & Tags settings we’ve switched of ‘Match feed categories’ for Categories and then assign the default custom Categories Reader and child category Blog posts.

imageThere are a couple of reasons for doing this. In the Course Reader is programmed to render any posts with the ’Reader’ parent category and when users self-register blogs we wanted them to automatically be assigned these categories.  When we register other data feeds like Delicious bookmarks we override the site settings and ‘file’ the feed into a different child category of Reader.

imageThis provides an easy way to filter the course reader down to certain categories of feeds. So if I just want to I can see Bookmarks in the Reader of filter down further for just Mendeley Bookmarks.

There are a couple of extra FeedWordPress plugins we use to try and keep our feeds clean. After reading Anne-Marie Scott for #edcmooc we’ve installed FeedWordPress Duplicate Post Filter mainly to try and cope with duplicate bookmarks, but as you’ll see from the previous links it doesn’t always work.

We also use Ada FeedWordPress Keyword Filters which means we avoid the issues of finding participant feeds for particular tags or categories. Instead we instruct participants to include the course tag in their post content or title and then filter using OR ocTEL,octel,OCTEL (the filter is case-sensitive hence the variations)

  image

Profile

Default wordpress profile pageA fortunate decision we made was to include a discussion space within the ocTEL site. For this we used the bbPress forum plugin. The benefit or using this was that we automatically had a template for participant profile pages, instead of the less user friendly default WordPress page (shown right). Originally we hoped to use the Theme My Login Redirection module to redirect users to their profile page on login but it didn’t seem 100% reliable.  Instead we added a custom filter to redirect to the profile page. We didn’t completely remove the backend admin for subscribers. Instead we opted to hide some of the extra clutter.

Listed/Unlisted

One of the early user requests we got was the ability to update whether they were listed on the public participant list. As there was already a hook to handle the profile updates it was possible to allow users to switch roles.

New fields

Your Profile - OCTELAs well as being able to view any profile (view profile template), users can also edit their details (edit profile template). For the profiles we remove some unwanted fields and add some of our own, which we hook into WordPress.

Registering a blog feed

As part of the profile page we also get users to register their a blog feed, if they have one. I’ve cued up this video clip to show how the process works (you can watch for whole clip to see other profile features). Feed registration is notoriously difficult, feeds aren’t always visible, low general awareness of RSS etc. etc. The solution we’ve come up with is based on Martha Burtis’ Perfecting the Syndicated Blog Sign-Up. The process for doing this is in two parts. On the frontend we attach some jQuery/JavaScript to add some additional functionality to the form fields. When a blog url is entered and a button is clicked an ajax call is made to try auto-detect the RSS feed (the core stolen from Alan Levine). This creates a dropdown list of feed sources which is rendered in the profile edit page.  When the profile_update is triggered as well as updating the listed/unlisted status we add the blog rss feed url to the WordPress Links database (see FeedWordPress Basic Concepts). This is done using a modification of Martha’s make_link function. The rough workflow is get the category for FeedWordPress links and build the link item. If a link hasn’t been submitted before (this is recorded in the user’s metadata) insert the link using the build in wp_insert_function (to avoid the stripslashes issue Martha talks about in her post this link is updated with a SQL call). If the user has already submitted a link we overwrite the existing one.

Newsletter management

Because we wanted users to be able to manage their newsletter subscription from their profiles and because MailPress handles this separately from user profile data we created a custom link populated by querying the MailPress database.

Individual Course Reader Submissions

Other open courses have employed a number of techniques for capturing thoughts, ideas, activity from off the rss beaten track (the ds106 assignment bank immediate springs to mind). Early on in ocTEL we got a request to add someone’s Storyify to the Course Reader. As this had no RSS feed in the user’s profile page we created an individual item submission form.  The form uses the User Submitted Posts plugin. In the end it might have been quicker to code this from scratch because the plugin has a number of settings that have to be configured and custom hooks applied.

If this is something you want to use in your own course activate the plugin and in the settings show:

  • Post URL
  • Post Title
  • Post Content

Use the HTML5 form, don’t include JavaScript or targeted loading (we call the form building function in the template). Ignore the category selection for now – I’ll got into how we structured our categories later. Don’t worry about the set assigned author. We chose to publish immediately but you might want to moderate new submissions. An important part is the ‘Use registered user info’. Make sure you tick:

  • Use registered username for author
  • Use a hidden field for submitted category

In the category ID you need to find the ID of your chosen categories (you could use the Uncategorised’ ID because as part of our custom processing hook we modify/add it)

Some custom processing is required so that posts submitted via this form behave in the same way as content collected by FeedWordPress. This requires adding the meta data used in the Course Reader and modify the behaviour so that the post redirects the user to the source url. For the first part we add an additional category (this is where you could add/remove more) and post meta then change how the permalink works for this post type.

Forums

As mentioned earlier we use the bbPress forum plugin in the course. Originally this was included to allow an alternative discussion space for people who were not big users of other social media channels. Beyond some new templates for profile pages the only other code customisation is the integration of a users WP Favorite Posts. Several bbPress specific add-ons are used to improve functionality listed in the ocTEL recipe card, denoted by bbPress or bbP (one additional plugin recently added is bbPress Pencil Unread). These plugins are mainly used to enable extra functionality for administration, navigation and notification. Within the forum settings (Settings > Forum)  with these plugins enabled gives you some extra control. For the next iteration of this one change we’d probably make is flip the threaded reply order to newest first.

MailPress custom theme

A big aspect of our course configuration is the daily newsletter summary of course activity. This is handled by the MailPress plugin. MailPress includes a number of additional add-ons which you can selectively enable (Plugins > MailPress Add-ons). The ones we have on are:

  • Batch_send Mails : Send them in batch mode
  • Bulk_import Users : import from mp users list
  • Connection_sendmail Connection : use Sendmail
  • Import Users : Import/Export mp users from/into files
  • Newsletter Newsletters : for posts
  • Sync_wordpress_user Users : synchronise with WordPress users
  • Tracking_ga Tracking : mails activity to your site with google analytics
  • View_logs Logs (view logs stored in tmp folder generated by MailPress in your browser)

MailPress allows you to theme your mailings in a similar way to WordPress themes. Our theme

octel newsletter [click to enlarge]The newsletter currently contains five sections (links highlight main sections of the code on Github):

  • Course information – displays any full post made by the course team tagged ‘course information’.
  • Recent activity – is used to summaries new aggregated content from the course reader
  • Forum activity – currently configured to display the last 5 recent topics and recent replies
  • Participant blogs – excerpts from participant blogs
  • Bookmarks – a summary of bookmarks from delicious and diigo tagged ocTEL

So that’s a snapshot of work so far, stay tuned for more developments. If any aspect of this recipe is unclear or you have suggestions for improvements leave a comment ;)

#ocTEL: Outline of an open course (maximising email push with MailPress)

This post originally appeared on the ocTEL blog on 15th April and was written in collaboration with David Jennings. I’ve reposted it here as it outlines some of the broad ideas we are using with this open course, but in particular I wanted to highlight the use of the WordPress plugin MailPress to distribute course updates. The latest MailPress theme is here and the course theme customisations (a more detailed recipe is in the works).

ocTEL has been up and running for over a week now. After a start where the momentum of the email discussion threatened to run away with itself, Stephen Downes, who is a ‘critical friend’ on the project, shared his advice to OcTEL. We’ve taken that advice to heart and this post outlines how we’ve sought to embrace his suggestions.

Stephen advises:

  • set up a system whereby you are sending out one email a day to people
  • in this email, put your course announcements at the top
  • also put a link to the mailing list archives, or (even better) links to the current topics on the board archives

… you can use this system to incorporate ‘publish in your own space’ responses

  • create a mechanism to allow people to register their blogs
  • set up an aggregator of participant blogs
  • include the aggregator listings in the once-a-day email

Additionally

  • aggregate the Twitter posts for the course tag (I forget what it was; I’m sure it’s in an email somewhere)
  • aggregate from the diigo group – https://groups.diigo.com/group/alt-octel
  • list these posts in your once-a-day email

One email a day: the Daily Newsletter

When creating the ocTEL platform we were conscious of the need to push information to participants in a timely and useful way. From day one we had included the MailPress plugin for WordPress for distributing a daily and weekly newsletter. Below is a screenshot of the newsletter from day one sent on the 4th April. Other than there not being much content (it was day one) we recognised there were a number of areas to improve.

Daily Newsletter Day 1 (click to enlarge)

octel newsletterUsing some earlier work we’ve developed a custom ocTEL template (available here along with other source code from the project). The image to the right (which you can click to enlarge) gives you an overview of a recent version of the newsletter, which you can view online here.

Put your course announcements at the top, plus links to the current topics on the board archives…incorporate ‘publish in your own space’ responses

The newsletter currently contains five sections:

  • Course information – displays any full post made by the course team tagged ‘course information’.
  • Recent activity – is used to summaries new aggregated content from the course reader
  • Forum activity – currently configured to display the last 5 recent topics and recent replies
  • Participant blogs – excerpts from participant blogs
  • Bookmarks – a summary of bookmarks from delicious and diigo tagged ocTEL

As the course evolves our plan is to refine the newsletter to maximise effectiveness. This will be in part to respond to the dynamics of the course, but also to experiment with different configurations and features. If you have any suggestions for these we’ve created a topic on the forum or contact us by any other means that you prefer.

Create a mechanism to allow people to register their blogs, aggregate them and include in daily email

The ‘publish in your own space’ (or wherever you prefer) principle is at the core of our platform design and has directly influenced a number of our fundamental decisions including the adoption of WordPress. As part of the registration form we asked participants to include a link to their existing blog and these were imported into our platform from the start, after which participants could login to review and edit their details — as shown in the video below. This includes selecting an RSS feed so that we can aggregated their posts into our site allowing other participants to review content via the Course Reader or as part of the daily newsletter.

Like a number of other open online courses we achieve this by using the FeedWordPress plugin for WordPress which has the ability to aggregate RSS data. In addition to this we recently developed the ability for participants to submit additional artefacts not accessible using RSS.

Aggregate from the diigo group

As well as collection of data from participant feeds we are aggregating other feeds. These include the ocTEL JISCMail list, the Diigo group, Delicious bookmarks tagged ocTEL and others. Even though the course has been running a relatively short time, it’s encouraging to see individuals establishing new places for participants to cluster. As these are created, and where possible, we are adding them to the list of aggregated feeds. This currently includes the Google+ Community created by David Read and a Mendeley Group created by Ann Nortcliffe.

Aggregate the Twitter posts for the course tag

Currently we are only aggregating a selection of tweets into the Course Reader using the search term ‘#ocTEL AND ?’ giving us a sub-selection of tweets which might be questions. Using a system developed for another open online course we attempt to match questions with answers. These are available in the Course Reader and in this dedicated page.

It is also worth highlighting that we are archiving all the course tweets using a Google Spreadsheet template. In an attempt to provide a way for participants to navigate and explore this data we have another dedicated page with a ‘conversation graph’.

Cease sending out mailing list emails, give people a few days to catch their breath

This was the one element of Stephen’s advice we haven’t yet followed. We trusted ocTEL participants to self-regulate and catch their breath of their own accord, and happily they did. We know that email discussion lists have the capacity to flare up suddenly, and that may happen again. However, our parent organisation ALT successfully runs an email list with a thousand members, and, at present, ocTEL’s list of just under 800 participants is going through a quiet phase.

To conclude

When launching this course for the first time, we wondered what decisions would look daft with hindsight. Now I think we know at least one such decision. We have made changes quickly where we could, while still operating within our original principles. I hope this post highlights in a number of other areas we are not only on top of the problem but proactive in developing and sharing new solutions to help others who might be interested in delivering their own open online courses. I hope it also illustrates that we are trying to respond to the needs of our participants and we welcome any suggestions you have to improve the course (you are free to choose how to submit these for example the forum, email or other…)

CFHE12 Week 4 Analysis: Blog post comments (notes on comment aggregation for cMOOCs)

This week saw me submit my application to the Shuttleworth Foundation  to investigate and implement cMOOC architecture solutions. It seems rather fitting that for this week’s CFHE12 exploration that an element of this is included. It’s in part inspired by a chance visit from Professor David Nicol to our office on Friday. It didn’t take long for the conversation to get around to assessment and David’s latest work in the cognitive processes of feedback, particularly student generated, which sounds like it directly aligns to cMOOCs. It was David’s earlier work, which I was involved in around assessment and feedback principles that got me thinking about closing the feedback loop. In particular, the cMOOC model promotes participants working in their own space, the danger is with this distributed network participants can potentially become isolated nodes, producing content but not receiving any feedback from the rest of the network.

Currently within gRSSHopper course participants are directed to new blog posts from registered feeds via the Daily Newsletter. Below is a typical entry:

CFHE12 Week 3 Analysis: Exploring the Twitter network through tweets
Martin Hawksey, JISC CETIS MASHe
Taking an ego-centric approach to Twitter contributions to CFHE12 looking at how activity data can be extracted and used [Link] Sun, 28 Oct 2012 15:35:17 +0000 [Comment]

One of the big advantages of blogging is that most platforms provide an easy way for readers to feedback their own views via comments. In my opinion this is slightly complicated when using gRSSHopper as it provides it’s own commenting facility, the danger being discussions can get broken (I imagine what gRSSHopper is trying to do is cover the situation when you can’t comment at source).

Even so commenting activity, either from source posts or within gRSSHopper itself, isn’t included in the daily gRSSHopper email. This means it’s difficult for participants to know where the active nodes are. The posts receiving lots of comments, which could be useful for vicarious learning or through making their own contributions. Likewise it might be useful to know where the inactive nodes are so that moderators might want to either respond or direct others to comment.

[One of the dangers here is information overload, which is why I think it’s going to start being important to personalise daily summaries, either by profiling or some other recommendation type system. One for another day.]

To get feel for blog post comment activity I thought I’d have a look at what data is available, possible trends and provide some notes on how this data could be systematically collected and used.

Overview of cfhe12 blog post comment activity

Before I go into the results it’s worth saying how the data was collected. I need to write this up as a full tutorial, but for now I’ll just give an outline and highlight some of the limitations.

Data source

An OPML bundle of feeds extracted in week 2 was added to an installation of FeedWordPress. This has been collecting posts from 71 feeds filtering for posts that contain ‘cfhe12’ by using the Ada FeedWordPress Keyword Filters plugin. In total 120 posts have been collected between 5th October and 3rd November 2012 (this compares to the 143 links included in Daily Newsletters). Data from FeedWordPress was extracted from the MySQL database using same query used in the ds106 data extraction as a .csv file.

This was imported to Open (née Google) Refine. As part of the data FeedWordPress collects a comment RSS feed per post (a dedicated comment feed for comments only made on a particular post – a number of blogging platforms have a general comment feed which outputs comments for all posts). 31 records from FeedWordPress included ‘NULL’ values (this appears to happen if FeedWordPress cannot detect a comment feed, or the original feed comes from a Feedburner feed with links converted to feedproxy). Using Refine the comments feed was fetched and then comment authors and post dates were extracted. In total 161 comments were extracted and downloaded into MS Excel for analysis

Result

Below is a graph of cfhe12 posts and comments (the Excel file is also available on Skydrive). Not surprisingly there’s a tail off in blog posts.

CFHE12 Blog Posts and Comments

Initially looking at this on a per post basis (shown below left) showed that three of the posts were been commented on for over 15 days. On closer inspection it was apparent this was due to pingbacks (comments automatically left on posts as a result of it being commented in another post). Filtering out pingbacks produced the graph shown on the bottom right.

CFHE12 blog comments timeline  CFHE12 blog comments timeline (without pingbacks)

Removing pingbacks, on average 3.5 days after a post was published comments would have stopped but in this data there is a wide range from 0.2 days to 17 days. It was also interesting to note that some of the posts have high velocity, Why #CFHE12 is not a MOOC! receiving 8 comments in 1.3 days and Unfit for purpose – adapting to an open, digital and mobile world (#oped12) (#CFHE12) gaining 7 comments in 17 days (in part because the post author took 11 days to respond to a comment).

Looking at who the comment authors are is also interesting. Whilst initially it appears 70 authors have made comments it’s apparent that some of these are the same author using different credentials making them ‘analytically cloaked’ (H/T @gsiemens).

analytically cloaked

Technical considerations when capturing comments

There are technical consideration when monitoring blog post comments and my little exploration around #cfhe12 data has highlighted a couple:

  • multiple personas – analytically cloaked
  • pingbacks in comments – there are a couple of patterns you could use to extract these but not sure if there is a 100% reliable technique
  • comment feed availability – FeedWordPress appears to happily detect WordPress and Blogger comment feeds if not passed through a Feedburner feedproxy. Other blogging platforms look problematic. Also not all platforms provide a facility to comment
  • 3rd party commenting tools – commenting tools like Disqus provide options to maintain a comment RSS feed but it may be down to the owner to implement and it’s unclear if FeedWordPress registers the url
  • maximum number of comments – most feeds limit to the last 10 items. Reliable collection would require aggregating data on a regular basis.

This last point also opens the question about whether it would be better to regularly collect all comments from a target blog and do some post processing to match comments to the posts your tracking rather than hit a lot of individual comment feed urls. This last point is key of you want to reliably track and reuse comment data both during and after a cMOOC course. You might want to refine this and extract comments for specific tags using the endpoints outlined by Jim Groom, but my experience from the OERRI programme is that getting the consistent use of tags by others is very difficult.

Discovering TEL-Map Mediabase: Anyone else thinking cMOOC infrastructure?

Discovering TEL-Map Mediabase

Twitter hasn’t completely abolished 3rd party clients just yet. The text is the red circle is generated from the details a users/company submits when they create an application that uses the Twitter API. As part of the registration the user has to provide a url for the application. In this example ‘TEL-Map Mediabase’ redirects to Learning Frontiers, which is powered by Tel-Map. I should probably know more about TEL-Map because one of the partners is CETIS (before my time). 

But what about ‘Mediabase’. Well a search of ‘TEL-Map Mediabase’ returns the page ‘MediaBase – Collecting, Analysing and Visualizing Large Collections of Social Software Artifacts’ which contains the presentation by Ralf Klamma.

So you basically have a system that can crawl and analysis predefined source feeds, analyse the collected data and either manual or automatically tag links, which can be pushed to a portal or tweeted from the system (and much more). Anyone else thinking cMOOC infrastructure?

[If the system is as good as I think it is I’m expecting another tweet from TEL-Map Mediabase]

Sketch of a cMOOC registration system

In CFHE12 Week 2 Analysis: Data! Show me your data and I’ll show you mine I highlighted some of the issues with collecting RSS feeds for participant blogs. The main issues are:

  • participant knowing their blog’s RSS feed
  • providing a feed filtered for a specific tag
  • data entry (missing http://, whitespace etc)
  • automatic registration of a feed with another system

This last one is very dependant on the system you are using for aggregating participant contributions. gRSShopper (developed by Stephen Downes) is an integrated solution whilst, as far as I’m aware, the FeedWordPress plugin used in ds106 and others requires some manual data entry, but bulk import is possible.

Before outlining my vision of a cMOOC registration system there is a basic decision about what you want to aggregate feeds on. Given the issue with getting Tag Feeds for a variety of Blogging Platforms I’m swaying towards asking participants to use a course identifier in each post title rather than as a tag/category/label. This make feed detection easier and whilst not familiar with the backend of gRSShopper think it would be a trivial bit of extra code and I’m already aware of extra plugins for FeedWordPress to filter posts. I will however provide outlines for both:

Registration flow with course posts by tag/category/label

Part of this is a modification of the existing registration process used in ds106.

  1. Optional: Ask user to generate a post in their blog with course tag (you could provide some set text advertising course)
  2. Enter details:
    1. name, social media accounts etc
    2. blog homepage
    3. blogging platform
  3. From blog url/platform display guessed (auto-detected) feed (if you’re using optional step this can be validated with auto-detection). If not a recognised blogging platform or tag/category/label feed not available instruct participant to include course tag in all post titles.
  4. Submit details

Registration flow with course posts by title

  1. Optional: Ask user to generate a post in their blog with course tag (you could provide some set text advertising course)
  2. Enter details:
    1. name, social media accounts etc
    2. blog homepage
  3. From blog url display guessed (auto-detected) feed (if you’re using optional step this can be validated with auto-detection).
  4. Submit details

Another aspect not mentioned here is letting the user edit their feed.

That’s my suggestion anyway. Your thoughts very welcome! BTW Yishay Mor at the OU has started thinking about the wider functionality of a cMOOC aggregation system.

About

This blog is authored by Martin Hawksey Google+

JISC CETIS Learning Technology Advisor (OER Programme Support)
jisc cetis logo

The MASHezine (tabloid)

It's back! A tabloid edition of the latest posts in PDF format (complete with QR Codes). Click here to view the MASHezine

Preview powered by:
Bluga.net Webthumb

The MASHebook

You can also download this post as:

Subscribe to monthly email digest of posts

Loading...Loading...


Subscribe to per post email updates

Enter your email address:

Delivered by FeedBurner

Copyright License

Creative Commons Licence
This work is licensed under a Creative Commons Attribution 3.0 Unported License. CC-BY mhawksey

Privacy /Cookies

This blog uses Google Analytics (which makes use of 'cookie' technologies) to provide information on usage. Here's an overview of Google Analytics Privacy and how to opt-out (other 3rd party services like Twitter might also be tracking you via this site, but as far as possible I try and prevent this by removing official tweet buttons).

Badges

. . .