My Vision for a Semantic UBC

This is my vision as for what we can do at UBC to create an expandable eduglu solution.

Most content will be stored in a wiki. Our wiki will be extended so that we can lock more sensetive pages for certain users.
In order to make our content semantic and to allow it to be remixed in ways that make sense we would use the SemanticMediaWiki plugin for our MediaWiki. A working example of this kind of wiki can be found here.This plugin allows users to define relationships between the article and its content. This data is then Collected and can be navigated in a semantic way. Lists are then also generated and dynamically maintained. For instance in Chemistry someone could define the property “has boiling point” for a certain element. The page for “is metal” will then contain all the elements that have a boiling point (like this example).

Once we have the Semantic MediaWiki the next step is to republish content from the wiki into other contexts. We are still working on exactly how to do this (what tools to use etc) but the basic concept is simple: Use some kind of feed to publish the content in another context (we will probably use WordPress as the new context for most of our services). Then periodically check the feed to see if it has been updated. If it has been updated, then update the republished content. This ensures that not only is content dynamic (like it should be) but it also means that it is searchable and that the server-breaking parsing of hundreds of feeds doesn’t happen all the time. Another step would be to build in a system whereby people who take feeds from the wiki are notified when the content changes (I know the watch page function does that already, but one time users that just wanted to quickly grab and republish some content would need to be informed of major changes to their content). This would create communities of watchdogs around more used content to ensure that vandalism is quickly curbed.

So that is the start. Content is dynamic and open on the wiki. It will be easy to grab content and republish it in other places. It will also have meta data that can used in the immediate term to navigate data and in the long term to drive applications like those created by the MIT simile project.

Edugluing things together

so here is a mapping of my plan for a UBC content management strategy. It is designed to overcome two obstacles:

1) Content changes, therefore the content stored in repositories has to change and be updated when the source is updated. This is overcome by using a wiki (this has been Novak’s vision of content management for a while) that produces RSS feeds along with an aggregator like Feed WordPress that updates the repository when a feed gets updated (that feature is still buggy at the moment, but I will get to fixing that ASAP).

2) The second obstacle is the fact that RSS and JavaScript are not easily searchable (a must for a content repository or even an end user site). Republishing is a must until we find an easy way to index and search RSS and JSON.

So here is what it looks like (click on it for larger view):

The last piece of course blog the puzzle… for now

So it’s 4:30 in the morning and I am nowhere near ready to go to bed. So instead I did the final quality testing for my “add user widget” WordPress Mu plugin.

This plugin eliminates the question that I’ve been asked plenty of times “what if a student who is not in the class adds themselves to a course blog?”. I think the answer is simple (and I think Jim and Brian would agree with me)… just delete and/or ban the user. However, in order to eliminate this barrier on implementing course blogs I modified the plugin to allow professors to enter a list of student emails. If the student’s email is in the list they can then add themselves to the list. This means that in conjunction with my Add to BDP RSS widget that Professors or institutions can decide whether anyone can add themselves, subscribers to the WordPress Mu system or only users that are in a specific list. This will now work for all three of the course blog types that I created.

Add User Widget

This plugin is a modification of sidebar add user widget by DSader. It adds a whole bunch of control functionality that allows admin to change who is allowed to add themselves to a blog and also what type of permission is allowed. It also changes the way that the widget appears depending on the user’s status. It was developed primarily for course blogs.

Final, final update:

WordPress. org has started to show OLT some love and we are now rapidly publishing all of our plugins there. The new direct link to download sidebar add user widget is here and the plugin page is here.

Final Update:

Now that OLT has a place to house its plugins I will no longer be maintaining add user widget on this site. Instead it will live on blogs.ubc.ca. The direct link isĀ here.

Update: V1.2.4

Fixed the problem with the plugin not reloading user’s status when they first add themselves.

Update: V1.2

Changed the way restricting users works. Now the admin can simply set a password in the widget control menu and users who know the password can add themselves to the blog.

Download V1.2.4

Download V1.2.1

Download V1.0

Installation:

Just drop into the mu-plugins folder.

Any problems/suggestions just leave a comment

Add to BDP RSS WordPress plugin

Here is my first WordPress plugin. It is meant to extend the excellent BDP-RSS plugin by Bryan Palmer. This plugin allows users who are logged in to a WordPress MU system to add feeds to the BDP-RSS feed aggregator from the sidebar. It is primarily designed to allow students to add the feed of their own blog to a class aggregate blog.

Please let me know what you think.

Installation:

Just download, unzip, then drop the plugin into your plugins->BDPRSS folder and activate in the plugins menu.

Update: For some reason the control is not saving the options properly. I’ll fix it on Saturday morning.

Update: Version 1.2 released.

Changed the way that permissions work.

  • Simplified things by only allowing registers users of the community to add their feeds.
  • Gave admin the option of password protecting a blog so that only users who know the password can add feeds

Download V1.2

As always, let me know what you think of the changed.

Update: Version 1.1 released.

  • Fixed subtitle bug
  • Added control over what type of user can add feeds.
    • Global: Anyone can add a feed
    • System: Anyone on the Mu System can add a feed.
    • Blog: Only a subscriber to the specific blog that the widget is on can add a feed.
  • Made it so that if a user cannot add a feed, they don’t even see the text box.

Download V1.1

Zemanta Pixie

Three flavors of course blogs, very yummy…

In a comment on my post “who owns a class blog Jim Groom said:

That is the rub, when you open up a system like this, there are a number of ways of going at it, and having the ability to meet as many of them easily makes your life simpler.

I agree whole-heartedly with Jim. My judgment has been clouded lately by the Wp-o-matic’s ability lack of to update posts on the fly and the lack of a “delete all” button on any of WordPress’ pages. Today though, I saw the light. I now have a clear vision of three simple, definable, student driven course blog structures.

  1. The ghost blog:

  2. This blog is for the professor who doesn’t want to be confused by hundreds of student posts knocking around his/her blog. The blog simply uses BDPRSS and my add-to-BDPRSS widget (source code coming soon I promise) to populate a WordPress page with aggregated student entries. When another year of students comes, the old posts will still be there (or not, or in another blog that that the new blog links to), but as newer posts come in, the old posts will fall off of the bottom of the feed and the blog will have just new fresh content. No having to delete anything!

  3. The Communal blog:

  4. This blog is for the professor who wants to get stuck into the blogging experience with the students. This also probably the easiest (although I used to think it was the hardest) to implement. Jim reminded me of the “Add Sidebar Users” widget, which I will tweak slightly to make setting up this kind of blog super easy. Our new blogging service will allow students to sign up as just subscribers if they want to and with Campus Wide Login they won’t even have to remember their username. Zero work for the professor!

  5. The spam blog:

  6. Jim did great things with WP-o-matic. I found a tool that works even better for what we want to do (in fact, it is the one thing that I can now do better than the current incarnation of eduglu). FeedWordPress by Charles Johnson is another spamblogger that updates entries if they change in the feed. The biggest problem that I had with other versions of spam blogging tools was that they took dynamic content, republished it and then made it static. This might work for blog posts (which don’t generally change very much after they have been written)… but for something like a course syllabus or wiki feed (I’ll save that discussion for a later day) the content in the repository has to be continually updated. Otherwise we just have old junk entries lying around. FeedWordPress fixes that. FeedWordPress also has a nice “delete all” button that will get rid of feed entries that are marked for deletion. Best of all, the author has provided an excellent API and a bunch of hooks so that I can massage this plugin into doing my complete bidding.

    I will be finalizing and testing these methods tomorrow and over the weekend and will hopefully have some concrete examples by early next week.

    One last thing. These structures do not have to be independent. the communal blog can be combined with the spam blog (giving students the option). A ghost page can then be created in a different tab, feeding in content from other sources as examples and even points of discussion for future posts by the students. A ghost blog can be archived by simply feeding it into a spam blog and so on.

Explaining myself! (and a sneak peak at the end)

Why do I care about Educational Technology? I don’t know any other students who truly do. Here is a part of the why:

A year ago I didn’t care about education and technology at all. I really didn’t. One day I realized that UBC was missing some kind of events calendar. so many great things happen on campus that are under-attended because people simply don’t know about them. I contacted Tlell Elviss (one of the most awesome people I know) and she told me that she had just been contacted by a student who was also interested in the same thing. We got together and talked about it (along the way she taught me about this obscure piece of technology called RSS). Things evolved and now the University is in the midst of creating a usable tool.

In the second term of my first year I became immensely annoyed with the fact that WebCT locked away all the examples from CPSC 111 that I had used in the first term. Those examples could have helped me immensely in CPSC 211. I felt so utterly cheated, nobody told me when I came here that all the resources that I am given at University are equivalent to trial software… you can use them for a few months and then suddenly it gets taken away from you. I was angry.

Shortly after that I decided that UBC was missing something else. A simple way to plan your degree. Thousands of students do it every year using sheets and sheets of paper, crossing things out becoming really confused ending up spending an extra semester or year in university. I decided to build something in Java (the only programming language I knew back then) and after obtaining a quasi-working model I realized that the job was too big for just me. Instead, I created a simple template in excel that provided a clear way for students to map out their future.

That was what got the ball rolling. Over the Summer I work at UBC Student Development on LEAP and there learned the I am truly interested in educational technology. I can see so much potential for them to make student’s lives better. I started Get Teched Up as a result.

I spent my last term at school using as many learning technologies as I could get my hands on and following the exploits of many of the edubloggers. That is why I am really not deserving at all of Jim’s praise… I’m not new to this, I don’t understand eduglue because of some innate ability, I understand it because I’ve been thinking about it for almost half a year now.

On a more fun note, if anybody wants to play with my latest plugin, go here and add your feed into the box. Give BDP a few seconds to poll your feed(don’t worry about any error messages… it’s still in production) refresh and then look for your posts in the featured blogs list.
Enjoy…

Cheers

Who owns a class blog post?

So after a lengthy discussion with Vince today I have decided to change my mind on a few of the things that I seemed so certain about just a day ago.

So here is the deal:

I wrote that we would allow professors who so wished to republish all of the student’s blogs into a class blog using wp-o-matic. I’m not sure if we should do that anymore. My reservations come from that fact that if it is republished in the Professor’s blog then I feel that the students loose ownership and that rings strange to my sense of morality.

Let’s consider a few hypothetical situations where a student writes for a class and his blog entries are republished in a class blog :

  • A year down the road the student realized that what he wrote does not represent him and he wants to get rid of it. He can delete the entries in his blog, but they will still be saved in the class blog. He could of course ask the professor to take his posts off, but what if it is 10 years down the line? What if there were a lot of other students who feel the same way?
  • The student decides to delete his blog. If the professor decides to publish the class posts (without attribution), the student has no way of claiming authorship over the post.

There are also hangups for the professor:

  • If the professor accidentally resets wp-o-matic It will recreate all of the entries. WordPress doesn’t have automatic mass deleting of entries (I mean we could write a plugin for it… but plugins take time).
  • If the student updates their blog then those updates are not automatically reflected on the class blog.
  • If a student adds a strange feed (one with say 150 items regarding unsavoury topics) then if those are republished, it is a nightmare to get rid of them. If we just use BDP RSS, all it takes to undo the damage is delete the feed in the BDP RSS options menu

There are probably many more reasons why actually republishing would not be a good idea.

So it comes down to figuring out why we wanted to republish the posts and finding alternatives.

  • Creating a repository: I don’t think at this point we are wanting to create a repository, this isn’t eduglu (as I may have wrongly alluded to in my previous post), it is a blog based course platform where student input is used. A repository of teacher resources should be done in an entirely a slightly different way.
  • Keeping examples of what students did previously: Why not just leave the blog active and create a new blog for every year that links back to previous years. Not only would this give the students an opportunity of pulling out if they don’t want their work published anymore, but it would also allow them to continually update what they have and allows the course to have a history. Using templates and import/export It would be much easier to create a new blog than to get rid of everything from the old blog.

I’m wondering does this make sense? Or are we missing something? We will probably change our minds a hundred times between now and October, but for now I think this model is the most sustainable and easy to implement approach, for us and for the professors.

Making WordPress work for UBC

I’ve just come back from Northern Voice 2008, an absolutely phenomenal experience that I learned a ton of great things from (and will blog about it as soon as I have got the important stuff off of my chest…).

Probably the most important thing that I learned is that the work that Vince and I are doing for UBC Blogs matters to others outside of UBC. From reading posts on Brian Lamb Jim Groom and D’Arcy Norman’s blogs I knew that a lot of people were struggling with the implementation of a free, easy to use “course management system” based on blogs, but for some reason it just didn’t click that I could (and should) be helping everyone out by describing what we are doing. It was only when Jim Groom and Lloyd Budd both on seperate occasions excitedly asked the question “where are you blogging this stuff” that I realized that I have been neglecting my duty to the community by not outlining our solutions to the problems of implementing a university-wide blogging platform.

So here it is, my plan for using WordPress as a University wide blogging platform:

To start off, I’ve been mentally breaking the problem down into two parts. We are in a sense providing two completely different services. One part is that we are providing a platform and community for student bloggers. The other part is that we are providing a course management system for professors. Although both services are interlinked, they each have their own fundamental challenges.

  1. Challenges in providing blogs for students:

    We want to provide students with a way to easily tell their story and with a way to find other students who are interested in their story. The second part is a little easier to do (seeing as umwblogs has already successfully done it), using plugins like muTags, List All widget and BDP RSS we are hopefully going to be able to provide enough ways for students to connect with each other when blogging and help them to easily form that community that so many bloggers crave. for a sneak peek here is the link to one of our many dev sites (warning., it is a dev site, so don’t expect it to look the same every time you stop by).

    the “easy” storytelling part is the true challenge. Despite what many professors might think, many students are scared of technology and the thought of having to learn an HTML tag or two sends many students running away screaming. Students are also scared of registering for too many services online, I know that we all have that fear… but many students find it crippling. Solving the “no HTML” problem was easy… we used WordPress. Solving the “signup” problem was a bit more difficult. We (and when I say “we” I mean Enej and John and Vince, with me shouting out ideas and debugging from the sidelines) created a plugin that integrates UBC’s Campus Wide Login (CWL) with the WordPress login. The process is a bit intricate so I will dedicate a full entry to it tomorrow.

    Start a blog

  2. Challenges in providing course blogs:

    .

    How to use WordPress to create a versatile, easy to use eduGlue blog? At Northern Voice, Vince, Jim, Brian and I met to try and figure it out. Here is what we came up with:

    The first step is to create a widget plugin that can be embedded in the sidebar of the course blog. That widget would have fields for students to paste their name, RSS feed and blog URL. The name and blog URL would be added to the course blogroll and the RSS feed would be added to the BDP RSS aggregator. BDP allows one to aggregate blog posts and display them in a fully customizable way (and touch wood… we haven’t been able to break it yet). A professor who wants a ghost blog (one that doesn’t keep the student’s entries when they leave) would simply output the BDP feed into the course blog and everything would work well. If the professor wants to keep a repository of all the posts written for the class by students, the BDP aggregated feed could just be fed into wp-o-matic the spamblogger that Jim has been experimenting with. Professors want this kind of flexibility and this solution provides it quite elegantly, only requiring a few simple plugins.

    This solution allows students to post in whatever medium they feel comfortable with, it allows students to keep their content and it stops professors from having to do anything technical when setting up a blog, aside from applying the course theme that we create that lets professors choose whether or not they want to keep their student’s content.

Whew… so that is what we are doing… in a very general nutshell.I will be elaborating in weeks to come, but for now if there are any questions, comments, suggestions, pieces that I can elaborate on etc let me have them and I will be sure to act on it.

WordPress – my love, my hate,

WordPress and I have a love-hate relationship. I love WordPress for the fact that to do simple things, it is incredible simple to use. I hate it for the fact that to do less simple things it baulks. It screams “SSH into the server and play with my core php files biutch!”.

I guess I should provide some background on why WordPress and I have any relationship at all. At the moment I am developing a blogging platform for UBC to replace weblogs.elearning.ubc.ca. This project will hopefully allow bloggers at UBC to connect with each other and inspire the creation of some rich academic and personal content. We are trying to do this all with WordPress.

At this year’s Northern Voice Conference Jim Groom (a true expert on WordPress who’s blog and creation have helped me solve so many problems with my own blogs) is thinking of hosting a WordPress anonymous session that welcomes all WordPress lovers as well as “haterz”. I am neither, but I have started dreaming about WordPress so I guess I should really attend.

I do have one big complaint about WordPress that I need to get off of my chest now (and will probably continue to rant about at NorthernVoice):

I’m bitterly upset over the fact that WordPress trusts nobody! Without heavy plugins and hacking you just can’t do anything fun… no matter who you are. Admin has no ability to upload theme files and page templates. I know that security is an issue (especially in WPMU) but I just wish there was a simple way for an admin to say: “Ok, WordPress… I trust this user and his blog, why don’t you go ahead and let him use a tiny little embed tag…?”I know that there are probably plugins or hacks to do that… but they are not easy to find. Assigning “superuser” roles that don’t strip you of any advanced coding or limit you to pre-installed themes and templates would be such a great addition to wordpress… and would probably convert many of the “haterz” out there. I mean think about it… with that kind of functionality… who needs Movable Type?