I’m surprised I have not blogged here about the student lawsuit against Turnitin.com? An anti-plagiarism service, Turnitin has students or faculty members upload papers into the database. By comparing new papers to the database, it gives ratings as to whether it is likely a student plagiarized.

Now the search goes out for any student who has a paper that’s being held by TurnItIn that they did not upload themselves. Students Settle with TurnItIn

In theory I could be someone in this situation. Back in 2005, a coworker asked my mother if someone by my name was related to her. This coworker was taking some classes at the university I attended. Turnitin had threw up a cautionary flag on the Originality Report because it was somewhat similar to something with my name on it. The problem is this product came into use at the university after the time I was a student. So I never submitted anything to it. The department from which I got my degree kept a copy of my papers (many submitted by email) and used this product at the time.

Another possibility is this tidbit about the product: Over 11 Billion Web Pages Crawled & Archived. I was actively blogging before and at the time of the incident. Assuming it could identify my name out of all that content, this match could have come from my blogging.

When I contacted Turnitin about this back in 2005, they told me I would have to remove my paper. I re-explained that I didn’t submit the paper. So Turnitin explained that whoever did put the paper in the system would have to remove it. The guy acknowledged the difficulty of the situation in identifying who posted it.

Stalking Students

On the BLKBRD-L email list is a discussion about proving students are cheating. Any time the topic comes up, someone says a human in a room is the only way to be sure. Naturally, someone else responds with the latest and greatest technology to detect cheating.

In this case, Acxiom offers identity verification:

By matching a student’s directory information (name, address, phone) to our database, we match the student to our database. The student then must answer questions to verify their identity, which may include name, address and date of birth.

The institution never releases directory information so there are no Family Educational Rights and Privacy Act (FERPA) violations.

However, to complete the course work the student is forced to hand over the information to Acxiom, an unknown and potentially untrusted party. Why should students trust Acxiom when institutions cannot be trusted?

Due to the decentralized nature of IT departments, higher education leads all industries in numbers data breach events. Acxiom’s verification capabilities were designed so that student and instructor privacy is a critical feature of our solution. Institutions never receive the data Acxiom uses in this process. They are simply made aware of the pass/fail rates.

In other words, high education institutions cannot be trusted to handle this information. No reason was provided as to why Acxiom can be better trusted. Guess the people reading this would never check to see whether Acxiom has also had data breaches.

This Electronic Freedom Foundation response to Acxiom’s claims their method is more secure was interesting:

True facts about your life are, by definition, pre-compromised. If the bio question is about something already in the consumer file, arguably the best kind of question is about something that is highly unlikely to be in one’s consumer file and even useless commercially–like my pet’s name.

Answering these kinds of questions feels like more of violation of than a preservation of privacy.

Voting Rights Act

The Voting Rights Act of 1965 protects people from malicious actions by state and local governments to prevent people from voting. Yes, we have a president of African-American descent. Yes, the United States Supreme Court took no action. However, the majority opinion statement that, “We are a very different nation,” suggests it could be repealed. The argument against maintaining the law seems to be since governments are behaving now no law is needed.

Are they? The DOJ disallowed a Georgia program to cull voters from the databases who might not be citizens. This strikes me as just like the Florida Central Voter File program in 1998-2006 to cull ex-felons from voter lists. Since they just used names, it was highly inaccurate and wrongly disenfranchised thousands in 2000… in Florida… the state which made international headlines as the place unable to count ballots. When Congress renewed it in 2006, “It held extensive hearings and produced voluminous evidence that minority voters continue to face significant obstacles.” [NYT] I may have to go looking for this in the Congressional Record.

With the protests happening in Iran right now about voter irregularities, is this the time to repeal one of the few deterrents against future abuses to erode the significant improvements over the past 40 years?

Facebook Usernames

If you cannot find me, then you are not looking. If you search on Facebook for Ezra Freelove, then I am the only result at the moment. Maybe all you knew was Ezra and the city where I lived? Facebook search is not so great you could find me through my first name plus something else you knew about me (other than email or city). Probably this is for the best. We don’t want to make it too easy to stalk people, right?

Allowing users to make a username is a promotion. The blogosphere making a fuss over all this is a Chicken Littleesque. Sure Myspace, Twitter, and a number of other sites have addresses with usernames in them. No one is forcing people opposed to having one to make one. Only in the past month could one choose a username for one’s Google profile. Prior to that it was a hefty large number of numbers.

I think the reason some people prefer usernames comes down to elaborative encoding. To retain something in memory, we associate that something with existing items in memory. Short-term memory has only about 7 slots and digits are each a single item. Assuming a single incrementation per account created and over 200 million users, using a numbers means there ought to be 9 digits worth of numbers to memorize. Words occupy a single slot in short term memory, by far simplifying remembering. Which would you rather try to remember 46202460 or ezrasf?

An argument against usernames comes down to using the memory of the Facebook database or other computer memory. Computer memory is better than human memory for stuff like this.

All of these work and go to the same place:

  1. http://www.facebook.com/profile.php?id=46202460
  2. http://www.facebook.com/ezrasf
  3. http://www.ezrasf.com/fb

Pick your poison. Enjoy.

Microsoft Outlook 2007 Wishlist

From 2001 to 2006, Microsoft Outlook was the email client I used for work (and on my home computer to access work stuff). Back then, Exchange was not available, so a number of the features were more hacks than reality. However, it worked pretty well.

When I changed jobs, Netscape and Thunderbird were the pre-installed clients. I opted for Thunderbird. It worked pretty well for me. Calendaring was in MeetingMaker. Everything worked pretty well.

Recently work shifted to Exchange, so going back to Outlook made sense. Maybe because I have so much experience, the transition was not as bad as it might have been. Still… These are gotchas which have annoyed me lately:

  1. Editable subject usability: The emails from our client issue tracking system put the description where its hidden. I was really pissed that I could not edit the subject until I figured out unlike most software which changes the shading to show it is now editable, Outlook just lets me edit at any time. Also, editing the subject after it is used by something else like a task results in the change in the email but not the task. (The main reason I want to change them is so it appears correctly in the task list. ) Copying to a second email results in the same problem. Apparently I have to either create a new task and copy-n-paste the subject I want or forward the email to myself.
  2. Spacebar moves to next message instead of next new message: I really like the Thunderbird method of skipping to the next unread message when I hit the spacebar at the end of the current message. It even will find the next unread message in another folder. Outlook just advances to the next message.
  3. Boolean is more than OR: I had this fantastic Thunderbird filter which looked for user@ AND domain.tld. Outlook only honors OR. We have 15 admin nodes and databases which send up reports. Alerts and tickets come from a different source and unaffected by this.
  4. Search ignores special characters: I thought in the past I had sent email to abc-defghi@domain.tld. However, the message bounced, so I searched my email for part of the address “abc-defghi” as its not in the address book. I got results which match “abc” not “abc-defghi”. So it ignored the hyphen and everything after. FAIL!
  5. Send email as plain text or paste a plain text: Yes, I know lots of people have HTML capable clients. I hate Outlook puts my replies in a sickly blue font. When I copy and paste from the elsewhere in the message, it changes the font. So then I have to go and do formatting to have a presentable email. I just want to type and send. I don’t care about fonts, colors, etc. If I did, then I would create a web page. … (Added 2009-JUN-03)

That’s it for now.

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.

Most Wired Teacher

“Who is the most wired teacher at your college?” (A Wired Way to Rate Professors—and to Connect Teachers)

Although the university runs workshops on how to use Blackboard, many professors are reluctant, or too busy, to sit through training sessions. Most would prefer to ask a colleague down the hall for help, said Mr. Fritz.

Professional support is too intimidating, cold, careless. Support fixes the problems of others who created problems for themselves:

  • choices made in software to use
  • configuration choices
  • mistakes logic in processing

The concept of identifying the professors who most use the system is a good one. We already track the amount of activity per college or university in the University System of Georgia. The amount of data (think hundreds of millions of rows across several several tables)  would make singling out the professors a very long running query. Doesn’t mean it is a bad idea. Just don’t think it is something we would do with Vista 3. We probably could with Vista 8 which uses a clean database.

I’d like to see two numbers:

  1. Number of actions by the professor
  2. Number of actions by the all classes the professor teaches

Ah, well, there are lots of other reports which need to be done. Many more important than this one. 

Some questions from the article: “Will colleges begin to use technology to help them measure teaching? And should they?” At present, to create such reports, IT staff with database reporting or web server skills are needed. Alternatively, additonal applications like Blackboard Outcomes System can provide the data. The real problem is the reliability and validity of the data. Can it really be trusted to make important decisions like which programs or employees are effective.

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.


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.


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.


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

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

• 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.