CAREO Learning Resource Syndication Feeds – RSS

After way too long, I’ve taken some time to re-implement the RSS feeds from CAREO. The new implementation is infinitely more scalable than previously (now uses periodically updated static files, rather than regenerated-every-time live queries).

The downside of this new implementation is that you can’t create your own feeds from any query. I’ll add any new feeds that people want, but I preferred the personalized and on-demand nature of the previous implementation.

Unfortunately, that on-demand regeneration from live queries was the achilles heal, since it caused the server to fall flat on its face once adoption really took off. A victim of its own success, really…

For now, the feeds are regenerated daily (at, or shortly after, 6:00am MST).

RSS feeds are now listed in one central place, at http://careo.ucalgary.ca/rss/

After way too long, I’ve taken some time to re-implement the RSS feeds from CAREO. The new implementation is infinitely more scalable than previously (now uses periodically updated static files, rather than regenerated-every-time live queries).

The downside of this new implementation is that you can’t create your own feeds from any query. I’ll add any new feeds that people want, but I preferred the personalized and on-demand nature of the previous implementation.

Unfortunately, that on-demand regeneration from live queries was the achilles heal, since it caused the server to fall flat on its face once adoption really took off. A victim of its own success, really…

For now, the feeds are regenerated daily (at, or shortly after, 6:00am MST).

RSS feeds are now listed in one central place, at http://careo.ucalgary.ca/rss/

ALOHA Application

I’ve just bundled up the ALOHA application (version 1.3) as a MacOSX bundle, so you don’t have to go through Java Web Start to fire it up. The other added bonus is that it looks more like a “native” application, using the real live menu bar and everything!

Here’s a link to the disk image containing the application. The bundling was absolutely trival. Just fire up Jar Bundler, feed it the .jar(s) and configure it a bit. Done.

ALOHA 1.3 Application on MacOSX

I’ve just bundled up the ALOHA application (version 1.3) as a MacOSX bundle, so you don’t have to go through Java Web Start to fire it up. The other added bonus is that it looks more like a “native” application, using the real live menu bar and everything!

Here’s a link to the disk image containing the application. The bundling was absolutely trival. Just fire up Jar Bundler, feed it the .jar(s) and configure it a bit. Done.

ALOHA 1.3 Application on MacOSX

APOLLO NMC Online Conference Presentation

King Chung Huang and Mike Mattson are presenting at the NMC online conference on Wednesday. The presentation just went live, and it’s an excellent overview of some of the thinking behind APOLLO (the next version of the CAREO software).

A brief description of the fundamental conceptual shifts we’ve made, including “Object At Center”, is provided, and King even touches a bit on some of the technical details (with cool sounding object class names, too).

APOLLO really is shaping up to be some amazingly cool stuff, and this is just the first (of many) public appearances.

Breeze Presentation Link

There are a lot of subtle inferences made during the presentation, some of which can only really be clarified with demonstrations (which will be rolled out in the next few weeks and months).

The concept of “Nodes” is pretty powerful stuff. We’re not talking about simple lists of metadata anymore, but quasi-intelligent objects/containers that can interact with other objects/containers to produce more elaborate/complex results. At a very simple level, this could be analogous to W3C DOM Nodes, which can be single objects or complex hierarchies, with a single simple interface to access and manipulate the contents.

The other cool thing that Nodes can provide (based on a defined interface to control/manipulate/access the contents) is the ability to create rich interfaces to add/edit/view/refine Nodes (and subnodes, and sub-sub-nodes, ad infinitum). Sounds kinda boring, but it boils down to providing a way to create cool, dynamic presentations of Nodes, or transporting them to other media (Node-to-DVD? Node-to-website? Node-to-LMS?), and lots of other stuff that we haven’t even thought of yet…

King Chung Huang and Mike Mattson are presenting at the NMC online conference on Wednesday. The presentation just went live, and it’s an excellent overview of some of the thinking behind APOLLO (the next version of the CAREO software).

A brief description of the fundamental conceptual shifts we’ve made, including “Object At Center”, is provided, and King even touches a bit on some of the technical details (with cool sounding object class names, too).

APOLLO really is shaping up to be some amazingly cool stuff, and this is just the first (of many) public appearances.

Breeze Presentation Link

There are a lot of subtle inferences made during the presentation, some of which can only really be clarified with demonstrations (which will be rolled out in the next few weeks and months).

The concept of “Nodes” is pretty powerful stuff. We’re not talking about simple lists of metadata anymore, but quasi-intelligent objects/containers that can interact with other objects/containers to produce more elaborate/complex results. At a very simple level, this could be analogous to W3C DOM Nodes, which can be single objects or complex hierarchies, with a single simple interface to access and manipulate the contents.

The other cool thing that Nodes can provide (based on a defined interface to control/manipulate/access the contents) is the ability to create rich interfaces to add/edit/view/refine Nodes (and subnodes, and sub-sub-nodes, ad infinitum). Sounds kinda boring, but it boils down to providing a way to create cool, dynamic presentations of Nodes, or transporting them to other media (Node-to-DVD? Node-to-website? Node-to-LMS?), and lots of other stuff that we haven’t even thought of yet…

Search Variables (simple vs. advanced search)

Tim Bray is right on with this (and welcome back to North America, Tim!).

People don’t want to have to muck around with 15 fields and widgets in a search form. How on earth would I know if the term I’m looking for is in the Title, Creator, Description, URL, whatever field? Unless I already knew what I was looking for, in which case I probably wouldn’t be using a search engine…

We need to build Simple Search (i.e., a single text field with a “Go” button) to be smart enough that it’s all that is required. I can’t remember the last time I used the Advanced Search form in CAREO, aside from testing/debugging the form itself.

Which would you be more likely to use?

Advanced Search

or

Simple Search

I wouldn’t be at all surprised if APOLLO didn’t even have an “advanced search” form (unless the users scream for one, that is).

Tim Bray is right on with this (and welcome back to North America, Tim!).

People don’t want to have to muck around with 15 fields and widgets in a search form. How on earth would I know if the term I’m looking for is in the Title, Creator, Description, URL, whatever field? Unless I already knew what I was looking for, in which case I probably wouldn’t be using a search engine…

We need to build Simple Search (i.e., a single text field with a “Go” button) to be smart enough that it’s all that is required. I can’t remember the last time I used the Advanced Search form in CAREO, aside from testing/debugging the form itself.

Which would you be more likely to use?

Advanced Search

or

Simple Search

I wouldn’t be at all surprised if APOLLO didn’t even have an “advanced search” form (unless the users scream for one, that is).

Up for air

I’m popping up for air, and seeing that a whole lot of stuff has been going on…

I’ve been under a heavy load of artificial urgency – and just recently realized that things are actually progressing quite well despite it all. Lately, I’m finding it harder and harder to keep this artificial urgency in perspective – things seem so darned important and demand immediate attention. Whether they deserve it or not – that filter has apparently been disabled. I wonder if there’s some kind of Bayesian filter for external (meaning “outside of my skull”) demands 😉 A friend pointed out that I’ve been in a dark, dark place lately. Time to fix that.

The Learning Commons website was just revamped, with a much easier layout (you can actually FIND stuff now!).

The migration from CAREO to APOLLO marches on, with significant interest from a metric boatload of folks, some of whom actually want to collaborate (yay!).

I’ve been working on a “learning object metadata editor” as an APOLLO app – it’s basically a generic XML editor, that can be fed some XPaths for editing in a form-based interface on a web page. It’s working quite well in my little sandbox, but it’s not ready to be released into the wild quite yet. It’s basically the only thing holding us back from throwing the switch from CAREO to APOLLO, though…

I’m popping up for air, and seeing that a whole lot of stuff has been going on…

I’ve been under a heavy load of artificial urgency – and just recently realized that things are actually progressing quite well despite it all. Lately, I’m finding it harder and harder to keep this artificial urgency in perspective – things seem so darned important and demand immediate attention. Whether they deserve it or not – that filter has apparently been disabled. I wonder if there’s some kind of Bayesian filter for external (meaning “outside of my skull”) demands 😉 A friend pointed out that I’ve been in a dark, dark place lately. Time to fix that.

The Learning Commons website was just revamped, with a much easier layout (you can actually FIND stuff now!).

The migration from CAREO to APOLLO marches on, with significant interest from a metric boatload of folks, some of whom actually want to collaborate (yay!).

I’ve been working on a “learning object metadata editor” as an APOLLO app – it’s basically a generic XML editor, that can be fed some XPaths for editing in a form-based interface on a web page. It’s working quite well in my little sandbox, but it’s not ready to be released into the wild quite yet. It’s basically the only thing holding us back from throwing the switch from CAREO to APOLLO, though…

eXist: Open Source XML Database

I initially sent this as an email to the group, but thought it might serve better on the weblog…

I’ve been playing around with eXist today. Holy crap.

I used Rob’s JUD export script to suck all 3600+ records out of the CAREO JUD (took almost 2 hours to process that), then ran the import function on eXist (took maybe 5 minutes to import them all).

It looks like it’s going to be able to do some pretty freaky stuff, search-wise. I’ve been playing around with some pretty loose XPath queries, and it returns excellent hits, pretty darned fast. It can be slow if I request, say, all documents with the letter “a” in them somewhere, but for normal queries, it’s stinky fast.

Even for some pretty compound queries, it’s fast, too.

Here’s an example:

document(*)//text() &= ‘*image* *biology* *water*’

This basically says: Return any xml document that contains, somewhere in the various elements in the document, the strings “image”, “biology”, and “water”.

It might match “image” in /lom/technical/format, and “biology” in /lom/classification/keywords/langstring, and “water” in /general/description/langstring.

This particular search returned 60 hits, taking a total of 638ms of processing. Without having added any indexing.

I did another search for:
document(*)//text() &= “*biology* *video*”

and it found stuff that would have been difficult to know it was a video otherwise (the technical/location had a value that had “/VIDEOS/” in it, so it matched.

Also, it seems to cache search results on the fly, so subsequent searches for the same thing return instantly. Very nice.

I initially sent this as an email to the group, but thought it might serve better on the weblog…

I’ve been playing around with eXist today. Holy crap.

I used Rob’s JUD export script to suck all 3600+ records out of the CAREO JUD (took almost 2 hours to process that), then ran the import function on eXist (took maybe 5 minutes to import them all).

It looks like it’s going to be able to do some pretty freaky stuff, search-wise. I’ve been playing around with some pretty loose XPath queries, and it returns excellent hits, pretty darned fast. It can be slow if I request, say, all documents with the letter “a” in them somewhere, but for normal queries, it’s stinky fast.

Even for some pretty compound queries, it’s fast, too.

Here’s an example:

document(*)//text() &= ‘*image* *biology* *water*’

This basically says: Return any xml document that contains, somewhere in the various elements in the document, the strings “image”, “biology”, and “water”.

It might match “image” in /lom/technical/format, and “biology” in /lom/classification/keywords/langstring, and “water” in /general/description/langstring.

This particular search returned 60 hits, taking a total of 638ms of processing. Without having added any indexing.

I did another search for:
document(*)//text() &= “*biology* *video*”

and it found stuff that would have been difficult to know it was a video otherwise (the technical/location had a value that had “/VIDEOS/” in it, so it matched.

Also, it seems to cache search results on the fly, so subsequent searches for the same thing return instantly. Very nice.

APOLLO Sherlock Search Prototype

I’ve just put together a prototype Sherlock channel for APOLLO. Easy peasy tool to write (actually, 99% of it is the default Sherlock channel template file, with a couple of minor tweaks.

This is starting to feel much more useful (to me, anyway). An all-in-one application interface for searching and viewing learning objects.

Next, I want to complete the tool to use a SOAP interface (rather than the DOM-based screen-scraping it’s using now) so I can have a little more control over what gets sent where. Sherlock made the screen-scraping version much easier than the SOAP version, though…

APOLLO Sherlock Channel Prototype

(click on image for bigger version)

I’ve just put together a prototype Sherlock channel for APOLLO. Easy peasy tool to write (actually, 99% of it is the default Sherlock channel template file, with a couple of minor tweaks.

This is starting to feel much more useful (to me, anyway). An all-in-one application interface for searching and viewing learning objects.

Next, I want to complete the tool to use a SOAP interface (rather than the DOM-based screen-scraping it’s using now) so I can have a little more control over what gets sent where. Sherlock made the screen-scraping version much easier than the SOAP version, though…

APOLLO Sherlock Channel Prototype

(click on image for bigger version)

What features do YOU want to see in a “Learning Object Repository” ?

We’re still in the planning stages for the next version of the software that runs CAREO and friends.

This would be a Good Time to send in wish lists for things that you would like a learning object repository to do, things you like/dislike/can’t stand about the current version of CAREO, or even (especially) Pie-In-The-Sky wishes/dreams about what you would like to see.

Ideally, feature requests would point toward making the software more usable in a real-life context (i.e., “This is what it will take for me to use LO Repositories in the classroom…” etc…)

Anything goes. If you can, attach a priority to the request (I MUST HAVE… I would kinda like… etc..)

Feel free to post requests in the comments section here, or send them in by email or AIM/iChatAV.

Note, this is similar to an earlier request I made, which focussed on the server software side of things. Here, I’m more concerned with functions/features/interface from a user’s perspective.

We’re still in the planning stages for the next version of the software that runs CAREO and friends.

This would be a Good Time to send in wish lists for things that you would like a learning object repository to do, things you like/dislike/can’t stand about the current version of CAREO, or even (especially) Pie-In-The-Sky wishes/dreams about what you would like to see.

Ideally, feature requests would point toward making the software more usable in a real-life context (i.e., “This is what it will take for me to use LO Repositories in the classroom…” etc…)

Anything goes. If you can, attach a priority to the request (I MUST HAVE… I would kinda like… etc..)

Feel free to post requests in the comments section here, or send them in by email or AIM/iChatAV.

Note, this is similar to an earlier request I made, which focussed on the server software side of things. Here, I’m more concerned with functions/features/interface from a user’s perspective.

CAREO Installer Continued…

I just tested installation, configuration and operation of CAREO on an unnamed, still-in-beta operating system.

With the installer, it took me all of 5 minutes to get all the bits in place, running a new instance of CAREO and ALOHA Server.

This included copying the disk image over from my TiBook, running the installer, and hand-configuring the WebObjects app (since I haven’t gotten around to getting the installer to do that automagically yet).

Oh, and this unnamed, still-in-beta operating system is set to kick some royal ass. But you didn’t hear it from me.

I just tested installation, configuration and operation of CAREO on an unnamed, still-in-beta operating system.

With the installer, it took me all of 5 minutes to get all the bits in place, running a new instance of CAREO and ALOHA Server.

This included copying the disk image over from my TiBook, running the installer, and hand-configuring the WebObjects app (since I haven’t gotten around to getting the installer to do that automagically yet).

Oh, and this unnamed, still-in-beta operating system is set to kick some royal ass. But you didn’t hear it from me.

CAREO Installer Update

It’s coming along nicely… I now have an installer that copies over the WebObjects application and supporting resources, creates the FrontBase database and populates it, and almost creates the MySQL metadata repository database… I have the MySQL stuff working as shell scripts, but it doesn’t want to play nicely when embedded in the installer.

After I wrestle the MySQL script into submission, I get to turn my gaze onto the WebObjects application configuration – ideally it should set up the app, start it, and have it automatically restart if the box is kicked over.

UPDATE: I just got the MySQL population part working… Silly mistake. I wasn’t including the complete path to the mysql command. It’s entered on my in my .cshrc file so it worked fine there, but barfed in installer (which ran in another shell without my .cshrc to guide it). Note to self: CHECK THE LOG FOR THE INSTALLER BEFORE RUNNING OFF ON WILD GOOSE CHASES!

It’s coming along nicely… I now have an installer that copies over the WebObjects application and supporting resources, creates the FrontBase database and populates it, and almost creates the MySQL metadata repository database… I have the MySQL stuff working as shell scripts, but it doesn’t want to play nicely when embedded in the installer.

After I wrestle the MySQL script into submission, I get to turn my gaze onto the WebObjects application configuration – ideally it should set up the app, start it, and have it automatically restart if the box is kicked over.

UPDATE: I just got the MySQL population part working… Silly mistake. I wasn’t including the complete path to the mysql command. It’s entered on my in my .cshrc file so it worked fine there, but barfed in installer (which ran in another shell without my .cshrc to guide it). Note to self: CHECK THE LOG FOR THE INSTALLER BEFORE RUNNING OFF ON WILD GOOSE CHASES!