Posts tagged ‘cohere’

Cohere website relaunched

This morning we relaunched the Cohere website. It’s almost a complete re-write of the old site and has a much improved user interface (we did plenty of user testing to try and get this right) as well as:

  • Group management – you can now create groups of users for collaborative working
  • API – for remotely adding, editing and reading data from the Cohere database
  • Scheduled RSS importing – you can now set your RSS feeds to be imported into Cohere daily
  • Firefox plugin – for creating ideas and connections as you browse the web

If you find any bugs or have any suggestions for improvement then please visit the Cohere support site.

Through the Square (javascript) Window

For the Cohere site, I’ve been trying to figure out how you can keep track of a pop up window using Javascript even when the parent page changes (to another page on same domain) and to know whether the pop up window is already open. I’m having exactly the problem mentioned in this forum post – but as yet no solution.

All the example scripts I’ve found so far will only work if the parent page remains the same. I.e. you’re testing whether the pop up is already open, but applying this test on the document/page that originally opened the popup. What I’m looking to do is subtly different – so the pop up remains open so as you are browsing Cohere you can add ideas to make connections between.

I would think that this ought to be possible, because if you open a popup window with the same name as an existing one, the old one will get overwritten – so it ‘knows’ that the pop up exists. Plus, this is all running from the same domain, so there won’t be any cross domain issues.

If anyone has any pointers as to how to achieve this, it would be much appreciated. Or if you have other suggestions for how the same results could be achieved. Cheers ;-)

Cohere reCaptcha-ed

Yesterday, we discovered that some of the users on Cohere were actually spam, the usernames were random characters and the descriptions on these users profiles consisted entirely of links for loans, pills etc (all the usual spam). To try and stop this happening again I’ve added reCaptcha to the user registration form.

This was really easy to implement, the only slight change I had to make was to fix the code so requests to the recaptcha servers went through our proxy (shame there aren’t optional params to add proxy details – but easy enough to fix).

Time for Timelines

A couple of weeks ago, Peter (one of the OU graphic designers) asked me if Cohere could produce nice graphical timelines (the BBC has some really nice ones). He’s been tasked to produce one for one of the OpenLearn courses and was thinking about the best way to do it – and so it could be replicated easily (when he gets asked to make another one for another course). Peter pointed me at Simile from MIT – which is a kind of Google Maps API for timelines.

My response was that Cohere couldn’t currently provide exactly what he was looking for (we’ve not really worked on many different visualisations yet), however, you could use Cohere as the repository for providing data (via the Cohere API) to Simile. All we’d need to do would be add the facility to add a date to an idea/node, and another formatting output options to get the data in the way that Simile requires. (Note to self: should also add location option for ideas/nodes so they could be displayed on a Google Map as another visualisation option for Cohere)

Yesterday I had a go with this on my Cohere development server, so can now add dates to nodes and export in the correct format for Simile. I also created a little script so that I can show my blog postings on a Simile timeline:

This timeline is dynamically generated and shows the last 100 of my blog postings. If you’d like to have a look at the script I’ve used for generating this, then you can download it. Depending on where you post it up (relative to your WordPress installation), you may need to slightly alter line (no. 14) to point to your wp-config.php file.

The main downside that I’ve found so far with Simile is that is will only allow data to be dynamically loaded via XMLHttpRequest. This means that the data source must reside on the same domain as the page you’re displaying the timeline on (unless you can use a iframe as I have done above) – it would be fantastic if Similie could also accept data via JSON and so avoid the cross-domain problem (I’ll need to check whether this has already been added as new feature request in their issue tracker).

Then completely coincidentally, this morning I saw this post from Stuart about Dipity – an online timeline creator. So I’ve had a very quick play with it this morning – creating the following timeline (also of my blog):

This took about 30 seconds to produce, buy just adding the URL of my blog feed.

These two timelines, although displaying the same data, are obviously quite different with Dipity is far more graphical, though IMHO a bit cluttered and not so easy to read. Simile looks quite grey in comparission, though I’ve not yet explored the API fully and how you can customise the colours/display. Dipity is much quicker to get up and running with, but my feeling is that Simile would offer more flexibility (within bounds), for example I can’t tell yet if Dipity has the capability to show events which span a period of time (i.e. have start and end dates – as Simile allows).

(Looking at Dipity has reminded me that we should create an RSS feed for Cohere nodes).

Any pointers to other timeline visualisations appreciated :-)

REST Service documentation with PHPDocumentor

I’ve just been hacking around with PHPDocumentor getting it to automatically create the documentation for the Cohere API and seems to be working well.

I have apilib.php which contains the PHP calls to the functions, then service.php is a wrapper around the apilib.php and provides the actual REST based services. Service.php is basically just a big switch statement, so, since PHPDocumentor needs the function declarations I can’t actually base the service documentation on service.php, so I’m using apilib.php as the basis for the service documentation.

I created my own PHPDocumentor template, which has been straightforward enough, though I did come across a couple of little issues – nothing too big and nothing that can’t be worked around .

These were the 2 little hacks I needed to put into my template:

  1. in apilib, I’ve named the functions using camel case, whereas the actual method calls in service.php need to be lower case – so I amended the stylesheet to use: {text-transform:lowercase;} where the function name was displayed
  2. I also needed to remove the dollar signs from the front of all the PHP parameters, so to do this I just used the Smarty templating command ‘replace’: {$functions[func].params[params].var|replace:’$':”}

I still have some of the documentation to actually write into apilib.php – most notably example service calls for each method and double checking the return descriptions are consistent (and correct). All is working out well and you can see the generated docs on the Cohere site.

Getting to grips with Git

I’ve just been getting my head around Git and the differences it has with SVN and CVS. Seems to be going well so far, and I really like the idea of having a local repository so changes aren’t immediately published to the remote Git repository.

Took a little while for me to figure out how to get the Eclipse Git plugin compiled and installed – but then I’ve never needed to compile a plugin before!

We’re now using Git for our OpenID server development and from the Cohere website:

http://kmi-forge.open.ac.uk/gitweb?p=openid-server.git
http://kmi-forge.open.ac.uk/gitweb?p=cohere-web.git

Reviewing the OpenLearn tools

Firstly, a slightly belated Happy New Year!

Yesterday we had an interesting discussion about how we could evaluate and review the social tools included in OpenLearn, namely, the Knowledge Mapping (with Compendium & Cohere), MSG and Flashmeeting. Our feeling is that they’ve not been as successful as we first hoped, and there maybe lots of different reasons for this. For MSG I’ve detailed some of the possible reasons in a JIME paper that will be published soon.

It’s quite interesting to compare how OpenLearn is viewed externally to the OU vs how it’s seen internally (and within the OpenLearn team). The feedback we have from external users is that, to paraphrase, “OpenLearn is great, I can get free OU content”, whereas I’m slightly dissappointed that MSG isn’t used more than it is. I guess the difference is due to the fact that users may see the site as a way of getting content, and not necessarily somewhere they can come to to gain access to tools, such as IM, video-conferencing etc.