MarcEdit 5.7 update

By reeset / On / In MarcEdit

I posted a small update to MarcEdit last night (or this morning depending on your perspective).  Changes were as follows:

* 5.7.10

** Bug Fix: Custom Swap Field Function — corrected an error that would cause the targeted field to be sorted out of order. 

** Bug Fix:  Replace All (RegEx) — Corrected a bug that caused non-matching regular expression items to drop data when using the /m switch for matching multiple data fields.

** Enhancement:  Generate Control Numbers:  Added the ability to set the field for the control number to be inserted.  Can be added to an existing field, be added as a repeatable field, or added as a control field.

** Enhancement:  Added Swap Title function to the Edit Shortcuts section.

** Enhancement:  When splitting data, the program will increment file names if like control numbers exist in a file (i.e., two records with the same control number will result in a file called "controlnumber.mrc" and controlnumber1.mrc"


The two most noticeable changes are with the Generate Control Numbers function and the Swap Title Function.

Generate Control Numbers

The generate control numbers function has always been a part of the application – but has always been limited to created control number data in the 001 field.  Likewise, there was a limitation that only allowed data to be generated if an 001 wasn’t present.  The update makes the following changes:

  1. Ability to set the Field or Field/Subfield combination for the data to be inserted.
  2. An option to always insert (allowing for control numbers to be generated if the field or field/subfield combination already exists in a file.  This would be good for adding new control numbers to repeatable fields, like the 035.



Swap Title Data

This request came up a week or two ago.  The question was related to swapping data in the 245$a into the 776$t.  MarcEdit has always included a swap field function which works if the user wants to move all the data in the $a into the new field/subfield pair.  However, in this case, the user wanted to move the title data without the non-filing characters.  The current swap field function does not support that option. 

In considering how to make this change, I ran into a problem – the swap field function is one of the oldest functions in the MarcEdit toolbox and the code is showing its age.  It’s also quite complicated, because of the many different types of options available to it.  Originally, I’d planned on just adding to this master function – but the complexity involved in updating the function became too unweldy. 


**Side note**

One of the dangers of working on a large project for so long, is that bits of old code that no longer are used tend to take up life as part of the coded, undead.  Zombie bytes that simply take up compiler space and occasionally screw with your mind when it rises back to life do to a missed case statement or commented line of code.  While working with the swap field function, it also became apparent that I need to refactor the present function (something I’m starting).  This happens all the time.  Whenever I do significant work on an area of the program, I take that as an opportunity to refactor old code.  In fact, not too long ago, I streamlined all the code in the primary editing library – except the swap field function.  It kind of looks like code that was written by two monkeys pounding on a keyboard.  It’s long (somewhere between 10-15,000 lines of code), redundant in parts, and ugly.  Yet, it works and works well and in the real world, working code wins.  And yet, I’ve started the refactoring process because it’s time for this function to go on a diet….


**off Side Note**


In the end, what I decided to do was add this as a macro of sorts.  In the last update, I added a new section called Edit Shortcuts.  These are shortcuts to what are actually complex regular expressions that no person should ever have to work out.  So I added it here.  The tool expects that data will be extracted from the 245$a, and the user determines what field and subfield they will place the data into.  This is a first pass on the macro, I’ll be updating it soon to allow indicator values to be added as well as part of the field creation process.


To use it, look in the MarcEditor under Edit/Edit ShortCuts/Field Edits/Title Swap.




Mobile MARC Cataloging demo

By reeset / On / In MarcEdit

So, this isn’t even 1/2 baked yet, but I’ve been working on a project to move cataloging onto the mobile phone.  Is there a practical application here – maybe.  I’ve got a couple of ideas where something like this might be useful…maybe in helping with recon projects where catalog cards or shelves of uncataloged materials are presents.  Likewise, I think that there could be an application for gifts processing – maybe two.  For gift processing, I could see subject selectors given the ability to essentially scan and “catalog” a work if a record is found, essentially speeding up the process of getting an item to the shelf.  Additionally, I could see this process being expanded to aid in doing valuation of gifts – where a selector could scan books and have the utility go out to amazon and keep a running valuation.  So, there could be some interesting applications.

The demo –

  • Written in C#, borrowing components from MarcEdit
  • Runs on Windows Phone 7.5 or possibly Android with the Mono Touch support (though I haven’t tried it yet)
  • Supports scanning and searching of ISBN data, OCRing card catalogs and reading/acquiring barcoded materials.
  • Can download records from Z39.50 targets and upload records using TCP to an ILS system

A couple of notes:

  • ISBD…while you would think that this would make scanning and reading catalog cards easier – it doesn’t.  Using both Google’s free OCR services and Microsoft’s OCR products, I’m finding that the punctuation on the catalog cards is fouling the OCR.  I think the reason is that OCR systems are trained to look for words, and the punctuation, especially in the subject blocks, doesn’t make sense.  So, it makes the OCR basically worthless.  I can parse parts of things – generally titles, authors and ISBN data, which is good enough to search for a record – but at this point, generating a record straight from a catalog record seems unlikely unless a better OCR service is found.
  • Programming this was actually really easy.  On the windows phone, it’s a combination of C# and Silverlight.  This was admittedly easier because I could reuse some of the MarcEdit codebase in doing this, but I think you could do this on other systems as well by simply moving some of the data processing off the device and to a web-service.  It means more data is moving between the device and the web, but ease of development may be worth the speed trade-off.
  • Reactions to this type of tool are interesting.  I gave a brief (and choppy) demo of this process at a local technology conference, Online NW.  Unfortunately, the computer wouldn’t cooperate to show the demo video till the end, so the lightening talk was abbreviated – but I was talking to a colleague after the conference and it was interesting that people in the crowd (I’m assuming catalogers) gasped at horror with the idea that someone, other than a cataloger, might actually go and download records and put them into the ILS (which reminds me – I need to delete the record I downloaded into our ILS Smile)


Anyway – for those folks interested in seeing a 1/2 baked demo, feel free to watch this video placed on youtube this afternoon.

QuickMARC Proof of Concept