The GW Micro blog has been discontinued. For instant updates on GW Micro products and events, follow us on Twitter, and like us on Facebook.


Burn, Baby, Burn

by Aaron Smith on Tuesday, April 17 2007

So far the upgrade process has been running smoothly. There have been few reports of any problems, and the minor issues that were reported have already been resolved. We've been receiving a lot of positive comments about Window-Eyes 6.1, and CDs are still moving out the door. All in all things are going very well.

Speaking of CDs, I've had a couple questions regarding our CD duplication process, so I thought I'd take a minute or two and talk about how that whole process works, without giving away too much of the magic.

Our CD production machine is a robot. Literally. It's like our own private Marvin (a la Hitchhiker's Guide to the Galaxy). It's got an arm with suction cups, several spindles that hold either blank or burned CDs, several CD/DVD burners, a thermal printer, and occasionally the Marvin Paranoid Android personality.

We chose this particular machine because it has the ability to be scripted, which means we can create CDs on the fly without needing pre-recorded images, or compiled ISOs. That also means that we get to control the quantity. For example, we don't have to order 50,000 stamped copies when we only need 3.

So when you order a CD, how does it get created? Trying to teach everyone in the ordering department how to map shares, modify proprietary script files, submit jobs, create CD, print, and Braille labels, and everything else that goes into creating a CD is a pretty tall order. Not that they couldn't learn all that, but that's not their job. They need to be able to enter an order, click a button, and move on to the next order. And that's what they do when you place your order.

The scripts are, more or less, text files that point to locations of data files that are copied to the CD during the final production process, along with other miscellaneous information that describes the format of the CD, the volume label, etc. Since every CD contains common files (MP3 manual, MP3 tutorial, the video support utility, PDF manual, etc.), it's easy to store one copy of those files in a separate location so that we only have to build the serialized version of all the Window-Eyes files. We also deal with multiple languages, and some languages deal with multiple versions. Each language also deals with copy protection, like Everlock, Dongle, LTO, Evaluation, and so on. So we end up with directories containing common files, language files, version files, and copy protected files. Oh, and the upgrades are also built separately on the fly, so those come in from yet another location.

To make it easy for everyone, I created a web based interface that integrates with our customer and product databases. Once an order is entered, and the customer record is updated with the appropriate product information, it really is just a matter of selecting the Create CD button, and within 5 to 8 minutes that customer's CD is sitting in the out tray of the duplicator. Once the Create CD button is selected, the web page parses all the information about the product (version, language, etc.) and creates a script for the duplicator. The duplicator software has a live directory where job requests are monitored. When the script is finished, it's plopped into that directory, and in a second or two, Marvin comes alive, and does a little dance.

A burner door opens; Marvin's robotic arm spins around to the empty CD spindle, sucks up a blank disc using three pressure sensitive suctions cups, spins back around to the burner, drops the disc in the drive, and waits. Once the burn process is complete, the door opens back up, Marvin's arm drops down and sucks up the disc, then spins it over to the thermal printer, and drops it again. The thermal printer aligns the CD for printing, pulls the disc into the print tray, slathers it with black ink, and spits it back out. Marvin picks it up a final time, spins over to the completed spindle, and drops it.

It's a very simple, very cool process to watch happen. Even after sitting through countless production sessions, I still enjoy watching Marvin come to life. That is, of course, when he does the job right. You see, the main drawback to Marvin is that he's mechanical, and mechanical things eventually go askew. Alignments can change fractions of fractions of inches over time, and every once and awhile, that paranoid android mentality rears it's head: "I think you ought to know I'm feeling very depressed." Fortunately, we've had enough time getting to know the ins and outs of how to tweak Marvin, so re-aligning him is usually a quick and painless process. Other than that, it's just a matter of keeping him fed with printer ribbon and blank CDs.

So that's it in a nutshell. There are a lot of ifs and potential gotchas in the underlying code that does the serialization and dynamic building of files, but with time, the process becomes more streamlined, and more efficient.

Writing out all this stuff makes me introspective. Watching ideas get developed into Window-Eyes features, testing those features, and packaging up all the parts of Window-Eyes so the end user can install it, and use the software that came from that initial idea is very Zen-like, and pretty rewarding.


Return to Article List