Ariadne just went live with my article about using the Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) from Perl using Net::OAI::Harvester. OAI-PMH is basically a protocol for sharing metadata using HTTP/XML. Net::OAI::Harvester aims to be LWP::UserAgent for the OAI-PMH. The module was fun to write since I got to know XML::SAX better, started to grok how SAX filters work, and spent some time coming up with a class hierarchy that mirrors the protocol. Another fun part was finding a way to provide iterators that return objects based on parts of the potentially huge XML documents. At first I serialized objects on disk while SAX parsing, but used YAML, but in the end went with Storable since UTF8 support still isn't there for YAML.