Wednesday, June 15, 2011

gaaa....Powell Technical Books is closed


In yet another sign of the times, Powell's Technical Bookstore is now closed. This happened last fall, I believe, but I just came across it when attending Code4Lib Northwest in Portland earlier this week.

There is a much-smaller (relative to the previous Technical Books) Powell's 2 location, with computer and science books. This store is on the same block as the large Powell's store.

I'm learning to love reading on my Kindle, but I'll miss the bricks-and-mortar stores, no doubt.

Tuesday, June 7, 2011

customizing stop words in XTF

I've been immersing myself in the inner workings of the California Digital Library's XTF platform. I expect to make a number of changes to my XTF-based Naval Reactors History Database service in the next few months, in preparation for a fall LITA Forum presentation. The change described in this post is actually pretty trivial - adding a customized stop words list for an XTF instance - but it illustrates the kind of back-end customizations that are possible.

I decided to use the stop words list provided on the SEO Tools website.
To employ the index in XTF, I copied the file to xtf/conf/stopwords directory, replacing the existing stopwords.txt file that was included in the release version of XTF with the one that I obtained from the SEO Tools site.

I then stopped Apache Tomcat and rebuilt the XTF index. A clean build is recommended, as described in this XTF users group post. (I received the error described in the message before restoring to a clean build.) Upon restarting Tomcat, the new stop words list is in use.

Tuesday, May 3, 2011

using Amazon Web Services features to improve EC2 and EBS resource durability

I run the Naval Reactors History Database, a hobby project, on Amazon Web Services resources. This includes a Linux server, persistent storage, and an IP address. I run them out of the AWS East region, which was the region at the center of the recent and significant AWS outage. While my online resource never had an outage, to the best of my knowledge, it's clear that it could have been impacted because of the EBS control plane that supports availability zones across the region. Also, Amazon announced that a small amount of EBS volume data had been lost in the affected Availability Zone.

So, this weekend I spent some time thinking about preserving the work that I've done with my Naval Reactors project. This is in the context of an online database that I'm slowly building, with objects being added and updated as I find the time on weekends and evenings. In short, it's a fairly static resource. In his book on Amazon Web Services, Jeff Barr notes the importance of creating lists. That's what I hope to have out of my own work - a set of lists that I create and can use in order to recover from AWS outages like the one that occurred last month.

So, to begin. First scenario: I am running an m1.small Linux instance in the us-east-1d Availability Zone (AZ). It's possible for me to launch and test a copy of my current server in another East availability zone. All of this work is done in the Amazon Web Services console, so it's quite quick and easy:

1. From Instances: Create an AMI from the running instance (what I'll call the production instance). There is a short (estimate 1-2 minutes) of server downtime as the AMI is generated.

2. From AMIs: Choose to launch an instance from the newly-created AMI. When going through the creation steps, I change the default selection for the AZ and choose to run the new instance in us-east-1b. I choose to keep the same Key Pair Name and Security Group as I have for the production instance.

After launching the instance, I have an EBS-backed Linux instance running in us-east-1d (production) and an instance running in us-east-1b (backup). The AZs have independent power and network connectivity. While the incident report describes how problems in one AZ can potentially impact others in the region, having this server running in another AZ provides a resource backup and a method for bringing my online database back online in the event of an outage.

3. Using the public DNS address, I test access to the Tomcat-based Naval Reactors History Database on the backup server - with success.

Note: I didn't generate an Elastic IP address for this instance. First, it wouldn't make sense in the context of my use - I would use the Elastic IP address currently mapped to the production server and would map this address to the backup server in the event of an outage. But second, you should be aware that you will be charged for an unused Elastic IP address that you've allocated to your account.

4. Stop the EBS-backed backup server instance.

Result: production server running in AZ us-east-1d; backup server stopped, but ready to start and serve resources, in AZ us-east-1b.

I performed all of these steps successfully today.

---

This is one method of providing redundancy. But I want to come up with something a little more sophisticated - in part because I am interested in moving to a new server OS and more robust EC2 platform in the future. Here's a second scenario, in which I build a new instance to host the collection and attach a volume with the needed data to it - all in a different AZ than the production server is running in.

Steps 1-5 and 8-9 below are performed in the AWS Management Console - including step 5, which I'll comment on later.

1. From Volumes: Create a snapshot from the production server's EBS volume.

2. From Snapshots: Create a volume from the EBS snapshot. Again, since the production server is running in us-east-1d, I create the new volume in us-east-1b.

3. From AMIs: Find the right AMI for the future production server. In my case, I'm looking for a Linux OS AMI that I'm comfortable with, preferably with Apache Tomcat preloaded.

4. From AMIs: Launch an instance using the AMI found in step 3. I'll be mounting the volume created in step 2, so I will manually set the instance's AZ to us-east-1b.

5. From Volumes: Here, I will attach the volume created in step 2 to the instance launched in step 4.

6. In the new server's Linux OS, Create the mount point location and mount the attached volume:

mkdir /mnt/prodata
mount /dev/sdf /mnt/prodata

7. Copy the XTF and Naval Reactors History Database files from the just-mounted volume to the Tomcat location on the new production server.

8. After testing, use this server as the new production server and map the Elastic IP address to the server.

9. Stop, and terminate when comfortable doing so, the previous production server.

I had initially planned to perform step 5 using the EC2 command line tools, but it's vastly easier to use the AWS Management Console.

---

My conclusions: The second method provides an important foundation for ensuring the durability of my EC2-hosted online collection. Amazon's detailed report on last month's outage includes this statement: "For example, when running inside a Region, users have the ability to take EBS snapshots which can be restored in any Availability Zone...."

I'm still exploring how to best automate the process of creating snapshots and restoring a volume in an AZ that's different than the production server is running in. What I have, as a primary protection at this point: From the second procedure, my production service running in one AZ and an EBS volume containing my application and online collection data has been restored and is available for use in a second AZ.

Also, I plan to do more reading on AWS best practices. I'm sure that I can improve upon the above procedures, but this is what I came up with based upon my current knowledge.

Tuesday, April 19, 2011

last day as Northwest Digital Archives database manager

Today, the Northwest Digital Archives infrastructure was transferred from Washington State University to its new home at the Orbis Cascade Alliance. I've learned a lot supporting the NWDA since 2003 - it shapes my work, from the management of digital resources to my recently-started hobby project, the Naval Reactors History Database.
Right now, I'm reading an article, in the current Library Resources & Technical Services, that helps to illustrate the important role that archivists can play in the current preservation demands that research libraries face - including the preservation of research materials in digital format. The article is authored by a team that includes archivists and a librarian, and the literature review cites work that I've become familiar with through the NWDA program (such as the Trusted Digital Repository Checklist, or TRAC).
It was a fun, but challenging experience; I'm sure the NWDA program will prosper in the years ahead.

Sunday, April 10, 2011

worldcat local usability results from OCLC

I've had the chance to read the most-recent usability results for WorldCat Local. I found this document extremely helpful, particularly since this round draws upon usability testing performed on 40 faculty, student, and library staff users at five academic institutions. It's completely logical for OCLC to perform this testing at the network level; in today's tight fiscal environment for libraries, this work is more important than ever.

Washington State University's WorldCat Local service is constantly evolving. A good example of this is enabling access to electronic resources. On this topic, the report notes that users prefer hyperlinks to an OpenURL button on the WCL detailed record display. This is problematic, because in some cases, the links provided in the OpenURL resolver are more accurate than hyperlinks that appear on the detailed record display. A good example of this at Washington State is the PsycArticles database records: the Findit! button presents a link that provides reliable one-click access to the full-text article. The links on the detailed record display, on the other hand, take the user to the journal index page for the CSA and EBSCO databases. This finding underscores the importance of my institution's current work in populating the WorldCat Knowledge Base and using its links over those scraped from the legacy Millennium library system. The study shows that users did feel comfortable in clicking on the WCKB links for electronic resources (which include the words "Full-text" and info on the provider and database).

The concept of "local" receives a lot of attention in the report and it's especially important at the WSU Libraries, where one WorldCat Local instance supports multiple campuses (although the Vancouver campus has built a campus-specific WCL instance, other WSU campuses have not). Testing clearly revealed that users tend to read "local" as the local campus and, in this context, the WCL first-level holdings presentation can be confusing. This would be ameliorated by having a WCL instance for each campus and, as a unified discovery and fulfillment system, this approach makes sense.

There is a discussion on the editions support in WorldCat Local, which is still problematic. The report describes an OCLC goal for presenting editions: the most recent, locally-held edition should be displayed in the detailed record by default.

The report also describes some label changes that have been made in the last year, on several displays, and the fact that format facet support is now available for the "all editions and formats" display. I found it useful to review these, particularly in showing the ongoing evolution of the WorldCat Local service and in understanding the motivation behind each change.

There are two areas that aren't covered in this report, and which are serious issues in terms of WorldCat Local's acceptance at research and academic institutions. The first is duplicate records. This is becoming more problematic as more institutions, like the University of Washington and Washington State University, add third-party databases to their WorldCat Local default search. This leads to more duplicate records in search results. It's my understanding that OCLC is working on a de-duplication strategy that addresses duplicates at time of record loading. I see duplicate records as a manageable problem, though, because modern search services, like Google, can present duplicate entries to users.

The second area is more difficult - the lack of any hits-in-context support. Not only does this impede buy-in to WorldCat Local, but this lack of functionality makes WorldCat Local an outlier relative to other modern search services - which are presenting information on why a record was retrieved. I'm not certain that the seriousness of the hits-in-context problem is clear to the WorldCat Local discovery team. In contrast, the report notes that known-item searching performance is a problem that OCLC is working to address.

Despite these two omissions, this report is very valauble to my institution as the WSU Libraries moves forward to enhance search and fulfillment services. Assessment is another discovery/fulfillment-related task that can, to a significant degree, be moved to the network level. This is shown by the last two summary reports created and released by OCLC.

Monday, April 4, 2011

data curation profiles workshop

This morning, I'm attending a workshop of data curation profiles at the University of Washington. Based upon my reading, and prior to the session's start, I can say that this is a little out of my comfort zone. This site provides a good launching point for the purpose of and past work with data curation profiles.

Saturday, March 12, 2011

a great book for the fundamentals of Amazon Web Services...

I read Jeff Barr's book on Amazon Web Services (Kindle edition) - using a Droid phone and a Kindle device. My take thus far: this is a great resource for getting a grip on the fundamentals of Amazon Web Services. I worked extensively with some AWS services (S3, SimpleDB, and EC2) and applications like SDB Explorer and Bolso prior to reading the book, but I can still say that I've learned quite a bit from this book.

The code for the programming examples is in PHP. Making the examples work on your system requires creativity at some points. The author states his technical expectations early in the book and it's expected that the reader has a base proficiency with PHP, along with some system administrator skills. I found it fastest to download and use the CloudFusion code on GitHub; I'm running the examples on a Fedora 8 EC2 instance.

Barr uses the "programmable data center" concept to explain cloud computing, and when you get to chapter 5 and run the EC2 API example in PHP, it's an empowering feeling. At that point, theory and practice come together. This script ran successfully (launching an EC2 instance, claming and mapping an IP, then creating and attaching EBS volumes programatically) the first time I ran it. Likewise, the modular application (using SQS) that scrapes web site images and creates composite pages gave me a sense of AWS' potential.

I have to say that I hit a wall just beyond the halfway point in this book, when it came to getting the AWS CloudWatch code functioning. At this point, to move forward with this section (CloudWatch, EBL...), I feel that I'll have to learn more about the CloudWatch API. In this case, I feel that the book and code sample explanations for working with the CloudWatch API are insufficient. (I got the command line tools for CloudWatch running, but not the PHP code example, particularly listing measures. Couldn't fix it by googling or reading on the AWS PHP SDK documentation.) In short, I had to skip most of the chapter and just go on.

There are chapters covering SimpleDB and the RDS (Relational Database Service). For SimpleDB: I found myself using the book examples as a launching point for building my own small SimpleDB applications. You can take Barr's code examples and the SimpleDB API documentation at URL http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/ (API Reference/Operations) to programatically work with SimpleDB as needed for your project. That is, you can use the object-oriented code examples and the Request and Response information to create the needed applications - which illustrates the programmable data center concept better than anything.

Overall, highly recommended. I found some challenges in working with the Kindle edition, in terms of viewing illustrations. I found it possible to run most, but not all, of the code examples in the book. And I'm much more proficient with and knowledgeable about AWS than when I started readng it.