I’ve been playing around with various integrations and decided to knock up a simple Twitter bunkup where you can login to a very simple Sinatra app using Twitter and send a tweet to say so. It’s very very simple as I wanted to concentrate on the Twitter integration rather than the app functionality. So how do you do it? First thing you need is a Sinatra app. I use rvm to manage dependencies so I like to create a .rvmrc file that loads the appropriate gemset whenever I cd into the directory:
The above will create a twitterauth directory, create a twitterauth gemset, install the required gems (note the high security on the twitter gem as it can do all sorts of things with your twitter account if you let it) and create an rvm .rvmrc file in the directory that will do the equivalent of rvm use 1.9.3@twitterauth every time you cd into it. The first time you cd in you’ll see gubbins about running the script for the first time and you have to choose to do so. After that it’s seamless and the gemset is loaded without any interaction.
So I have this interesting scenario to deal with. Users from a nightly ingest or real time via the Matrix Provisioning system need to be created in Blackboard and associated with specific roles depending on where they are located. It’s a run of the mill integration scenario so how did I deal with it? Here’s the big picture.
I’ve scheduled all the Matrix provisioning updates for next week. I think this takes project multitasking to silly levels and just as well C# is very like Java. I’d hate to have to switch constantly between Java and C++. It’s all come together at once though, with a move to Active Directory, which needs provisioned and a move to Blackboard 9.1, which also needs provisioned. So it’s been an interesting few months culminating in this release fest.
Following on from my initial Blackboard SIS research I had a clearer idea of how to plumb it into my new Matrix Provisioning system which is based on ActiveMQ and Camel. The main problem I had was the lack of any status coming back from the SIS. You can send it what you like, even garbage and it replies with ‘OK’. Although the garbage ingestion is due to be fixed in SP9 or SP10 I think. The status won’t though. It will still return ‘OK’ even though the account wasn’t created. I had a chat with Behind the Blackboard and it’s fair to say that because it ingests feed files containing possibly thousands of users a single result isn’t suitable. It is in my case though as the users come in real time in JMS messages, one per message. So I decided to develop a small Building Block to wrap the SIS endpoint. The flow is shown in the diagram.
Time for a blog post methinks and good timing too as I’ve recently updated the Matrix provisioning system to support Invalid Message Channels in its routing engine. An invalid message is any message that can’t be processed for whatever reason including if the target system is down. This turns out to be quite convenient as the messages can be rerouted to the target topics when the system is back up.
A long time ago, during the early days of the Bodington collaboration, those that know about these things reckoned the LMS, or as it was termed in those days, VLE, would become an aggregator of learning services, rather than a monolithic blob of press ganged functionality and at the time, when open source was doing well in education, albeit quietly, that seemed a reasonable outlook. Indeed, we’ve seen the slow eduPunky rise of the PLE, although I’ve seen this transmogrify from meaning basically an offline VLE, sorry, LMS, to what it’s known as today, namely a loose and not very well connected collection of “MyStuff”. That I use for, learning like, well, you know what I mean. I keep all my bookmarks in Delicious, my feeds in Google Reader and my mates in Facebook and I ignore all institutional content or attempts to contact me to make me do stuff. Stuff that’s to do with my learning, like, you know what I mean. Coz learning’s just about reading a load of Stuff then turning up for the exam, innit? (more…)