WordPress+Facebook

Since I cannot use Facebook Apps over HTTPS, that put a wrinkle over using the NetworkedBlogs app. Because one had to go to their apps.facebook.com to do more than look at a post (goes to networkedblogs.com which shows my site in a frame) or view the app profile, I decided to ditch it. I decided to look for another way to facilitate the integration. I’m used to Twitter Tools which just posts to Twitter. I thought there should be an equivalent for my blog posts to end up as a Facebook link post (not as a Note).

So I started searching on WordPress for possible plugins. Many were out of date. Many were for functionality not useful to me. Eventually I started searching through Google which muddied the waters even more by giving me much older plugins.

  • Simple Facebook Connect required me to publish to WordPress then go back and hit a button to publish to Facebook. Lame.
  • Facebook Comments for WordPress pretty cool if all I wanted was comments. Really I wanted the posts to show up in my profile more.
  • WPBook sets the URL for each post to go through apps.facebook.com.

Wordbooker finally did what I want… It creates a post in my newsfeed for my blog which uses a link to my blog. I manage it through WordPress not Facebook apps.

I could be happy now. (Until I next get annoyed.)

Regent NeSmith

I knew some things about William “Dink” H. NeSmith, Jr. a relatively new member of University System of Georgia Board of Regents through a friend and former coworker, Andy Fore, who personally knows Dink.

  • Jesup, Georgia
  • publishes newspapers
  • nice guy

Dink dropped by to tour our facility and answer questions.

One of the more interesting answers to a question about expanding distance learning had to do Dink’s belief online is the direction of the future and with the University of Phoenix operating in our state. He would rather see the money students give them come to us instead. The sense I get is Georgia ONmyLINE intends to help Georgians locate the online class options available to students. The project I work on, GeorgiaVIEW, provides the online class infrastructure. Another project I help intends to provide a more seamless integration between schools for those registering with Georgia ONmyLINE. Guess we are cutting edge?

The LMS is So Web 1.5

The claims Blackboard’s Learn 9 provides a Web 2.0 experience has bothered me for a while now. First, it was the drag-n-drop. While cool, that isn’t Web 2.0 in my opinion. A little more on track is the claim:

The all-new Web 2.0 experience in Release 9 makes it easy to meaningfully combine information from different sources. The Challenges Are Real, But So Are the Solutions

Integrating with a social network like Facebook is a start, but again, in my opinion, it still isn’t Web 2.0.

So, what is Web 2.0? I did some digging. I think the Tim O’Reilly approach meets my expectation best. He quotes Eric Schmidt’s “Don’t fight the Internet.” as well as provide his own more in depth.

Web 2.0 is the business revolution in the computer industry caused by the move to the Internet as platform, and an attempt to understand the rules for success on that new platform. Chief among those rules is this: Build applications that harness network effects to get better the more people use them. (This is what I’ve elsewhere called “harnessing collective intelligence.”) Web 2.0 Compact Definition: Trying Again

Users expect a site on the Internet to meet their needs or they eventually move on to a site which does. There are so many web sites out there providing equivalent features to those commonly found in an LMS. There is the danger of irrelevance. This is why every LMS company or group strives to continually add new features (aka innovating). The bar continually gets raised, so LMS software continually needs to meet this higher standard.

Tim additionally provides some other rules which you can see at the above link.

When an LMS reachs the point where the resources of the Internet helps people learn, then it will be a Web 2.0. As long as an expert or leader imparts knowledge on students, the LMS is still something different than Web 2.0. Sorry…. The irony? This is exactly what Michael Wesch and PLE advocates preach.

Preserving CE/Vista Settings

I’ve been asked for notes about this a few times. So here’s a blog post instead.
🙂

A coworker is working on scripting our updates. We lost the Luminis Message Adapter settings in applying the patch to the environment we provide to our clients. Fortunately, those settings are maintained by us not our clients. So I pushed those settings back very easily. Unfortunately, it points to the need to capture the settings for the potential purpose of restoring the settings.

In Oracle databases, this is pretty easy. As the schema user, run the following. It does some intentional things. First, we have multiple institutions, so the breaks make identifying which institution easier. Second, the same label for multiple forms gets confusing, so I am sorting by setting description id under the theory these ids are generated at the time the page is created, so the same tools will float together. (The last modified time stamp is probably unnecessary, I used it in an earlier version and left it just in case Vista for whatever reason added a new setting for the same label instead of modifying the existing one.) This can be spooled both before and after the upgrade. Use diff or WinMerge to compare the versions. Anything lost from the before version should be evaluated for inclusion adding back to the settings.

col lc_name format a50
col setting_value format a80
col label format a80
col lock format 999
col child format 999

clear breaks computes
break on lc_name skip 1

select learning_context.name lc_name, settings_description.label, settings.setting_value,
settings.locked_flag “lock”, settings_description.inheritable_flag “child”
from learning_context, settings, settings_description
where settings.settings_desc_id = settings_description.id
and settings.learning_context_id = learning_context.id
and learning_context.type_code in (‘Server’,’Domain’, ‘Institution’,’Campus’,’Group’)
order by learning_context.name, settings.settings_desc_id
/

An example of the multiple forms issue is external authentication. CE/Vista provides an LDAP (A) and an LDAP (B). The settings_description.label for both is contextmgt.settings.ldap.source. The settings_description.name for both is source. It looks like each of the two identical labels has a different settings.settings_desc_id value depending on whether it is A or B. To me it seems lame to use the same label for two different ids.

The most vulnerable parts of the application to lose settings during an update are the System Integration settings. A mismatched Jar on a node will wipe all the settings associated with that Jar.

However, I can see using this to capture the settings as a backup just in case an administrator or instructor wipes out settings by mistake. Yes, this is scope creep. Create a backup of the settings table to actually preserve the settings.

create table settings_backup_pre_sp2hf1 tablespace WEBCT_DATA as select * from settings;

Contexts: As a server admin, I maintain certain settings and push those down. Each client has control over some other settings and may push those down from the institution context. Maybe some are creating division and group admins? Maybe some instructors are changing things at the course or section levels. I may end up capturing everything?

Restoration: The whole purpose of preserving the settings is to restore them later. There are a couple methods in theory:

  1. Providing the settings to a human to re-enter. The labelling issue makes me question the sanity of trying to explain this to someone.
  2. Update the database directly would just need settings.id ensure it is the right location. Maybe dump out the settings in the format of an update command with labels on each to explain the context? Ugh.

If settings were not so easily lost, then this would be so much easier.

View: Another table of interest is the settings_v view. (Redundant?) The only reason I don’t like this view is it reports the values for every learning context which makes reporting off it much, much longer. For example, the encryption key for a powerlink is listed 8 places in settings/settings_description and 18,769 places in settings_v.

Recap of Vista Stuff

It has been a hectic week. A recap…

Java certificate fix – Yesterday, August 23rd, the certificate distributed in various Java applets expired. The community discovered the issue and informed Blackboard who put out a fix for the more current products on August 15th. Many customers are leery of having such little lead time to test, verify, and install a fix. Well, Vista 3.0.7.17 was also reported to have the problem, but Blackboard didn’t provide a fix until the 20th after I got my TSM to verify it really still is a problem on the 18th. (The corrected 3.0.7.17.8 version was provided August 21st. Why is in the next paragraph.)

The fix for Vista 3 required us to be on 3.0.7.17.8 (hotfix 8 which we had not yet applied), had references to the “webctapp” directory (in Vista 3 it is applications), and distributed a webct.sh script to add updateWar which didn’t work with Vista 3. FAIL. Thankfully we have modified War files in the past, so adding the updates was more work and accomplished before Blackboard provided a corrected version.

To see the Java certificates in Windows: Control Panel > Java > Security > Certificates. The Blackboard ones are verified by Thawte (the Certificate Authority). The old one is issued to Blackboard. The new one is issued to dc.blackboard.com.

Vista 3.0.7.17.8 – This hotfix was released a couple weeks ago. However, since the priority has been the migration to Vista 8, this was on hold. The previous problem made us step up and throw this into production. The testers went to heroic efforts to get this and the certifcate fix tested. Testing was mixed.

  1. Losing session cookie because of Office 2007 in Internet Explorer. Happened less often post fix, but still happens in some cases.
  2. Autosignon MAC2. Mode to allow insecure MAC works to give the one school using it time to correct update their portal to use MAC2. Originally the plan was to let them work out MAC2 in test.

Slammed by our users…

  1. systemIntegrationApi.dowebct – The school using the autosignon wanted to have the correct consortiaId to create the MAC. Some time back in January they started calling this any time users tried to login because a handful (guess was ~12) have had their username changed. So the autosignon failed. Yes, they were sent us 25,000 requests in a busy day (about 20% of the queues were working on these during the day) to handle potential 12 problems in a term. FAIL.
  2. pmSelfRegister.dowebt – One of the clusters started to have issues. Two nodes went crappy. I looked at the Weblogic console and found all of the failing nodes had no free spots in the queues. 90% of the queues were working on these. Much of this is because the requests were hanging around for at least 4800 seconds (an hour is 3600 seconds). At about 6000 seconds the cluster recovered when the queues cleared.I think the queues cleared because I changed to false a couple settings:
    • Allow users to register themselves as a Student in a section = false
    • Allow users to register themselves as an Auditor in a section = false

    As I recall, we only had about 22 queue spots open (out of 308) across the whole cluster. We got lucky.

Enrolling Administrators

One of the challenges of having 42 institutions is managing the administrators. (Actually we created some 12 spare institutions but why is another  post.) So my challenge was how to not drive myself insane trying to enroll the 6 same admin users to each institution. The best way in my opinion is to create the users in an IMS XML file for each institution and import the data. Creating the users was easy. Next was doing the enrollments.

Naturally, I turned to the Vista 8 Enterprise System Integration Guide on pages 66-67 and 95-96 where it describes which roles can be enrolled at which learning contexts. They go from the lowest most common enrollments at the section level up to the division level. Yeah, there was not anything for the institution level. It even had a comment before the table on pages 66-67:

NOTE: Roles not specified in the table can only be added through the Vista Enterprise administrative interface.

So, because the Institution Administrator is not listed, I could not enroll users to it through the import? It depressed me for about a week. A flash of inspiration had me check the Vista 3 documentation. Sure enough, on page 49 of the Vista 3 System Integration Guide, Institution Administrator is listed. (Admin roles at domain and server contexts, designer roles at instiution and domain contexts are also listed.)

The XML is easy enough to write. Normally, when writing this XML, I just need to refer to the SourcedId for objects I create, so I know their values. However, with this, I need to the know the SourcedId.Id for the institution.

Fortunately, we have collected the properties to a institution.properties and parse it to generate what to run at the command line. Rather than by hand copying the files into place one-by-one, I created a script to take a template, check this institution.properties and place the files in the correct place. In order to make each object unique, a portion of the SourcedId.Name was changed to the name of the destination folder.

Now I just need to add to the script a portion to change the SourcedId.Id for the Institution to the source_id value in the institution.properties. That is easy. Much easier than figuring out where to look in the documentation to find what is correct.

CE/Vista and Banner Integration

This is the second time I have worked on making Vista integration work with Banner. The first was 2005 in Vista 3.0.3 at Valdosta State. The production here at GeorgiaVIEW was set up by Harold, Jill, and Amy years ago and integrated into the install scripts or part of the cloned databases.

So now I am working on getting it to work in Vista 8. The IMS imports worked the first time like a charm. When I turned to using the Luminis adapter, the person records worked fine but the group contexts failed in Vista 8 and worked fine in Vista 3. So the “siapi.sh luminis import restrict” works fine.

Command-line

We have 41 institutions in Vista 3 currently. So imports are automated to some degree to preserve the sanity of Jill (and to a lesser degree Amy and myself). Rather than put in the UI all the settings, we have a properties file defining the location, glcid, sourcedid.source and sourcedid.id for each institution. This allows us to easily pass the values when importing at the command-line.

My first approach was to leave the settings identical to what I used to create persons and group records with IMS. This essentially uses the glcid of the institution and sourcedid of the institution. This is what resulted in the person records working and groups not. Fail.

I realized my error in logic must be the lack of a division-to-group relationship as the error described the groups cannot be related to an institution. So I changed the properties to use the division values for the sourcedid. Fail.

So I went looking in “Guide to Integration with the SunGard Luminis Data Integration Suite” for what I ought to use at the command-line. I didn’t find a solution. Just the same command-line lacking even the glcid and sourcedid.
🙁

XML

Giving up on the command-line approach for now, I added the relationship element to the XML so the group would become a child of one of the divisions I created with IMS. It sorta worked! The groups all imported but the course failed with the exact same error the groups formerly succeeded. To add insult to injury, simply running the import again on the exact same file had the courses import.

Mistakes

A mistake I made was reading the documentation: “Guide to Integration with the SunGard Luminis Data Integration Suite”.

Sungard Libraries:

  1. Page 8 says imq.jar and mbclient.jar do not come with CE/Vista and must be obtained from Sungard. All three of us thought in Vista 3.x these were automatically placed so we didn’t need to place them. Best I can tell, these were installed by Vista. I found $WEBCTDOMAIN/customconfig/startup.properties references both files in CUSTOM_CLASSPATH and setEnv.sh references CUSTOM_CLASSPATH. (This document has notes for what CE customers need to do and no note about CE users needing to go get them from Sungard.)
  2. Those who believe the last note would keep reading and find on Page 9 instructions to deposit the files in $WEBCTDOMAIN/serverlibs/. Assuming I am wrong about item #1, the startup.properties expects them in $WEBCTDOMAIN/serverlibs/luminis/ and would not find them where the document says to put them.

IMS Data Going to Wrong Place

I should know better than to trust documentation over my own intuition. Or to change based on what others tell me.

I followed:

Log in to Vista Enterprise as a Server Administrator or Institution Administrator.
NOTE: To set glcid, you must log in as a Server Administrator.

From the Administration tab, click the Utilities tab.
Click Settings.

Under System Integration, click System Integration API IMS….

Enter values to configure settings. See the table that follows, Standard and IMS Adapter
details on each value.

Click Save Values. The Settings screen appears and the settings are configured.

Standard and IMS Adapter Settings
The following table describes the parameters you can set using the administration user interface.
Setting Description
GlcId

• Stands for global learning context identifier.
Set by Server Administrator only.
Required to run IMS and Standard adapter
commands.

• Identifies the institution in which the adapter
command runs
• Automatically assigned by Vista Enterprise
upon creation of an institution

Of course, it doesn’t say which Glcid, right? After all, every learning context has a Glcid. Since, at the time I only had one institution (before I created the 54 others), I set the Glcid to the one for that institution. Should it be the Glcid for the server or domain learning context? If so, then couldn’t Blackboard just pre-populate it at the time of install? Why do I need to put it there?

At the same time, I didn’t believe it necessary because I had seen IMS imports work without the Glcid set at the server learning context. They worked because the command used to run the IMS import has the glcid.

The result? My imports went into the the institution with the Glcid set at the server learning context, despite the defining in the command I ran to use a different Glcid. Removing the Glcid from the server learning context settings allowed the command to work as I thought it should.

So much for a pristine, clean database.

Tar Owner

Some of my previous blog posts about a little discovery have save me time in the past.

I made a tar of some system integration scripts we wrote for Vista 3 and brought them over to a Vista 8 test box to work on updating them for this new version. A decision we made earlier to change the userid came to light.

Using gtar -zxvf file.tar.gz gave me the wrong owner. Thankfully the people who made tar long ago solved this problem with –owner. Look for it in the man pages. Using gtar -zxvf file.tar.gz --owner newid gave me the files I needed with the right owner.

Also, thankfully, the old owner account was still on the box so I go into it and remove the files before extracting with the new id. Hopefully my Systems people (who read this blog) will not kill that account or our access to it until after this project is done?
🙂

Everything to Everyone

This is intended to be a more thoughtful response to Laura regarding Course Management Systems and the need for innovation.

Currently, Course Management Systems are bloatware. They got this way by trying to provide everything to everyone. One instructor wants a feature, the university presses for this feature, the CMS programmers put in the feature. Okay, maybe not even 1/2 the time, but given that we have about 15,000 instructors, even a tenth getting a tenth of what they want adds up very quickly. Where they overlap is where companies feel the pressure to add these features.

In my experience, people have found CE and Vista clunky and difficult to use since 2001ish. Basically, that was when the shiny newness wore off at Valdosta State. If anything, then its gotten worse over time. Personally, I think this is the case because its not easy to use. Part of this lack of ease is because of the sheer number of possible actions required to accomplish frequent tasks. Another part is the overwhelming possible branches one might take [1] in the decision tree. Part of what makes us intelligent is visualizing the goal and taking the steps necessary to get is there. When software is not easy to use, the users feel stupid because they cannot figure out how to get to the goal.

Think about the complaints we have been seeing about CE6 from people using CE4. They are griping about features they are used to using disappearing. No one wants to lose the features or options they frequently use. They also wish the features or options they never use would disappear.

From what I’ve seen, instructors will make use of what the university
provides. When universities don’t provide what instructors want, then
these instructors will find what they want elsewhere and make use of
it. Large companies take a long time to integrate new features. By the
time they figure out the user base wants something, incorporate it,
release it, and customers implement it, the users have become used to
using it elsewhere are not attracted to a feature they’ve been using
for years elsewhere. So then we invoke FERPA and whatever to move them
to the CMS which is more clunky than what they were using already.

So enough with my griping… What is the solution? Well, maybe we should think about what a Course Management System should do?

  1. Course management: This means it provides the university administration means by which they can control access to classes. Its not for the faculty so much as provosts, vice presidents, and registrars to be comfortable the university is not allowing students to take something without paying the institution.
  2. Learning: Specifically, these are communication of concepts and evaluation of concept comprehension.

In a nutshell, #1 is the course list and administration screens while #2 is the course internals. If our focus is recreating the university in an online environment, then the CMS is the right approach. By importing the data from the student information system, we build a hierarchy just like the course catalog and put students into virtual representations of these classes. This mindset is where instructors want to build classes that consist of their lectures, the assignments, and the assessments. Its the face-to-face class online. Thankfully, online classes are moving to using tools to better utilize the advantages of the WWW. However, the focus is more towards improving peer discussion.

Maybe this approach isn’t the best one for learning? Last month I read a few articles off a web site advocating a different model: students gathering and creating information themselves (Personal Learning Environment). The instructor in this model becomes more of a mentor like independent study or how universities functioned at the time of our Founding Fathers. I’ve been hearing this is the direction education ought to take for over a decade now. However, I think its unlikely as its easier on the instructor to use the bird shot approach. 🙂

My Approach: The CMS is only an integration framework to provide access to tools. It doesn’t try to provide these tools at all. There are hundreds of wiki products who are better at some things depending on how its used. Why should the CMS think it can do it better than all of them? Same thing applies to blogs, social bookmarking, file sharing, etc. This means universities will provide a number of these tools and support dozens of different applications and integrate them all. We will have to better understand data flow, security, how all these pedagogically work well together. It’ll be a nightmare.

[1] One of things I unfortunately still do is recreate the user’s actions by figuring out what they clicked on in the recorded session. Much of the problems we see are user error, probably through not understanding the ramifications of the action.