Archive for October, 2005

24 Octobris 2005

Here goes…

Today I wrote up an outline of a half-day JCDL workshop and sent it to my potential co-conspirator, who would be doing another half-day designed to be a sequel to mine.

Hoping it flies… because it’d be really fun to do, and the right kind of people would find it very useful. Very much the kind of thing that saves hours of swearing.

The thing about this career-changing business is building up one’s name again. I had a fairly decent name in e-publishing. Librarianship doesn’t know me from Eve.

Yet.

I wouldn’t call it a daunting prospect exactly, because hell, I’ve done this before with a good deal less to go on than I’ve got now. I trust myself to see opportunities when they appear, and not to screw them up once they’ve crossed my radar.

I just need to quit kicking myself for not having rocketed to stardom already. Three months isn’t enough time, and stardom isn’t anything I’m all that keen on anyway.

Band-aid

I have a band-aid fix to the bug I filed. It’s so terribly ugly that there’s no way I’m going to submit it as a patch. I spent two solid hours trying to find anything that worked, though, so at this point I’m kicking it upstairs to the Real Programmers, and rejoicing in a non-shrapnelled inbox.

(I got well over a thousand error messages between Thursday and today. Since I was reading email over the web, and not with my client on Trogool that has an error-message filter, it was a problem.)

To be clear, this is DSpace 1.3.2.

In org/dspace/browse/Browse.java, lines 977 through 989 read:

        if (scope.hasFocus())
        {
            String value = (subqueryValue != null) ? subqueryValue
                    : (String) scope.getFocus();

            statement.setString(1, value);

            // Binds the parameter in the subquery clause
            if (subqueryValue != null)
            {
                statement.setString(2, value);
            }
        }

After much useless futzing around, I replaced them with

        if (scope.hasFocus())
        {
        	try
        	{
        		String value = (subqueryValue != null) ? subqueryValue
        			: (String) scope.getFocus();
		          statement.setString(1, value);
	            // Binds the parameter in the subquery clause
	            if (subqueryValue != null)
	            {
	                statement.setString(2, value);
	            }
		}
		catch (ClassCastException c)
		{
			statement.setString(1, subqueryValue);
			statement.setString(2, subqueryValue);
		}

        }

This is a grotesque solution (it passes a couple of nulls out to the SQL statement in the case that I’m trying to fix), but it does keep the server from spazzing. You may want to go into Messages.properties and edit jsp.browse.no-results.genericScope, because that’s what the crawler will see.

I’d have liked to do better, but I couldn’t figure out just what the heck gets passed in the scope object when an item has been withdrawn. (I tell you what, though, it’s not coerce-able to a String!) So it goes. If any DSpace gurus want to come up with something better, I’m all for that.

21 Octobris 2005

Whimper

Dozens of server-error messages pale to insignificance next to a friend in Cancun and the sudden and wholly unexpected death of a work colleague.

I think I’m going to hide out this weekend and whimper quietly, if nobody minds.

20 Octobris 2005

Never fails

So I take a couple days off work to attend a meeting with a TAG client…

… and DSpace naturally picks today to pitch a horrible screaming kicking jerking tantrum-y fit, to the tune of nearly a hundred Internal Server Error messages in my work inbox.

I think it’s back under control. I hope. My boss worked on it while I was on the metro home, and we’ve been swapping emails since the moment I logged on, shrieked aloud, and started emergency tire-kicking. But I’d meant to do some more work for the client tonight, and that just went out the yellow terminal window I’m using to monitor the situation.

ETA: I think I sussed out what was going on. Filed a bug on it. Fortunately, it’s nothing a human being is going to see; what I think shrapneled my inbox is that a crawler hit a bunch of pages that used to exist but now throw this error.

When I get back in on Monday, I’ll try to reproduce and fix this on the staging server. Wish me luck.

19 Octobris 2005

Finked!

Both my boss and a fellow librarian from outside MPOW let me know about OpenSP as well as Fink, so I am back in the land of markup-validation goodness.

And oh, boy, do I ever love the Fink! Wow! I only had about five minutes to look through all those packages (busy day, lots happening), but I saw all kinds of juicy useful stuff. I’m a convert. Fink rocks.

(Yes, boss reads blog. No, doesn’t bother me; after all, I read his. Eat that, Ivan Tribble.)

Brrrrr, fire drill

When I was a kid, I lived in the South, and I lost an awful lot of coats. I got in more trouble over carelessness with coats than anything else I ever did.

Careless Southern winters were why. It’d be cold when we went out for recess, so we naturally wore our coats. Fifteen minutes later, we’d have warmed up, and discarded the coats on the nearest hillside, forgetting to pick them up when we went in. (I’m sure I wasn’t the only kid to do this.)

Yesterday morning was chilly, and I knew the 45-minute wait for the bus home from the metro after Java class (four more classes! just four more!) would be coolish too, so I wore my black fleece cloak. Come four in the afternoon—the fire alarm went off. I let myself be chased out of the building, carrying my bag. And oh, my, wasn’t it a lovely afternoon. Warm as toast and twice as sunny.

Of course I left my cloak in the building. Of course I did. And of course I had to leave at 4:20 to catch a bus to the metro to Java class. And of course it was a pretty cold (though certainly not dangerously so) wait for the bus home yesterday evening.

18 Octobris 2005

A Monday in the life

Following Jessamyn and my former classmate Amanda, a Monday in the life of a Digital Repository Services Librarian…

Hop off the bus. Pick up a copy of the city daily, which is 10% news, 40% froth, and 50% ads, but contains “Pearls Before Swine” which makes everything worthwhile. In the door, up the stairs; oh, look, I’m first in again. (Heck, I’d come in earlier if it were politically practical. I’m a shameless early bird.) Thread through some twisty-little-passages to the one door to our area that has a number-code lock. Drop bag in cube, fire up Trogool the iMac, go unlock other doors and turn lights on.

(In passing, I practically own the word “Trogool” on Google, which is sad and wrong. It’s Lord Dunsany, people! Look it up!)

Log in to Trogool. Fire up iCal, email, Adium (oh, hush, I’m not slacking; my boss asked me to be available on IM, since we’re in different buildings now), and web browser. Nothing for today in iCal. Deal with email, not forgetting to notify colleague that her article got a nice accolade in the latest Cites & Insights because we all like to hear these things. Scan through the work Bloglines account (which is separate from the home Bloglines account for all the obvious reasons), grab some stuff off Open Access News and Catalogablog to read later.

Another colleague stops by. A problem that came up two months ago and kinda got buried in committee is rearing its head again. Sigh. Email boss; I have no more authority to resolve it now than I did two months ago. Fire up iTunes to keep from ruminating on problem. Boss returns cordial email that boils down to “whiskey tango foxtrot, now?” Explain, revising email four times so as not to sound like whiny idiot. Send email. Realize email sounds like whiny idiot anyway, just slightly less of one. Sigh again; nobody’s perfect, least of all me. Turn up the volume on iTunes, switch away from New Age to salsa collection.

Half an hour until scheduled repository-server maintenance. (I’m trying to be consistent about this, get people used to the idea that server goes down Monday mornings and generally not elsewhen.) FTP latest updates to staging server, ant update, kill staging server, resurrect staging server. Curse JSP for requiring a Tomcat restart just to fix minor stuff like this (seriously, that’s a major drawback in my book; I’d kill to do live updates, the way I can on the blog). New pages showing up, check. Revised navigation works as intended, check. Bitstream description on one-bitstream item works, check. Print preview—hey, where’s my new print stylesheet? Swear under breath.

Oh. Duh. Forgot to put a link to it in the header JSP; I’d tested it on a fake standalone page. Fix, reupload, ant update, kill server, resurrect server, wait wait wait because Tomcat/JBoss takes for-frickin’-ever to restart itself, print preview—there, that’s more like it. Not sure why the new right-hand nav links are the wrong color, but that’s not a deal-breaker. (Turns out to be browser-cached CSS, so no problem.)

Upload everything to repository server at 9:30 sharp, ant update, kill server, resurrect server. Notice one more simple fix. Sigh, fix it, reupload, ant update, kill server, resurrect server. Everything looks good. Edit top-page news to reflect completed maintenance and schedule another for next week. Notice that lists on some pages look weird. Huh. Not sure how that happened. Sigh… and leave it for next maintenance; they don’t look that bad.

Email from boss: he’s on the case. Whew. Back to New Age on iTunes. Skim the daily rag (baby giant panda!) and read through the articles I’d saved, in celebration. Next big open-access conference—is in Australia. The one after that, the UK. Lots of good stuff in Berlin and Geneva, too. Another reminder how backward the United States is (aside from DSpace itself). We have just got to stop dinking around over here; they’re eating our lunch, people!

Checking the to-do backlog, it’s time to write the little squib about the repository for the library newsletter. Duly write little squib. Run it past boss, get prompt OK with one minor and sensible correction. Make correction, forward squib to newsletter editor. Cross squib off to-do list. Remind self for umpteenth time to buy dry-erase board for to-do list; for some reason I don’t pay good enough attention to to-do lists maintained on Trogool.

To-do backlog also includes followup with some people who control rights to some material I want for the repository. Send polite followup emails. Get prompt acceptance back from one person! Yay! More stuff! Email the news to a student who needs to know; answer the question in his reply.

Ponder somewhat longer article for local teaching journal about the connection between open access/self-archiving and the availability of scholarly materials for classroom use. Dig into the mess that the AAP is stirring up at the University of California at San Diego; search Library Lit and Info Sci database for the latest on electronic reserves, which turns out not to be much. Save a few cites anyway. Email campus copyright officer to ask what we ourselves are doing to stay out of similar sticky situations, hoping to get a read on whether local faculty have found themselves balked yet. (Hey, I have to strike where I find hot irons.)

Also ponder workshop for JCDL, since the Librarian LazyWeb kindly sent me slides and reports from previous successful submissions. Receive tentative recommendation of “somebody who might want to do this with you;” respond enthusiastically.

Time to work on something technical, for a change. Dive into DSpace code looking for bits and pieces relating to the bitstream description question. Conclude that yes, it’s possible to kill the silly ticky-box, but it’s somewhat complicated and not a priority just at present, though a meeting on Wednesday morning may change that.

Boss drops by. Problem is being addressed; please handle this small piece of it. Sure thing, and thanks! Handle small piece.

Further research into DSpace code, this time toward the eventual goal of an image-viewer plugin (don’t even ask), swallows up the rest of the day. Lots of cursing-under-breath and consultation of Large Shelf o’ (mostly O’Reilly) Computer Books. (One of these days I need to buy myself the Tomcat book, and the wolf book wouldn’t be a bad idea either.)

Just as I’m getting ready to pack up and go, overhear a conversation about web-app usability. Hey, I got stuff on that. Grab out Rosenfeld and Morville and pass it to the colleague who needs it, making mental note to mention Alan Cooper at first opportunity. Rush out the door so as not to miss bus home.

Realize I forgot to return the library DVDs I’d meant to return. Drat. Well, tomorrow is a Tuesday. I’ll be back.

A note to XML validator writers

Please, please, please, if you’re going to report unclosed-tag errors (and you are), tell me where the start-tag is in the error message!

XML Nanny, which I otherwise quite like, just tells me unhelpfully that a p tag remains unclosed as of the end of the file. Well, duh. Which p tag, dagnabbit? There’s hundreds of ’em in this file!

4XSLT is (understandably; it’s only a validator en passant) even less informative, but Saxon did the Right Thing and told me which line the errant start-tag was on.

I suppose nobody’s compiled SP for OS X? Boy, do I miss SP.

17 Octobris 2005

Wrong tool

I just spent a lot of time uselessly trying to create an XSLT stylesheet that would number sections in an HTML document based on their header level, and build a nicely nested TOC to boot.

Which doesn’t sound too complicated, but is, because XSLT assumes you’ve used nice sane nested markup, and HTML tends to be insanely nested when nested at all.

So tomorrow I shall chuck it all and do what I should have done in the first place: use SAX, which is the right tool.

Out of my bubble

It’s easy to read the statistics. X percentage of research faculty think open access is a neat idea. Y would be willing to post their research materials. Z think they ought to keep their own copyrights.

What’s not easy is smacking one’s nose into not-X, not-Y, and not-Z. What’s not easy is realizing that even among X, Y, and Z, these questions are purely theoretical for most. Sure, they think it’s a nice idea; doesn’t mean they’re aware or willing enough to do anything about it.

I knew I’d need a soapbox. I knew I’d need to evangelize. I honestly didn’t realize how much, not deep in my gut where most of my actual thinking takes place. I live in the middle of open-access evangelism. I read Peter Suber every day. My biggest del.icio.us category (well, apart from “css”) contains open-access linkage. With all this talk floating around out there, how could faculty be ignorant? Surely they’ve seen something.

Then I went to a meeting where open access was confused with open source (my fault, that), where folks were concerned that open access would reduce awareness, where they worried (not entirely without justification this time) that e-publication reduced scholarly cachet.

Oh, my. I have got a lot of education to do.

The hard part is figuring out how to do it. The usual route for information dissemination to faculty—through our liaison librarians—doesn’t make a whole lot of sense, as their typical interactions with faculty don’t offer many opportunities to mention open-access issues. This may change, if publishers sue more universities over e-reserves: “no, you can’t use this link to a proprietary database any more, but you could contact the author and ask if they’ll post the article to a repository…” Given the cost and the annoyance of the lawsuits, though, this isn’t an outcome I’m especially hoping for!

I’m not panicking. The Evil Master Plan actually is proceeding reasonably apace, with one faculty visit definite for next month, and another likely. I’m working on squibs, handouts, an article for a local journal.

The scales have fallen from my eyes, however. This is going to be an uphill climb.