Category Archives: Miscellaneous

Publishing API and a new service could make translating Connexions modules easy

p { margin-bottom: 0.08in; }a:link { }

Specialized tools for translating and publishing OER is one of the possible uses of an API for publishing to open education repositories. Repositories may have general purpose editors for creating content, but they aren’t likely to have great facilities for translating content.
Carl Scheffler and I spent some time in the Geneva airport investigating whether Google Translator Toolkit could be the translation editor of choice for Connexions modules. Translator Toolkit has to be convinced and helped along, however, because it was designed for HTML (web pages), rather than for the structured XML format of Connexions’ modules. It just might be possible, however, and advice and comments would be most welcome.
The workflow would be just a bit more complicated than the normal route for translation and would look something like this:
  1. Find a module that you want to tranlsate on Connexions and record its ID. Lets say the module is Electric Circuits – Grade 10, http://cnx.org/content/m32830/latest/. Then the id is “m32830”.
  2. Open Google Translator Toolkit and select a URL something like this: http://www.coolhelperservice.org/cnxtranslate/m32830. This would fetch the module in a format that Google Translate can use well.
  3. Translate it using the Translator Toolkit.
  4. Save the file to your laptop.
  5. Go to something like http://www.coolhelperservice.org/cnxpublish and upload the saved file. Fill out a bit of information and then push a button to sign the license and publish it to Connexions.

Although it would be more straightforward to enter a cnx.org web address into the Translator Toolkit and then publish straight from the toolkit, we don’t have the technical hooks into the Translator Toolkit to be able to do that. So instead, we would create this new “coolhelperservice” that would know how to format Connexions content for Translator Toolkit and how to take translations and reformat them and publish them to Connexions.

Does that work flow seem reasonable? Is there a better work flow that you can think of and suggest?

Some technical details for those that are interested. Those that aren’t can safely stop here and still be able to give feedback on the process from a translator’s perspective.

Google Translator Toolkit doesn’t work with XML formats. But Connexions does produce an HTML format for modules that can be be converted back into Connexions XML without any loss. So the “coolhelperservice” needs to retrieve the module, format it in HTML for the translator toolkit, and then do the opposite transform (HTML → CNXML) on the way back into Connexions.

To get the HTML for the body of a module from Connexions, you append “/body” to the module URL. And the module metadata (title and such) is available by appending /metadata to the module URL. So with the module ID, the “coolhelperservice” can put together a nice package of HTML for the translator to use, and still be able to reconstruct the XML to publish the translated version.

One tricky bit is that Google Translator Toolkit makes a mess of the mathematics that comes in from Connexions, so the math has to be protected somehow. Carl and I experimented with a few ideas for how to do that, and toolkit didn’t cooperate with most of those, but Carl came up with the idea of putting all the math into an HTML id. Amazingly, that worked. It comes out all escaped, but that is good enough. (Toolkit won’t keep around a random attribute, so “id” was the way to go). Carl is pretty sure that there is a webservice that will take a snippet of mathml and give back an image. He is going to investigate that further. So in principle, you can stuff the math into an image ID (so it doesn’t get lost) and replace the math with a URL to this service that will render the math. The translator won’t be able to translate words that were inside the math, but Carl had previously looked around and that isn’t very common, so this might just be good enough.

At the end, the “coolhelperservice” will use a publishing API (SWORD V2) to publish the translation back to Connexions. Implementing that API is part of my fellowship work so it is coming later this year. There will have to be a bit of license signing back at Connexions, but the “coolhelperservice” can make that smoother also.

I think something like this could work. What do you think? And did we miss some clever idea or service that could be of help? Actually, I am sure we did since this was a 2 hour experiment. So send help, advice, etc. Carl will keep investigating, and maybe we will have some screenshots to clarify all this for a future post.

Sprinting with Connexions

First progress implementing a bit of a publishing API for OER, based on SWORD and AtomPub.
 

Last week at the Plone East Symposium in State College PA, plone developers across the US gathered together to learn and share about using Plone in educational settings. At the end of the week, Friday and Saturday, about half the attendees stayed to “sprint” (original plan, full report).  At sprints, people develop working code together on various projects in order to share expertise, learn from each other, and expand networks of technical mentors. Knowing that Connexions already had a partial implementation of SWORD for creating modules from Word documents, and that SWORD is likely to be the backbone for the OER Publishing API (your comments, approval, concerns welcome), I brought a sprint topic to the symposium — “OER Publishing API: Extend Connexions SWORD implementation”. Connexions provided an expert, Phil Schatz, to lead the sprint and we created a milestone to track the work. Carl Scheffler joined Phil and me working on SWORD and we got advice and help from Michael Mulich (Penn State), Ross Reedstrom and Ed Woodward at Connexions.

What the Connexions/Rhaptos SWORD service does now:

The current Connexions SWORD service is tailored to a very specific client, the Open Journal System (OJS). It takes a zip of a Word file and a METS file with some metadata and a bibliographic entry that is used to insert a reference to the the original publication of the article in a journal. The service then creates a new, unpublished module with the content of the Word file, and puts it in a work area chosen by the client.

What we got done at the sprint:

  1. Reorganized the existing SWORD code to make the coding cleaner.
  2. Extended the service so that it would take a Word file, or the Connexions native format.
  3. Changed the service to get the title and abstract from standard locations.
  4. Got the SWORD client toolkit, EasyDeposit, to work with the new code (and partially work with the existing code.)

Why a Publishing API? or What’s a Publishing API?

The fellowship that I have through the Shuttleworth Foundation is officially “to foster an ecosystem around open education resources”.  The community creates great teaching and learning resources, and then the ecosystem makes it possible for educators, innovators, students, and life-long learners to use the resources, improve them, and connect them together in novel ways that enhance learning.

When you look at the details of my fellowship proposal, the first thing that I am starting with is creating a publishing API (application programming interface). The API part of that means that it is a language that software programs speak to each other. If you use TweetDeck to update your Twitter and Facebook accounts, then you are using software programs that are talking to each other using APIs. (Because Twitter provided a simple API early on, tons of services I had never heard of use the Twitter API. A cooler-than-me friend sent me this list of programs that use Twitter’s API — “Brizzly, Seesmic, Tweetie, DestroyTwitter, TwitterFox, SoBees, Mixero”.  And another mentioned that all of our email programs communicate with each other via a lovely open API called SMTP. Email succeeded because it is easy for programs all over the world to talk to each other and deliver your email. In fact, the web and the way browsers display web pages are all built around API’s.

What do I mean by “publishing”? Here, I am talking about creating educational resources and then making them available to others in a library or repository. Making them available is the publishing part. So if you create a nice lesson for teaching fractions to middle school students and then want to share that lesson, you might publish it by uploading it to Connexions (cnx.org), or a Google Doc you make public, or your school’s website or Open Courseware (OCW) site. And then you might post a link to it on Facebook and Twitter and email the link to colleagues. Some of those colleagues might want to download it, add an exercise that they have used successfully, and share that updated version.

Now imagine that I have an idea for a simple editor that also creates really nice equations and that I want to build in a “publish” button that will let you choose where your content should be published, figure out what format it has to be in and convert it if need be, and will also advertise your content to your social networks.  If places to share the content (like Connexions) support a publishing API, then my editor can do all that for you. This scenario is only one example. I intend to blog many more examples from conversations I am having with other people and projects that are building software and content for education. These are the sorts of possibilities that a publishing API will support. I am also going to do a few more technical blogs on what things I think should be in that publishing API and what other APIs already do much of the work and provide a good place to start.

Combining the best of the studio model with personalized learning: Is it doable?

I was recently at the NITLE (National Institute for Technology in Liberal Education) Summit meeting in Arlington, Virginia and John Seely Brown (JSB) gave the keynote address on “A New Culture of Learning for a World of Constant Change.” His speech made me wonder whether new virtual learning environments can combine the benefits of the studio model and the benefits of automated, but highly-personalized learning. But first a little summary of his talk.

First, he proposed three fundamental shifts that define the world as we know it in the 21st century.

  1. Explosion of data — Google’s former CEO, Eric Schmidt, says that every 2 days we create the same amount of information as we created from the dawn of civilization to 2003. I found an interesting analysis of this quote, but regardless of the exact numbers, the general trend is very clear.
  2. Exponential advances in computation storage and bandwidth: These shifts have led to cloud computing, GPU’s (graphics processors), machine learning that automatically processes vast amounts of content and usage patterns.
  3. Large-scale, deeply-connected problems. Grand challenges require an interdisciplinary, socio-technical (human process and technology) approach. As solutions are implemented, they change the problem.

The result of these changes are that the half life of skills is shrinking dramatically.

So the question that JSB poses is how do we educate people that will be able to thrive in this environment of constant change, discover opportunities, and tackle the grand challenges?

His idea, as I see it, is that the goal is to see ourselves as “designers”, “creators”, “producers”, and “makers” and to have the ability to empathize with others so solutions will be usable. People will constantly incorporate new skills in the pursuit of the current challenge and that will seem natural, rather than overwhelming. The ingredients for the human as designer are knowledge, play, and, making.

The studio model, where individuals or teams share a physical space and work in parallel on similar, but unique projects, provides the ingredients for learning and absorbing the identity of “creator”. In a studio, experienced “masters” provide critiques (advice that moves a project forward along its own trajectory), and everyone critiques, is critiqued, and benefits from the critiquing of other projects. Essentially, his recommendation is to incorporate this model into education as much as possible. (If you don’t know Olin College of Engineering, definitely check them out. I recently saw a talk by one of their faculty and they have embraced the idea of the studio model of learning completely. One of their design challenges has 5th graders judging the swimming ability and aesthetic appeal of college students’ robotic creations.)

My questions: I have been interested in “learning machines” research; investigating personalized and optimized individual learning that takes advantage of the data, storage, and computation now available to deliver knowledge and practice to students, just-in-time. Another benefit of open education resources (OER) is a giant pool of content for feeding into learning machines, thus tying in my fellowship goals.

If the studio model covers “making”, could learning machines cover the “knowing” part of the ingredients for human as maker?

Can the studio model be virtual without losing effectiveness, and maybe even create gains? Another Shuttleworth Foundation fellow, Philip Schmidt, co-founded P2PU, the Peer 2 Peer University, where learners organize courses and deliver and take them together, virtually. Others are also creating virtual environments for learning (University of the People, OpenStudy, Khan Academy to name a few). How much should virtual environments try and mimic the real world where people gather in one space at one time? Are critiques richer if they are delivered synchronously? Would thinking explicitly about how to incorporate more from the studio model enrich these environments?

What do education, highways, and OER have in common?

Welcome to my blog. Although I have been blogging for the past couple of years as part of the Connexions team on the Connexions blogs (blog.cnx.org, devblog.cnx.org), this is the inaugural entry for my personal blog. The main purpose of this blog, over the next year, is to communicate ideas, calls for action, calls for advice, and reports on progress in conjunction with my Shuttleworth Foundation fellowship to foster an ecosystem around open education resources (OER). I will also blog occasionally about research and projects that I am reading about that have to do with learning, usability, and open source software, three related passions of mine.

So first off, what do I mean about an ecosystem around open education software? I am going to start out with a series of analogies and if you have a few minutes, feel free to explore the video that I made (with some credited help) as part of my proposal for the fellowship.
The starting point is OER, those open education resources that many different visionaries, projects, and organizations are creating. The potential impact of open learning materials is three fold: first being freely available, open resources can potentially reach under-served learners all over the world and even for adequately and well-served learners they can free up economic resources for educational support and innovation; secondly, being open for adaptation, a much larger pool of talent (not just the original authors or publishers) can adapt resources to the needs of particular learners and improve resources through corrections and additions; and thirdly, openly reusable  resources can be used as components in research (results are easier to replicate if the ingredients are easily available) and learning environments (machine-assisted learning, peer group learning, teacher development). Essentially, open resources can act as a highway for distributing educational wealth and connecting learning innovations.

Currently, however, open resources are available in incompatible formats in many individual projects that aren’t easy to contribute to and adapt from. It is as if they are hidden down unmarked dirt roads. My goal is to accelerate both the production of high-quality, reusable OER and the development of innovative learning environments that build upon OER, by providing ‘sign posts’ and ‘on ramps’ to the highway of open education. Ecosystems on the web require proper infrastructure so that innovators’ services can work seamlessly together. Working with as many OER innovators as possible, I intend to spend the next year providing some of the infrastructure that has been missing, and then working with communities to develop a catalyst service that will unleash content and creativity. I will be blogging much more on what this catalyst service or tool might be, sharing my ideas and the ideas of many  others, and at the same time asking for your ideas.