This Linux tool is my new best friend. We get thousands of XML files from our clients for loading user, class, and enrollment information. Some of these clients customize our software or write their own software for generating the XML.
This means we frequently get oddities in the files which cause problems. Thankfully I am not the person who has to verify these files are good. I just get to answer the questions that person has about why a particular file failed to load.
The CE/Vista import process will stop if its validator finds invalid XML. Unfortunately, the error “An exception occurred while obtaining error messages. See webct.log” doesn’t sound like invalid XML.
Usage is pretty simple:
xmllint –valid /path/to/file.xml | head
- If the file is valid, then the whole file is in the output.
- If there are warnings, then they precede the whole file.
- If there are errors, then only the errors are displayed.
I use head here because our files can be up to 15MB, so this prevents the whole file from going on the screen for the first two situations.
I discovered this in researching how to handle the first situation below. It came up again today. So this has been useful to catch errors in the client supplied files where the file failed to load.
1: parser error : XML declaration allowed only at the start of the document
 <?xml version=”1.0″ encoding=”UTF-8″?>162: parser error : EntityRef: expecting ‘;’
<long>College of Engineering &; CIS</long>
(Bolded the errors.) The number before the colon is the line number. The carat it uses to indicate where on the line an error occurred isn’t accurate, so I ignore it.
My hope is to get this integrated into our processes to validate these files before they are loaded and save ourselves headaches the next morning.





The Twitter Timesink
May 6, 2009 in Twitter by Ezra S F | No comments
Glenn asked: “What is it about Twitter that makes it more of a time sink than Facebook?”
I consider a time sink something where I invest a high value of time for boring and poor value.
My contacts mostly duplicate in Twitter what they provide in Facebook. The time I spend reading Twitter posts I’ve already read in Facebook is a waste of my time. My Twitter contacts respond about a 1/5th as much as Facebook users (it used to be higher in Twitter). So I get more out of Facebook.
Twitter Replies suck. The Replies system makes it look like my contacts reply much more to me than others which I find highly unlikely. More likely the Replies implementation stifles conversation by requiring either everyone to be public or to allow all the participants to follow each other for there to be one conversation. Instead its many different (sometimes hidden) duplicate conversations. Facebook comments are attached to the status update so following a conversation is significantly easier.
Twitter Apps suck. Last Friday, I looked at Facebook Connect for AIR. My complaint about it was my interactions with Facebook would be as limited as Twitter. The promise of Twitter apps is to do more than the Twitter.com web UI provides. Many just provide easier ways to do the same thing: see your Twitter timeline. Others let you see quantification of your usage. Facebook apps by contrast provide access to content not within Facebook, so more of the web because part of my Facebook access so I can actually do more.
Except Socialthing and Tweetdeck. They are exemplary implementations of Twitter Apps. They extend the functionality of just Twitter by itself and are primary reasons I kept at it for so long. Socialthing unofficially died a while ago and official stoppage of support was announced last week while I wasn’t using it. Tweetdeck probably will stick around for a while.
Twitter lacks granular privacy. In Twitter, either you are private or public or ban specific users. I’m torn between public and not. So I opted for private with sneezypb where I mostly subscribe to friends. My other account, ezrasf, was where I subscribed to Blackboard community members, educational technologists, etc. Facebook could improve some in privacy as well. Compared to Twitter, Facebook makes a great attempt at granular privacy. Plurk, another microblogging / status update site, represents the privacy Holy Grail for me. It allows for making specific posts public, private, available to groups, or individuals.