LaTeX support in WordPress

My recent proposal to do a workshop session on WordPress MU and BuddyPress at this year’s ALT conference was accepted on the condition of a couple of modifications. It’s been suggested that it should be run as a demonstration rather than workshop and that I offer more detail on what will be demonstrated. Fair enough. The reviewer of my proposal suggested that I might aim the session at “teachers of mathematics-intensive disciplines because of WordPress’ decent support of \textrm{\LaTeX{}} for processing mathematical formulae.”

This isn’t an area I would normally think to support (although I did write my MA dissertation in \textrm{\LaTeX{}}, using LyX – it produces beautiful typeset text, regardless of whether you use it for science-related work). Anyway, a quick search showed that indeed, WordPress has supported \textrm{\LaTeX{}}, on both wordpress.com and as a plugin for a couple of years. You can adjust the size and style of the output and enable it for comments, which, if discussing mathematical formulae with peers, could be of huge benefit.

Maxwell’s Equations

\nabla \cdot \mathbf{D} = \rho_f

\nabla \cdot \mathbf{B} = 0

\nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}} {\partial t}

\nabla \times \mathbf{H} = \mathbf{J}_f + \frac{\partial \mathbf{D}} {\partial t}

Realtime WordPress updates to FriendFeed (and therefore to XMPP)

Quickly following on from my previous post about realtime XMPP updates from wordpress.com:

For self-hosted WordPress blogs, there’s the Jabber Feed plugin, which promises something similar but is going to take me a while to set up. For something quick and simple, there’s the wp-sup plugin which “implements FriendFeed’s Simple Update Protocol. Your blog posts will appear on FriendFeed near-instantly after they are published.”

And indeed, they do. Even better, you can receive FriendFeed notifications via Google Talk/XMPP/Jabber, achieving pretty much what wordpress.com are offering via their IM bot.

FriendFeed is a decent social lifestreaming and messaging platform. There’s an iPhone interface, a FaceBook app; it allows for a little more engagement than Twitter with the ability to ‘like’ content and comment extensively (with no 140 character limit). I can see it being quite useful to aggregate and discuss course work. You can have private groups, too.

I’ve been trying to ‘hack’ ((I use the term ‘hack’ loosely. ‘Botch’ might be a better way of describing my approach to code.)) the plugin to also work for comments, but it’s beyond me. I’ve submitted an issue to the plugin’s Google Code site and, if it’s possible, maybe it will be possible in a future version.

Hoorah for the realtime web!

XMPP PubSub on WordPress.com

Just some notes on how to get XMPP notifications from any wordpress.com blog. It’s an experimental service so might not work tomorrow 😉

I use the Pidgin IM client. You need an account on wordpress.com.

  1. Add a new account to your IM client.
  2. The username and password are your wordpress.com credentials
  3. The domain/server address is ‘im.wordpress.com’
  4. You need to add a ‘buddy’ to this account so you can receive notifications from it. The buddy name is ‘bot@im.wordpress.com’
  5. So now you’ve connected to the wordpress.com subpub service and made friends with their bot.
  6. Next, open a chat window with the bot and type ‘help’
  7. You’ll see a message like this:

(10:51:54 PM) ‘bot@im.wordpress.com’: Here I come to save the day! Pubsub bot is on the way!
My prime directive is to deliver blog posts and comments as soon as they are published. I am only a hack. If you can speak Pubsub (XEP-0060) you don’t need me.
Subscribe to a blog and I will deliver posts. Subscribe to a post and I will deliver comments.
Commands: sub/subscribe, unsub/unsubscribe, subs/subscriptions
Try these:
sub en.blog.wordpress.com
sub en.blog.wordpress.com/2009/04/02/march-wrap-up-2
sub en.blog.wordpress.com/comments
You can subscribe to any public WordPress.com blog. Private blogs are available to members. Please limit yourself to a reasonable number of subscriptions.
This service is experimental and subject to change or termination without notice.

Unlike RSS feeds, you can’t get notifications from tags or categories (actually, I haven’t tried categories, but tags didn’t work)

Isn’t it GREAT! 🙂

For self-hosted blogs, the Jabber Feed plugin is our greatest hope. The difficult bit is getting the server side stuff set up but I’m going to try to do that over the next few days and will post any notes here.

Developing BuddyPress for education

In February, I wrote a brief post about setting up BuddyPress with LDAP authentication within a university context (you’re looking at it). Four days ago, BuddyPress reached maturity by hitting version 1.0, marking a time to reflect on what I’d like to see developed for BuddyPress for use within a university context. This is an initial wish list. I’m not looking for BuddyPress to be an all singing, all dancing, social network. I don’t care about image collections and status updates (Flickr and Twitter do those jobs nicely) I would, however, like to see it being used for building group identity (projects, special interest groups, classes, courses) and portfolio/resume building. Right now, it’s pretty limited in those areas.

Privacy controls

As I mentioned previously, our social network is private, while the blogs have five levels of optional privacy controls, ranging from public and indexed by Google, to private, single-user blogs. However, privacy within the social network is currently all or nothing. It’s a hack that works but has no flexibility. The BuddyPress activity plugin is currently turned off because the privacy plugin I use, doesn’t account for the feeds that the plugin exposes. It would be nice to be able to have the site-wide social activity visible when logged in. Currently, only information about new blog posts is published site-wide. What I would like is for everything that the activity plugin logs, to have site admin options to be 1) visible to non-logged in users/public; 2) visible to logged in users; 3) visible to my groups and friends,4)  visible to my friends and 5) not visible. In addition, the feeds that are exposed of site-wide activity and member activity, could also be configurable so that 1) a site admin can choose to expose them or not; 2) if allowed, a member can choose to expose their personal feed or not; 3) a feed key could be used in place of the normal feed URI so that private member feeds could be created. Finally, groups and member profiles could optionally be made public or private. So anything following /groups/ or /members/ has an option to be visible outside the community.

Group activity

Currently, groups don’t publish very much information and you can’t aggregate information from elsewhere into a group profile. I submitted a ‘wishlist’ ticket to BuddyPress for group activity feeds, requesting that feeds for when a new group member joins and changes to the group wire. It would also be nice to be able to aggregate content from other sites via RSS into the group ‘news’ field, or a new lifestream-like field so group photos or videos or whatever, could be sucked in. It was possible to do this via a Yahoo! Pipe which combined various feeds which could then be put through feed2js and dropped into the ‘News’ field. However, embedded javascript is now intentionally blocked 🙁 I guess I could find a work-around.

Member profiles

For both teachers and students, the profile pages could be effective resumes. Currently, the site-admin can build basic grouped fields and there’s a choice of field types, too. I’d like members to be able to build their own fields and for there to be pre-built field types to choose from. It’s possible for the site admin to pre-build fields and probably easy enough for me to pre-build specific fields to design a resume (the examples given of language, country and state are just .csv lists). However, currently, if I provide three ‘Employment’ fields, a member can’t add a fourth ‘Employment’ field, nor can they select dates to correspond to when that employment was. I’m pretty sure I could create the fields, but it’s beyond me to allow a member to build their own profile pages from a selection of pre-built fields.

Finally, in addition to my request for members to be able to make their profiles public, I’d like the member profile to be marked up with hResume markup and exportable in a variety of styled formats: xhtml+css, xml, pdf, txt, doc and rtf.

The entire member profile should use microformat markup where possible. Currently, the profile can export a simple, personal hCard but could also use hCard for company and school addresses, hCalendar for dates, and rel=”tag” for creating a set of tagged skills. LinkedIn partially implements this, by the way.

So, privacy controls, group feeds and a resume builder. Not too much to ask is it? I’d probably be able to pay for the resume builder if anyone is interested…

Open Education Project Blueprint

Each participant on the Mozilla Open Education Course, has been asked to develop a project blueprint. Here is the start of mine. It’s basically a ‘Personal Learning Environment’ (PLE) ((See Personal Learning Environments: Challenging the dominant design of educational systems))and I’m going to try to show how WordPress MU is a good technology platform for an institution to easily and effectively support a PLE. I’m going to place an emphasis on ‘identity’ because it’s something I want to learn more about.

Short description

University students are at least 18 years old and have spent many years unconsciously accumulating or deliberately developing a digital identity. When people enter university they are expected to accept a new digital identity, one which may rarely acknowledge and easily exploit their preceding experience and productivity. Students are given a new email address, a university ID, expected to submit course work using new, institutionally unique tools and develop a portfolio of work over three to four years which is set apart from their existing portfolio of work and often difficult to fully exploit after graduation.

I think this will be increasingly questioned and resisted by individuals paying to study at university. Both students and staff will suffer this disconnect caused by institutions not employing available online technologies and standards rapidly enough. There is a legacy of universities expecting and being expected to provide online tools to staff and students. This was useful and necessary several years ago, but it’s now quite possible for individuals in the UK to study, learn and work apart from any institutional technology provision. For example, Google provides many of these tools and will have a longer relationship with the individual than the university is likely to.

Many students and staff are relinquishing institutional technology ties and an indicator of this is the massive % of students who do not use their university email address (96% in one case study). In the UK, universities are keen to accept mature, work-based and part-time students. For these students, university is just a single part of their lives and should not require the development of a digital identity that mainly serves the institution, rather than the individual.

How would it work?

Students identify themselves with their OpenID, which authenticates against a Shibboleth Service Provider. ((See the JISC Review of OpenID.)) They create, publish and syndicate their course work, privately or publicly using the web services of their choice. Students don’t turn in work for assessment, but rather publish their work for assessment under a CC license of their choice.

It’s basically a PLE project blueprint with an emphasis on identity and data-portability. I’m pretty sure I’m not going to get a fully working model to demonstrate by the end of the course, but I will try to show how existing technologies could be stitched together to achieve what I’m aiming for. Of course, the technologies are not really the issue here, the challenge is showing how this might work in an institutional context.

I think it will be possible to show how it’s technically possible using a single platform such as WordPress which has Facebook Connnect, OAuth, OpenID, Shibboleth and RPX plugins. WordPress is also microformat friendly and profile information can be easily exported in the hCard format. hResume would be ideal for developing an academic profile. The Diso project are leading the way in this area.

Similar projects:

UMW Blogs?

Open Technology:

OpenID, OAuth, RPX, Shibboleth, RSS, Atom, Microformats, XMPP, OPML, AtomPub, XML-RPC + WordPress

Open Content / Licensing:

I’ll look at how Creative Commons licensing may be compatible with our staff and student IP policies.

Open Pedagogy

No idea. This is a new area for me. I’m hoping that the Mozilla/CC Open Education course can point me in the right direction for this. Maybe you have some suggestions, too?

A few notes on data portability

I had a bit of fun over the weekend looking at how I could both aggregate my online presence and make it portable, all under my own domain name. I ended up touching on a bunch of interesting initiatives revolving around web and data standards. The minor output of this is over on my personal ‘home page’ at http://josswinn.org

You’ll see that there’s an Attention Profile (APML), Friend of a Friend document (FOAF), hCard generated from my contact details, an OPML file of the significant feeds I have spotted around the web (Delicious, this blog, Twitter, Last.fm, etc), an aggregated feed of my OPML file, and a link to my LinkedIn profile, which I happily learned includes hResume microformat markup. My OPML, FOAF profile and RSS feed are all auto-discoverable.

All links on the page are marked up using the XFN markup rel=”me” tag, which should help consolidated my identity on the web. There’s an interesting discussion over on Marshall Kirkpatrick’s blog about how our Twitter profiles are starting to rank higher in search engines than our personal blogs or home pages because Twitter is using the rel=”me” tag. Marshall suggests that we start using rel=”me” somewhere on our own sites to counteract that.

To add to the fun, I also tried to get the page to validate as HTML5, but in doing so, I had to remove the meta tag that provides OpenID Attribute Exchange via my OpenID Service Provider. I get the error:

Bad value X-XRDS-Location for attribute http-equiv on element meta.

Apparently the draft HTML5 spec currently disallows values for httpequiv. OpenID AX is a good thing if you want to consolidate your identity while at the same time ensure it is portable. It’s certainly more useful to me than validating as HTML5.

In addition to this, I added a Google Friend Connect (OpenSocial) widget and integrated Apture. I thought about adding the ability to leave comments via Disqus, the advantage being that comment authors could retain control over their own comments. But to be honest, I don’t think you or I need yet another method of communicating with each other. There are plenty of ways to do that already.

Other than providing a playground for fun, what this bit of tinkering on my home page has taught me is that microformats and the ethos of data portability is being embraced quite widely on the web and although I spent my time hand-crafting my new home page, there are opportunities to do much the same, quite easily, through the use of a WordPress blog and a bunch of third-party services. More on that later…

BuddyPress: A university’s social network

To cut to the chase, this post is about using WordPress MU and BuddyPress with enterprise authentication (LDAP) to create an internal/private social network while leaving the blogs, by default, public.

Since May 2008, I’ve been running WordPress MU on the Learning Lab, a Linux server I maintain at the University of Lincoln, for experimenting, trialling and evaluating software that may enhance and support research, teaching and learning. It’s a great job 😉

Of all the software we’ve looked at over the last few months, ‘WordPress Multi-User’, has clearly shown the most potential for use by staff and students at the university. It’s a mature, well maintained, very popular open source blogging platform. In fact, it’s more than that. It’s a web content management system that runs 5 million blogs on wordpress.com and 280,000 blogs on edublogs.org. While evaluating WPMU on the Learning Lab, 65 blogs were registered by 123 users. I didn’t advertise the service at all during this period, preferring to work with individuals on specific projects and get their (informal) feedback. The feedback has been positive. People initially need support but once they’re set up and running, they only tended to contact me when they wanted to push WordPress to do more for them through plugins and custom themes.

During this period, I’ve been watching and doing my best to help with the progress made on BuddyPress, a set of plugins for WordPress MU, developed by Automattic, the company behind WordPress. It’s been interesting trying to get everything to work together at times but over the last few weeks it’s all come together.

BuddyPress Profile

Automattic also develop open source forum software which integrates with Buddypress, too. Jim Groom at the University of Mary Washington pioneered the integration of all three products and I’ve had it working here at the University of Lincoln quite nicely. However, bbPress is still beta software and I’d like to be able to offer privacy options on forums, too, which is currently unsupported (there are some plugins, but they’re not mature enough for our use yet). So currently, we’re running WordPressMU, BuddyPress, an LDAP plugin for WPMU and a privacy plugin that’s commonly used on WPMU installations. It works really well.

I’ve documented some of the set up on our wiki. It’s not been difficult. For the time-being, while BuddyPress matures, I’ve chosen to stick with the default home and members themes, changing just the logo. Forums are, as mentioned above, turned off for now. I wonder if we’ll ever turn them on as the ‘Wire’ (similar to the Facebook Wall) is available and people are used to using services like Twitter and the Facebook Wall to communicate these days. We’ll see what demand there is for forums.

The final set up is really quite sweet. A member of the university goes to https://dev.lincoln.ac.uk for the first time and logs in with their usual credentials. The first time they login, they are signed up. That’s it. No sign up page needed. It’s as if they were already a member of the social network, which, being members of the university, they are of course. From there, they see the BuddyPress home pages, can join groups, change their profiles and, when they’re ready, create or join a blog.

I’ve finally finished setting it up for general use today. The few people that know about it and have already joined, instantly see the benefits of having the social networking layer on top of the blogs. I’m excited to see how this works out over time. It’s not something we’re going to launch in a big way just yet (it’s only me supporting it at the moment), but I’m guessing that it will spread quite quickly through word-of-mouth.

The university web team are supportive and are sending staff and whole departments my way when they want a web site. The IT support team have been trained to use WordPress, should they get enquiries their way. We’ve got a few projects that have been waiting patiently for the new home of the blogs and a number of the Learning Lab blog users are migrating across already. The potential for supporting personalised and group online learning is now better than it’s ever been and the social networking element only helps bring peers together for collaboration and discussion.

Many thanks to Jim Groom and D’Arcy Norman who have been working on WordPressMU at their universities in ways which I hope we can emulate and contribute to here at the University of Lincoln.

Skilling up for WordPress

A post on the WordPress Publisher’s Blog highlights a large increase in the number of new job offerings that include WordPress as a required skill.  The original oDesk report shows that Joomla is clearly the ‘most in demand skill in 2008′, although WordPress has the ‘fastest growing demand.’ WordPress only shows 55% of the demand that Joomla has but the growth is very still very impressive. At that rate, by the end of 2009, WordPress is very likely to be the ‘most in demand skill’ among oDesk’s clients. oDesk is a ‘marketplace for online workteams,’ a ‘a job board for freelance and contract technical jobs‘. Their tagline is ‘Hire, Manage, and Pay remote contractors as if they were in your office.

Of course, according to this video we will all be contractors before too long, quoting the US Department of Labour’s estimate that today’s learner will have 10-14 jobs before the age of 38.

Regardless of how the figures might be (mis)interpreted, the report does suggest that the demand for WordPress-related skills, whether they are technical, administrative or just user-side, is increasing significantly.  A 400% increase in demand for WordPress technical skills means that someone’s got to be managing and posting to those WordPress sites at the end of the day.

When advocating the use of WordPress to the university, I argue that learning how to use online web applications such as blogs and wikis is as relevant to today’s graduates as learning how to use word processors and spreadsheets was a few years ago. My last job was not in ‘technology’, but most of my productive work was done using Confluence, enterprise wiki software that was rolled out throughout the organisation.

Of course, universities are not solely responsible for ensuring students have the right IT skills. Note that 157,690 new blog posts have been made by 170, 828 users on wordpress.com alone today with over 10 million published WordPress blogs worldwide. That’s a lot of people learning for themselves. WordPress is probably the best choice of platform if you want to learn how to navigate around a modern, productive Web 2.0 site. It’s free to use, more popular than Blogger and growing faster, too, and unlike Facebook, you can actually get some work done 🙂

You can read more about wordpress.com statistics here.