Thursday, August 1, 2013

Some thoughts on what to ask scanner vendors

In my previous post I took a brief look at what some considerations might be for putting together a tracking system for dropped dogs in Iditarod.  Let's pretend that Iditarod has decided to go ahead and implement something based on tracking dogs through their RFID chips.

One thing that's surprised me in Alaska, or at least in my experience at the university, is that there tends not to be very much rigor about defining project goals and requirements.  Because this is Iditarod and money is very tight (we want to put as much into the race purse as we possibly can), we cannot afford to be sloppy about goals or requirements.  We cannot waste money on a bad or useless purchase.

The first problem is how to read ID numbers from the microchips Iditarod requires to be implanted in the dogs.  That means acquiring scanners, quite possibly several dozen of them (someone needs to figure out how and when dropped dogs would be scanned, but certainly at least one at each checkpoint where dogs can be dropped).  We'll require that they have a computer interface, and that that interface is USB.  Several scanners on the market have RS-232 interfaces, and they tend to be somewhat less expensive, but they're more "brittle."  That is to say, they're very sensitive to misconfiguration, transmission errors, funky cables or connectors, etc.  Find someone who's done a lot of RS-232 and you'll be finding someone who's got experience with weird, inexplicable failures that turned out to be pins pushed in a fraction of an inch, just barely enough to miss contact, and someone who knows more about parity bits, connector pinouts and pin assignments, control flow over slow networks, and so on than any human should need to.  So, USB.

Let's break our questions down into functional questions and environmental questions.

Functional questions:

  • Does this device have a USB interface?
  • Is there an API for developers?
  • What about technical documentation - is there sufficient documentation that a developer would be able to sit down, read it, and start writing useful code?  What about sample code?
  • What about USB identifiers and/or USB device classes?  What do you use?
  • Is a device-specific device driver required?  If so, which operating systems are supported?
  • Is there a "shim" or conduit or some other mechanism for pulling identifiers directly from the device into some piece of standard software (say, MS Excel)?
  • If so, how much flexibility is there around that?  For example, would we be able to pull the numbers directly into cells on our own spreadsheets, or would we need to pull them from cells in a sheet in a format you define?
  • Are any metadata associated with the scanned microchip (for example, a timestamp)?
  • In what format are the data when read off the USB port?  What about through a device driver (if you provide one)?
  • Will the scanner cache one or multiple scans and then allow those to be dumped to a computer, or does it need to be attached to a computer at the time it does the scan?
  • Do you have any particular licensing restrictions on what can be done with the scanner or scanner output?  Would you object to a dog tracking system based on your device being released under a standard open source license?
Environmental questions:
  • Some Iditarod checkpoints are quite remote and have challenging operating environments. What's the temperature range within which your scanner is expected to perform?
  • Is it waterproof?
  • Iditarod has volunteers from a tremendous variety of backgrounds and experiences.  Some are not technically sophisticated, some are extremely technically sophisticated.  How difficult is the scanner to operate?  How complicated is the user interface?  How many buttons on the scanner would someone have to push to start a scan and get it into a computer?  
  • What about power - can it be powered off the USB interface, does it require batteries, does it run off AC, ... ?
  • If it runs on battery power, what's the battery lifetime?  Can it run on replaceable batteries, or only on your rechargeables?  If it can run on replaceables, what about lithium ion?
  • Iditarod would need spares in case of device failure.  What's the mean time between failures on this scanner?