Category Archives: Personal Learning Environments

Thinking out loud: Generating social graphs from RSS in an Open Course

Well, this "thinking out loud" thing is something I'm not really used to (I'm trying to learn), so please bear with me.  I'm not even sure if I'll be able to say what I'm thinking, for that matter...   That said...

Last year I offered my first open course ever, called e-Learning (ELRN).  It was supposed to be an exploration of the present and future (at a local level) of technology in education.  And I decided I wanted it to be open, and also that I wouldn't use a LMS.  I wanted to do something similar to the things Stephen and George did with CCK08, but I didn't have the infrastructure to make that happen.

Following David, Alec, George and Stephen, I chose a wiki as the platform to publish the weekly activities of the course, and blogs as the main reflective tool for students.  The decision didn't have to do with the technology, but with the reflexive processes that it allows, based on my own experience.  Blogs would be the publishing platform of choice.  The discussion wouldn't happen in centralized discussion fora, but in each participant's blog. It would be decentralized.

Also, given the characteristics of my own context (Colombia), where there are not that many education blogs online, and most of us are not power users, I wanted to make access to the info produced in the course as easy as possible.  Participants would be able to get info by e-mail, and those who felt comfortable with it, by RSS.  To participate in the course would not require to login in a specific platform to access content, and it should be a real possibility to send and get information by e-mail.

So all these intentions led me to find ways to collect all the info generated in the blogs, and distribute it by e-mail.  That led me to work a bit with Pipes, something I hadn't done before.   The first product of that work looked like this, and I talked about it in another post:

At the end of that post, I noticed some limitations that I was still trying to figure out:

  • How do I analyze all the data coming out of the course? If I wanted to see the progress/evolution of different participants, what kind of tools should I use? Is it possible to do it with the pipe I have now?
  • Feedburner is not flexible enough with the mail subscriptions. I'd like every participant to decide whether she gets a daily or real time notification.

As I went through ELRN, something else proved difficult: How could I (as a facilitator) keep tabs on the comments of formal students?  Monitoring every comment in every post was, clearly, a daunting task...

At the end of the course I tried to generate, by hand, some sort of analysis of what happened, including posts frequency and the blog comment network generated along the course, which was possible thanks to the small number of participants.  That network looked like this:

So I realized that such a graph could be very useful to monitor the participation in the course, and to detect (and maybe do something about) people who were not being part of the conversation.  It could be used as a "lurker detector", so to speak.  Nevertheless, I told myself, in order to be useful you would have to get this kind of info not at the end of the course, but along the road.  And, doing that by hand would be very time consuming.  And that leads me, finally, to this post.

So, What if you could generate such a graph (described as a GraphML file) from a RSS feed?  How could you do that?

Last year I started another open course about groups, networks and communities (called GRYC in Spanish), which for several reasons was postponed for this year.  That gave me some time to think about the problem (but not to solve it).  Here's where I am right now:

(Side note:  I used some of Tony Hirst ideas to generate a map from the GDocs form I'm using as registration for the course.  Here's the pipe and here's the map.  Very cool indeed!)

If we go back to the first diagram, we see that I have a pipe compiling feeds from different blogs.  So I wondered how could I get comments from those blogs, given that there were many people using an already existing blog for the course and tagging their posts, and there were many different platforms being used at the same time, each one with its own approach to comments (WP doesn't have specific feeds for comments in a category, while Blogger does.  Some people use Feedburner for their feeds, which makes impossible to discover a comment feed, and so on).

What I did was to create a new pipe (the second one in the sequence), which takes the first one as input and extracts the comment feed associated to each post, and then gets the items included in each one of those feeds.   Also, I'm getting (using YQL) Twitter messages and comments made in the wiki.  Everything is put together and at the end I have a feed including who said what, and where that was said (blogs, twitter, wiki).  It's quite easy to extend this and include other sources (Google Groups, Moodle fora, or anything that can imported into Pipes).  Now, maybe there's a more simple way to do this but, well, I'm still learning to use Pipes  (for example, can all this be parameterized?).. :D

There is a "dark side" to this.  I still have to do a lot of "maintenance" in the original data, and I have to consider specific cases that made the pipes not as simple as I'd like them to be.  Let's say, someone is using Disqus for the comments, and someone else uses different display names for the posts and the comments in different platforms.  Some comment feeds are not being discovered by Pipes...  It's not nice.  It's not 'clean'...

My basic graph, as shown above, includes people as nodes and comments as edges.  So I still need to know who said what to whom.  I could do this in the second pipe, but I don't want to add any more complexity (that is, processing time) to that pipe.  So, in a third pipe I get results from the second pipe, I process each item, and at the end I have what I need:  I'm putting in each item's title the source and target of the comment (that is, their names) and the date.  Each item still contains the link to the comment, also.

But, where do I go from here?  Some ideas and issues related to the first (blue) bubble:

  • I could write some PHP code to get the RSS feed and process each item, generating a GraphML text file on the fly.   Of course, it could be Java as well.  After all, a framework such as Jung includes a lot of utilities now, even to generate the visual representation of a graph...  But I'm not sure if it processes RSS...
  • Um, but what happens when I do the same process the next day?  Would it make sense, then, to put all the RSS info inside a DB, so I can have even more flexibility later?
  • Maybe having things in a DB will let me include more info in the graph.  Let's say, what if the size of the nodes is tied to the amount of posts generated?  That could be useful too...
  • In the end, having a DB will allow me to split tasks.  One thing is to add info from the feed (a daily process, let's say), another one is to generate a GraphML file from that info.  This could be done on demand, and cached for later use.

But what about the second (green) bubble?  The idea here is to go from the text file to a useful visualization.  We could even thing about creating (automatically) animations showing the daily progress of a course, discovering when new nodes (this is, new people posting) appear, and showing new edges as they emerge.

  • The weapon of choice would be Jung, clearly (I still don't know if something as Cyclone has anything to do with this problem).  With that we can get from GraphML to images, I think.  Now, if we want to create PNG animations, well, I still have no idea how to do it.
  • In any case, I'd have to go back to Java (long time no see!) and learn a lot about a lot of things.  And time seems to be a quite scarce resource...

So, where does that leave us?   You get to extract info from the pipes in "real-time" and generate GraphML files from it (or whatever you want) to show the status of the graph at any given time.  This could help to see who's being left behind in the community (because they're not writing nor commenting, for example) in an easy way, which would help in massive courses.  Actually, you could even send specific e-mail messages based on the configuration of the graph (nice!).

And, where do we go from here?  Well, what if you applied the logic of an Open Course to a whole academic program?  What if participating in a course means just tagging your blog posts with a code for that course?  What if we aggregate everything in something such as Elgg, and keep using pipes to distribute content around (as we see fit)?  Would that look like a more decentralized approach to a LMS? With new monitoring tools, more focused on the interactions? With students having more control of their info?

I just don't know.  What I do know is that this approach, as much as I like it, is not scalable.  And if we want to get more serious about being open we will need, eventually, to provide alternative solutions easy to use for administrators, teachers and students, and analytical tools focused on the kind of things we'd like to observe and foster in our students.

Anyway, keep in mind that I'm thinking out loud here.  This is the second time I'm trying this architecture, so there are a lot of things to improve and many others that make no sense at all.  I'm just trying to figure out if it makes sense to work more on this.  So thanks in advance for your thoughts!   :)

Creative Commons License: Attribution, Share-AlikeA excepción de que se indique lo contrario, este contenido está publicado bajo una licencia Creative Commons.

My first Open Course: e-Learning’09 (ELRN09)

Like always, I'm having a hard time making myself to write in English, even though I know how important it is, especially after OpenEd.

This post is meant to talk about the first Spanish Open Course that I get to offer (actually it's the first one, no matter the language :D ), which came from an invitation by University of La Sabana, in Bogotá. They contacted me a few months ago, inviting me to do a course on their master on educational informatics program. I accepted on one condition: It would have to be open.

So here I am, a few months later, after thinking a lot about its design and discussing it with a few people (I *really* need to learn about creating/designing in public), and obviously getting ideas from the work of people like David Wiley, Alec Couros, George Siemens & Stephen Downes and Leigh Blackall.

The course already have 14 for-credit participants, and about 20 more participants taking it without certification. We have people from Spain, El Salvador, Mexico, Peru and, obviously, most of the participants are from Colombia.

For now, I'll talk about the technology I'm using, because I think maybe it could be useful to someone, and also it would be great to get feedback on it. There are two things I wanted to achieve with technology: First, I wanted to do something that could be replicated by each participant (which means only non-paid tools and no hosting); second, I wanted to facilitate access to people who are heavy e-mail users. Also, no walled gardens but a public approach (bye bye Moodle), trying to get participants to work on their own personal learning environments throughout the course.

So this is a view of the things I'm using. Detailed info below:

Participants are asked to create a blog on any available service. It is suggested to find for ways to do e-mail publishing, so they don't have to go to any website or use any additional tool.

Once the participant has a blog, she has to register it in the course wiki, which has a Google Docs form embedded. They have to include in their registration the RSS feed for their blog.

The GDocs document is then plugged into Yahoo Pipes via a CSV output. The pipe gets all the feeds and create one single feed, which I'm sending to Feedburner. I'm using Feedburner, actually, to create the possibility of an e-mail subscription, and obviously, to get a little control over subscription statistics.

This way, participants think about RSS aggregators only if they want to. They can have an e-mail subscription, which sends a daily message with a compilation of the posts compiled by the pipe during the previous day.

I'm getting the final RSS feed and I send it to twitter via twitterfeed. There's an user (elrn09) which publishes this feed and also the things compiled in a Diigo group created for the course.

There's also a Google group created, which is not being very popular at the time. I kind of understand this, because participants are not necessarily heavy Internet users, so even creating a blog can seem a daunting task for some of them.

Some interesting thing about this:

  • The pipe (a very simple one, actually) can get input from any set of RSS feeds (For example, I thought at some point about asking people to get Google Reader accounts and then sharing the posts they found interesting. I could get all the RSS feeds from those Shared items pages, and change the pipe to find the "most read" items in the course. Of course, this faces the problem of getting valuable items lost if they are not shared enough times. In the end, I decided it would be a new layer of complexity for most participants, so I forgot about it)
  • After setting up their blog and subscribing to the feedburner feed, people can go back to use the tools they're used to (I'm guessing e-mail is a weapon of choice for most of the participants), both to publish and consume information from the course.
  • I "cloned" the whole set-up for another course I was starting, and it was a reasonably quick process. So it is easily replicable.

Some limitations, and things that I'm still trying to figure out:

  • How do I analyze all the data coming out of the course? If I wanted to see the progress/evolution of different participants, what kind of tools should I use? Is it possible to do it with the pipe I have now?
  • Feedburner is not flexible enough with the mail subscriptions. I'd like every participant to decide whether she gets a daily or real time notification.
  • I can't do something like the CCK09 Daily, where some items get to be commented before reaching the participants. That would be nice.

So far, so good. During the first week, I had to keep looking at the feeds that were registered, because some participants would write their blog URL, not the feed URL. Also, some of them registered feeds from existing blogs, so I had to suggest them to label their posts, in order to retrieve just those entries. To "keep clean" the feed, I had to go every now and then and update the source for the pipe, extending the cell range to include the URLs that had been verified already. Some maintenance work that can't be avoided, I guess.

But after that, everything works perfectly. I guess a OPML file could be generated (and it would help later with analytics, definitely), but so far is something I don't think participants are really needing...

Anyway, I have to confess that I still need to understand much better the way Pipes works. I feel that I'm missing a lot of interesting things that could be done, because of my limited knowledge. However, I'm happy because it looks like it works!

Later, some thoughts about the way the course goes. Definitely, there are a lot of limitations created by our context, and the level of actual use of several technologies that seem common-place in other countries. I'll get to learn a lot about what's possible and what kind of things can be done to make these kind of experiences good learning opportunities.

We'll see how it goes! :D

Technorati:

EduCamp Colombia 2007: Bogotá

On November 20 we'll begin a new series of EduCamps in several cities in Colombia. That's more than enough reason to try and finish the report of what happened in last year's workshops , as a starting point for thinking about how to improve them this year. This is the second in a series of four posts on this subject.

Starting an idea

The workshop in Bogota was the first one we did. With logistical support from CINTEL (the most important telecommunication research center in our country), we found a space designed for mass gatherings (called Logyk, if I remember correctly), where we arranged things to carry out the experiment.

After conducting several meetings with the entire CINTEL and MoE (Ministry of Education) teams, explaining in detail what we wanted to do, and showing how part of the challenge was to achieve a very open and informal (which, incidentally, was so uncommon as stimulating for all of us), we got to the day before the event (Tuesday, December 4 2007). While the staff members were putting on place tables, chairs and computers (all these hired by MoE with support from CINTEL), my previous work was to meet with Stephen and a group of students who would help us to coordinate the workshop the next day (all of them selected by CINTEL).

These students were supposed to be "catalysts" for the activity of over-the-shoulder learning. In the first meetings, we wondered what would happen if among the participants, we could not find users of any of the proposed tools. This made us consider the importance of having some knowledgeable users to start the activity. And here began the surprises. My initial assumption was that these students would have knowledge of the tools selected (by completing a total of 10) because, after all, they are "digital natives". The fact was that most of these tools were unknown to them too, although they had much experience in handling some of them (the most "social" ones).

Educamp, by Stephen Downes
Photo: Stephen Downes
 

The meeting was little more than a short description of what was supposed to happen the next day, in an atmosphere much more formal that I would have liked (a roundtable). I think this was caused, in part, by our own ignorance about what would happen. Meanwhile, staff were setting up the room where we would have the initial conference, placing tables and chairs in neat rows, in a traditional lecture format.

Putting on the t-shirt

Next morning, the registration started very early, and one of the big surprises for the participant were the white t-shirts we were giving them. Stephen and MoE staff (myself included) would have black t-shirts. The support students were dressed in red ones. The other participants would receive a white one. The t-shirt fulfilled two functions: first, to make easy for participants to tag themselves (in a previous meeting, someone suggested that people dressed with special clothing would be completely unwilling to stick adhesives to it); second, this simple garment helped to generate a sense of identity.

After many greetings and reunions with old acquaintances, and a reasonably informal atmosphere, we started the workshop.

First, a short presentation by me, talking about the structure of the National Program on Media and ICT Use (named that way at that time) and sharing with the audience what was going to happen throughout the day (IMPORTANT: This presentation is about one year old. Many things changed on the structure of the program on these months):

For those who do not want to watch the presentation, I want to highlight some "Game Rules" we defined at the beginning:

     * Upon arrival, be prepared to share with other participants.
     * When you leave, be prepared to share with the world.
     * We are all learners.
     * No one is a tourist.
     * Whatever happens is the only thing that could have happened.

For me, the last one is perhaps the most important of all, and I think it speaks of something that also appeared in CCK08: It is not possible for one person to learn everything, or consume all the information produced by a large group of people . That is the world we live in. So we need to understand that we can only do what is within our reach, and that whatever that is, it is fine. Very philosophical.

Then came Stephen's talk, which was intended to provide a conceptual framework for the activities of the day:

View SlideShare presentation or Upload your own. (tags: educamp colombia)

Educamp, by Stephen Downes
Foto: Stephen Downes
 

As usual, Stephen caught the attention of the audience (not just of those who understood English, but everyone, thanks to the excellent work of the interpreters who supported the event). An interesting aspect of each person having his own computer, was discovering how many of them sought ways to record their ideas on the conference,whether by taking notes online, or using text processors and then emailing the files the themselves. (Tip: It is important to identify ways in which all participants can benefit from these notes, which we did not this first time).

After this talk, we started our work. The first thing we proposed to the participants was to draw their personal learning environment (PLE), and then start a process of peer learning (because everyone had a laptop), where everyone was expected to be both learner and teacher at the same time. The first part might not have had the impact we wanted, because I realized too late the need to expand a bit more what Stephen had mentioned on the PLE concept, and the only example I had at hand was a very raw diagram I made by hand before the workshop. (Tip: For this year, the ideas on PLE have matured a lot more. We have new elements to help participants make sense of their PLEs).

Once they made explicit which tools they used in their PLE, they would have to write down each tool in an adhesive label (that is, a tag) and put it on their t-shirt. Those labels would represent those things they knew about, those things they could teach about. They were asked to identify the tools they would like to know more about (we gave them a "tool sheet" including descriptions and URL of several tools, in 13 categories), and their mission was to find someone tagged with the tool they wanted to learn about, and ask that person to teach them about it.

With some initial diagrams, and the excuse of a coffee break in the middle of the morning, participants addressed the second part of the job, now with a much more informal atmosphere (tables and chairs were unorganized, and many people were on the space outside the auditorium, where more comfortable couches and sofas could be found). The only real requirement for this activity was a working Internet connection, for it was here where would be the greatest burden for the network. That was the only thing that was not supposed to fail.

Murphy's law

I think I heard the statement "If something can go wrong, it will" about 15 years ago, and since then (and with the multitude of paragraphs and corollaries added to it) I keep it in mind as a reminder of how those things we don't want to happen are the ones set to occur more frequently. In the case of the workshop, the only thing that shouldn't have failed, connectivity, failed. The wireless routers that were in place could not endure the burden of all users and collapsed one after another, leaving only a very small group of people online. The flaw was visible only when usage of the access points became intense (because initially, because we were in lecture mode, there were not many people using the network services). This left us in a situation quite difficult during the rest of the morning. The only solution to the problem was getting new routers, which only would come around noon.

Something that comes back to my mind, is that this incident created some tension between the organizers (including myself), because even though the response I received was "the network is not down" (which was absolutely correct from a technical point of view), the experience for everyone else was of a lousy network connection (which was unfair, given that we hired 20Mb for the day).

 Educamp
Photo: elearningcolombia

This situation reminds me of past situations in which engineers, ignoring completely the experience being lived by those who do not know about technical issues (and are not interested, also), try to explain that the experience they are living is not correct, and that almost everything is "running". I suppose it is a matter of empathy, and maybe it is learned best over the years ...

Anyway, participants were engaged against all odds and tried to perform the proposed tasks. All I could do was to say everyone that what we were living was something that could happen all the time, and that it was one of the challenges that we had to confront as teachers. However, it was clear to everyone that this affected the achievement of our objectives (this was expressed in the survey done after the workshop), as some of them said via Ustream:

We all tried and did our best to compensate for the situation. The students sat close to those with connectivity to support the participants. Me, I ended up sitting on the floor trying to explain the workings of a wiki using sheets of paper, taking ideas from the videos of CommonCraft. Some of them who managed to complete the mission, left traces of it on YouTube:

So, it was noon, and we went to lunch. Just before we left, the connectivity problem was solved, which led us to alter the schedule we had planned.

Plan B

Despite of everything that happened, the balance was positive at noon. Participants were very engaged and just the messy environment was for many of them a remarkable thing. But we were faced with a real problem: very few people had the opportunity to experience throughout the morning with the tools we had anticipated. There were a lot of conversations, but there wasn't that much exploration. That left us in a difficult situation for the first activity of the afternoon (which intended to collect ideas on possible ways to use the tools). For this reason, we decided to change our plan on the fly, and use the work tables in the afternoon as "demonstration stations", in which students were asked to talk about the functionality and ways to use some of the tools.

This was a case in which the idea of "Whatever happens is the only thing that could have happened" became true, even for us as organizers. And we faced the need to relax and accept that we would not achieve what we had initially imagined, but something different. Not better or worse, just different.

But this unexpected change, made on the fly, was also appreciated by some of the participants:

(This teacher talks about how recursive we were to change things and try to get them to see what they couldn't see in the morning. He's nice enough as to say that this was a "dynamic solution created on the fly")

However, not everything was perfect. We never thought the students would have to be in charge of "demonstration stations", so some of them (without liability on their part) did not have an adequate mastery of the tool they had to face. This meant that, for example, those who showed Facebook were able to show the participants what could be done with the tool, whereas there were cases (like Twitter, for example) in which for obvious reasons this activity was not so helpful. However, the situation was a great lesson who would use two days later, in Medellin.

While all this was happening, we were streaming (and recording) using Ustream. We had a video feed showed in one of the two plasma TVs we had in the room, while the other (which was outside the auditorium) was frankly underused.

The change in the dynamics meant that the activity that was planned for the beginning of the afternoon disappeared completely from the schedule. And instead of delaying everything, we continued with the rest of the agenda as we planned initially.

Our unconference

We prepared a large "board" with two half-hour slots and five tables for each slot, to complete a total of 10 possible discussions. We invite attendees to propose their topics of discussion and to sit down on the tables according to the number assigned to the discussion, and according to their own interests. The game rule here was: "If you are not learning or taking part in a discussion, please move to another one", to remind everyone that it was not required to stay in a place where they did not feel they should be.

Discussions proceeded without any problem, and then came the moment for every discussion leader to share their conclusions with the whole group. Curiously, this activity started to become kind of boring, not only because of the time (it was already 5p.m.), but because of the extent to which some participants took their points. Adding up the fact that we had 10 discussions, the discussion became longer than we would have liked it to be.

With this activity, we ended the first workshop. Due to accumulated fatigue throughout the day, we did not held a long meeting after that, but hardly discussed the critical aspects to be taken into account in Medellin, which became important lessons.

Lessons learned

  • Perhaps the first one is the importance of connectivity, and the need of having a plan B to make activities possible.
  • The flexibility in design and objectives is crucial. The building of enough confidence as to propose a change on the road is essential, and in fact constitutes a message about the use of technology: We need to change our actions depending on the context that we have around us.
  • The people of CINTEL proposed to play a little more with the room layout in Medellin, because we would have some space constraints. In Bogota, people left the auditorium after Stephen's conference (as there was a sort of lobby outside), which allowed us to reorganize tables and alter the space. We would not be able to do this in Medellín, so their proposal was to have a more informal atmosphere since the beginning. This messy space was, curiously, rather well received by many of the participants.
  • We could not make assumptions about the ability of the support students in handling the tools. We would have to do something about this situation, before the second workshop.
  • It was neccesary to limit the time for the final group discussion.

To finish, some opinions of the participants:

Two days later, we would have our second "trail": Medellin.

NOTE: Please let me know about mistakes and possible improvements in this writing. I tried to do a close translation of an Spanish post, so it may seem a little "funny" every now and then.

Related posts

Technorati: