Nexus: The Canadian Student Journal of Anthropology

We are launching another student journal in Digital Commons - Nexus: The Canadian Student Journal of Anthropology. The first few issues of the journal have been loaded today. The journal goes all the way back to 1980, so it will be a bit before it is all up online. Also of note, this is an open access journal.

Nexus is a graduate student-run publication from the Department of Anthropology, McMaster University, Hamilton, Ontario, Canada. For nearly thirty years Nexus has provided a forum for quality student work from Canadian and international colleges and universities.

Nexus attempts to present a cross section of current student work from any area of anthropology, and to advance scholarship through anonymous peer review.

The journal is located at - check 'em out!


Drupal/Digital Collections/Images

The Image API was recently released for Drupal 5, and changed a lot of things. During my updates (and redesign), I thought it might be a good idea to provide a sort of "how to" for images in Digital Collections. First thing first, make sure you have CCK! Also of note, for each collection that I've setup with CCK, I created a new imagefield for each one, and provided it with a directory in the "files" directory. So for example, the Peace and War collection has its own image set, and the concentration camp correspondences have their own set.

Modules needed:

Eye Candy Modules:
ImageAPI Reflect

So, install and enable all of the modules listed above, then run update.php. After you update, browse to Administrator > Site Configuration and select ImageAPI. From here you can choose to use GD or ImageMagick. Then proceed to select Image Toolkit under the same section to select your image quality.



Next you just setup your image field for you content type (Administrator > Content Management), and select how you want to display it.


If you want to do the fancy eye candy like this:

Browse to your Imagecache settings (Administrator > Site Building > Imagecache) and setup a scale, and setup a reflection. If you have a white background, change the background RGB color to 255,255,255.



Woah! It's Stallman in Toronto!

Richard Stallman - "Copyright vs. Community" Feb. 2, 2009

0 Freedom to run program
1 Freedom to study source code
2 Freedom to distribute software
3 Freedom to contribute to the community

  • its social system is ethical
  • proprietary is unethical

What should copyright law let you do? (age of printing press vs digital age) - spent a while discussing the history and evolution of copyright

  • copyright is no longer a industrial regulation
  • reduce copyright power
  • copyright should be much shorter - stallman suggests 10 years from date of publication (more than 3 times the publication cycle)

What copyright should cover?
    Type of works:   

  • works of practical use - these works must be free, when you use these works to do your job, you do not have control over your life
    • free to publish your own version... this includes software
    • works of reference
    • educational (text books)
  • works of testimony (opinion) - commercial use and modification require permission, non-commercial free to share exact copies
  • works of art & entertainment
    • modification can destroy artistic integrity, or it can be a contribution to art
    • [shakespeare would have violated copyright]
    • commercial use and modification require permission, non-commercial free to share exact copies [same 10 years]
  • All copyrighted works must be shareable - to try and stop it, is an attack on society
  • Governments are abandoning all sense of justice in prosecuting offenders
  • A system that supports artists better
    •  A tax - distributed to artists [based on popularity in a non-linear way (take the cubed root of artists popularity)] THE GOAL IS TO SUPPORT THE ARTS
    • voluntary payments - sent directly to the artists  ["people are not the greedy bastards that economists claim that they are!"]
    • A friendly and kind PR campaign, don't accuse the public of piracy, "did you band a band this week ;)"

DRM attacks freedom

  • takes away your legal rights to use the works
  • publish the works in a secret format, so that only proprietary software can play it
  • AACS (Blue ray) is absolutely evil.  Sony PS3

intellectual property is a ridiculous term, it confusing copyright, trademark, patent, and many other laws,  each needs to be approached independently  



Drupal & Digital Collection Sites - 2

Ok, more Drupal stuff for Digital Collections site. I'll yammer on about "must have" modules in this one. Hit the snooze button if you'd like. Oh, and this is in addition to the ones I mentioned in the previous post... Community Tags, Tagadelic, Service Links, Faceted Search, Views, Zen Theme, Quicktabs, and of course CCK.

First thing first, CCK add-ons:

  • Audio Field - Defines audio field type for CCK content.
  • CCK Fieldgroup Tabs - Display CCK fieldgroups in tabs. Enables splitting up content onto tabs in both editing and display.
  • EMail - Defines an email field type for cck
  • File Field - Defines a file field type.
  • File Field Meta - add metadata gathering and storage to file field.
  • Image - Defines an image field type.
  • Media Field Display - Adds display options for media fields.
  • Node Reference - Defines a field type for referencing one node from another.
  • Number - Defines numeric field types.
  • Text - Defines simple text field types.
  • Video Field - Defines video field type for CCK content.
  • View field - Defines a field type that displays the contents of a view in a node.

Category - combined with CCK, are two absolute must have modules for doing digital collections. You *MUST* have some way to organize your collections - this is the module. Set up a container for each collection, the categories for your different "themes" and sub-categories, and sub-sub-categories. It goes on and on, but this is the way to do it.

Devel - is a great development module for... you guessed it DEVELOPMENT! Seriously, it is great. You get feed sooooooo much output. Arrays, beautiful arrays!

Feedback 2.0 - allows site visitors and users to report issues about this site. We use it internally for tracking issues with metadata creation, and technical issues during digital projects.

Node Import - this is perfect for those silly Filemaker pro databases "some" people start out with. Requires quite a bit of patching to get it to work with cck image field, but well worth it! Ingests the standard csv, tsv files and allows you to map them to specified cck fields.

Nice Menus - works with the standard drupal menus setup. It additionally provides the ability to have horizontal and vertical menus. It is mostly css, and little javascript. The css is highly customizable, so you can easily make it work with your theme.

Front Page - allows you to go further than declaring a node in your settings.php file for the front page. If you are feeling all early 21st century and want to rock a flash landing page, this is the way to do it. Or, can just use it for deciding what users see what front page.

ImageCache - allow you preprocess all your images on the site with ImageMagick.


Google Analytics - ...well you probably know all about google analytics, if not, for god's sake sign up for an account! Very nice features, track certain users, certain content, restrict content, etc.

Printer-friendly pages - is perfect for all of those text heavy case studies. Destroy the environment and print it out to read it later.

Sections - is perfect for theming "sections" (collections) of the site. Each section can have an installed template, theme or style attached to it.

Pathauto - ...I'll just quote from the description, "The Pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a "pattern" system which the administrator can control."

Automatic Node Titles - is perfect for all those thousands of records that you don't want to scribe titles for. You can pull from fields and create a title. So, something like this: Creator, source, date - which is done with a php script:

$token = '[field_creator-formatted]';
if (empty($token)) {
return htmlspecialchars_decode("[field_source-formatted], [field_date-formatted]", ENT_QUOTES);
}else {
return htmlspecialchars_decode("[field_creator-formatted], [field_source-formatted], [field_date-formatted]", ENT_QUOTES);


Well, that is it. Next one will be on the custom/customized modules. Don't worry, I'm not going to beat a dead horse and talk about the OAI module again.

Fuppes on OS X

Dr. Finkopolous put me on to fuppes last night. Basically it is a way to stream content to your xbox 360 via uPnP, yay! So, no more huddling around the laptop watching movies. The fat Sony tube tele gets a stay of execution and that puts off the NEED for the huge LCD monitor. It appears to be fairly easy to install on linux, but my linux box is on its own internet connection, and the xbox and two mac laptops are on another. So, begins the joy of getting this thing to compile in Leopard 10.5.5, and MacPorts 1.700. First thing is first if you are trying to set this up in OS X, make sure you have MacPorts installed AND you'll need to have X11 installed to install MacPorts.

Go to the fuppes site, and download the tar file, and follow their Linux instructions to get going. I'm assuming you'll get to make and it just fails. After some digging through a couple fuppes forums posts, most of it is dependancies, and then correcting includes in source files.

Make sure your up to date with MacPorts:
sudo port selfupdate

You'll probably need these packages: pcre, sqlite3 for ./configure to work so:
sudo port install pcre

I ended up installing a bunch of other dependancies, gawk, mawk, FLAC, ffmpeg, faad2, twolame, simage. ./configure should work now, with the ffmpeg option. Make should fail spitting out something like this:
lib/ContentDirectory/FileDetails.cpp:46:24: error: avformat.h: No such file or directory
lib/ContentDirectory/FileDetails.cpp:47:23: error: avcodec.h: No such file or directory
lib/ContentDirectory/FileDetails.cpp: In member function 'bool CFileDetails::GetVideoDetails(std::string, SVideoItem*)':
lib/ContentDirectory/FileDetails.cpp:319: error: 'AVFormatContext' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:319: error: 'pFormatCtx' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:321: error: 'av_open_input_file' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:326: error: 'av_find_stream_info' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:328: error: 'av_close_input_file' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:333: error: 'AV_NOPTS_VALUE' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:337: error: 'AV_TIME_BASE' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:368: error: 'AVStream' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:368: error: 'pStream' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:369: error: 'AVCodec' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:369: error: 'pCodec' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:371: error: 'avcodec_find_decoder' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:375: error: 'CODEC_ID_MP3' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:381: error: 'CODEC_ID_MPEG2TS' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:405: error: 'CODEC_TYPE_VIDEO' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:410: error: 'CODEC_TYPE_AUDIO' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:414: error: 'CODEC_TYPE_DATA' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:416: error: 'CODEC_TYPE_SUBTITLE' was not declared in this scope
lib/ContentDirectory/FileDetails.cpp:424: error: 'av_close_input_file' was not declared in this scope
make[2]: *** [FileDetails.lo] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

So, time to find some files. Check out the output, it can't find avcodec.h and avcodec.h in FileDetails.cpp. So what you'll need to do if find the right path to the suspect files.
locate avcodec.h

Copy the path, then:
vim ../src/lib/ContentDirectory/FileDetails.cpp

Find the include, and add the path, save and quit. Run make again, it will probably fail again. Just look at the output, find the files it is complaining about, locate them, edit the file that calls them, and include the path. Once you have done all of that make should run fine. The rock sudo make, and you should be able to run fuppes!


Drupal & Digital Collection Sites - 1

I have written about Drupal & the Digital Collections site ( a few times now, but haven't really explained how to make a digital collections site out of Drupal. So, without further ado...

What are the necessities of a digital collections site?

What are some additional features that have become necessary?

  • Tagging
  • Social Bookmarking
  • Faceted Searching
  • Visually rich environment
  • Profiles, internal site bookmarking
  • Contact forms, Image requests, Questions
  • Commenting
  • Content Recommendation

So how do you do all of this with Drupal - sans JPEG2000 support (working on that now)? Well, if you are familiar with Drupal, you should know that it is an open source, modular content management system with an amazing support & development community. A standard out of the box Drupal installation will not yield a digital collections site - additional modules are absolutely necessary. Time, effort, and some coding with have to be done, but it is well worth it. The key to all of it is the Content Construction Kit (CCK). Briefly, CCK allows you to create your own fields for a node. So, here is where we get the ability to have all your standard Dublin Core fields, and any other unique metadata a collection will need to be able to present. What I have done with my site is setup a Content Type for each collection. Each content type shares the standard Dublin Core fields (very helpful for massaging an OAI module for digital collections out of an available OAI module), then they have their own unique additional metadata. For example, the World War II German Concentration Camp and Prison Camp Collection has metadata fields for Prison, Sub-Prison, Prison Block, etc.

I have written about the OAI module a couple of times, but essentially what I did is take the OAI-PMH Module, which is an interface for the Bibliography Module, and rework it so it interfaces with the CCK fields I created for the standard Dublin Core fields. I have not had the time to generalize it, (I hope to in the future if time is willing!) so it is hard coded to my collections right now.

Searching is a built in feature of Drupal. Drupal does a pretty good job of creating a search index for itself, as well as advanced searching features. With content types for each collection, users can limit their search to a specific collection or a site wide search.

Browsing a collection can be done by setting up categories and containers for a collections, then placing each record under a specific collection when creating the records or doing a massive mysql update query if you have imported a number of records to start with. Also, for custom browsable options I have used the Views modules to create views for specific metadata fields, and limited them to a collection. Also, the Faceted Search module allows you list all of the fields you would like exposed to faceted search, thereby allowing a user to browse by a variety of field types.

Not too much to say about JPEG2000 support right now. There are two possible scenarios that I am brainstorming with. The first one is Lizard Tech. Before I started here, the Library had purchased a Lizard Tech Express Server license in order to display the mrsid images for the World War I trench maps. The new version of the Lizard Tech server supports JPEG2000, and has an API that I should be able to get Drupal to work with - fingers crossed! The other option is the aDORe djatoka open source JPEG2000 server. I planned on working on this at the Access 2008 Hackfest, but got distracted with SOPAC and Evergreen.

So, now for the rest - additional features...

Tagging is done with the Community Tags module, and tag clouds are created with Tagadelic.

Social Bookmarking is done with the

Faceted Searching is done with the Faceted Search module.

Visually rich environment is done with a variety of modules and custom template coding. Modules that assist in making this possible include; Views (and many views sub-modules), Zen Theme, jquery, Highslide, and Tabs & Quicktabs.

Profiles, internal site bookmarking... user accounts are a standard feature of any content management system. With Drupal we used a custom view and a user hook to allow registered users to bookmark any record to their account.

Contact forms, Image requests, Questions is done with the Contact Form module. Here users can ask questions about records, request images, a report and problems with the site or records.

Commenting is another build in feature of Drupal. Comments are allowed on every record on the site. Unregistered/Anonymous users have to deal with a CAPTCHA, where as registered users do not.

Content Recommendation is done with the Content Recommendation Engine (CRE). This modules interfaces with a number of other modules. The main one that I utilized is the Voting API. The Voting API combined with the CRE allows for a digg like feature on each record. Each record has a Curate It! link, items that have been "curated" are then featured on the Items Curated Page. Drupal also has a popular content feature as well that I utilize.

So, that is pretty much it for the bullet points listed above. I will have another post or two about Drupal in digital collections. Once featuring the all of the modules that I take advantage of, and another covering any questions anybody has.

IR Update

It has been a while since I have done an IR update. So, the UPDATE: 3 new e-Journals, 2 in the works, and 2 books from the anthropology department have been published to the IR. Also, the big news is we have a Scholarly Communications Librarian now - Barbara McDonald - who will be the spokesperson for the IR. So, now I can concentrate more on the technical side of the project. Also we have launched Selected Works. It is basically a standardized faculty page that allows faculty to manage their work, upload new documents, generate readership reports, and send mailings. Additionally, it integrates with the IR (Digital Commons). So, I can pull from faculty SW sites into the IR. I also nervously gave a presentation at the Learning Technologies Conference this week on Digital Commons. The presentation can be found here.

The new Journals:

18th Century Fiction -
The McMaster Journal of Communication -
Esurio: Ontario Journal of Hunger and Poverty -

In the works:

Nexus: The Canadian Student Journal of Anthropology
Journal of Ethics in Mental Health

Selected Works Gallery -

McMaster University e-Journals