CBPF Blog

Tuesday, June 24, 2008

The Diamond Extended File Format Fiasco Part 2

Here is a summary of events after a mammoth posting of 53 messages on a forum. (In this blog the word "Diamond", is referencing Cheryl Sleboda. She was the voice of Diamond to the technically minded in this matter).

Diamond announces a format change to its weekly extended format file to be implemented in 3 weeks.

I and another software programmer (or two) quickly scramble to do damage control, ask clarifications, and respond with suggestions.
Diamond responds with a 3 week postponement before implementation, for a total of 6 weeks between announcement and implementation.

The change to the file takes the Discount Code (which is attached to the Item Code) and makes its own field from it. The new format is actually proper database design. The problem is that hundreds of stores are already using it the way it is. The new format doesn't provide any new data, only the same data moved over a few spaces. The format is what is known as a .csv file, meaning that there is a comma separating each piece of data.
The old format looks like this -
25,"APR080190D ","BATMA (etc.)
The new format (I think!) looks like this -
25,"APR080190","D","BATMA (etc.)
Same data, insert a couple of quotes and a comma.

These are some of the brainstorming suggestions made to Diamond, and the responses given.
  • Produce a test file of the new format so that software can be tested using the new format.
    • Diamond said it wasn't possible. (This is either a lie, or Diamond should upgrade from their Commodore 64s, Vic 20s, TRS 80s, Altairs, and whatever else they are using).
  • Instead of inserting the discount code field in the middle, and shifting all other fields over one, place the discount code at the end of the row. This serves a couple of purposes. First, the fields didn't change location, therefore some software in the field may continue to work without modification. The second advantage is that the field order between the regular format and the extended format files stays the same up to the point that there are extra fields which is what makes the extended format entended. This would allow software to be file agnostic, not knowing which file is being imported, but importing either because the fields are in the same order. The next problem is that there is no way for a store to see their setup on the Diamond website or to make a change between the regular and extended format (or vice versa). Therefore, when programs begin to break, it'll be speculation as to which file is actually being received from Diamond without opening and looking at the file (which I assume many store owners are hesitant to do, and wouldn't know a csv from a xml file). Up through CBPF 1.10, I've been able to import either file without any kind of setup options being set. This is a good thing as it eliminates some of the possibilities for errors. With CBPF 1.11, I've now added a checkbox in the setup to choose which file format you are importing. This is just one more thing that can be accidentally set wrong or changed.
    • Diamond refused - No explanation given, no counter suggestions made as to how to deal with the problems.
  • Produce both versions (old and new) of the extended format file for a few weeks so that if there is a problem, stores aren't hung out to dry. If the file format turns out to look differently than thought by the programmer, or if Diamond incorrectly generates the files, there will be about 3-4 days for every piece of software being used in the country and Diamond to get things corrected or stores aren't going to be generating their pull lists on Wednesday.
    • Diamond refused - no counter suggestions made as to how to deal with the problem.
  • Someone (not I) suggests that Diamond may be doing this to break others programs and sell more of their own, since the ComicSuite was rolling out the door. Diamond is offended, several moderators jump in, and the thread is closed to posting. It was better than a cage match.
Who knows? Maybe all will go well. Unfortunately computer programmers and users have to assume that things will break and have a plan of action in place before hand. I'm at a loss on what the plan of action is in this case if something doesn't work

At this point I'd like to acknowledge my disagreement with the method which Diamond chose to release this file change.

I'd also like to leave you with a definition by Abrose Bierce.
ACKNOWLEDGE, v.t. To confess. Acknowledgement of one another's
faults is the highest duty imposed by our love of truth.

James