1991-1999 TSI: Addressing the Y2K Issue

The big fix. Continue reading

In 1999 people were predicting an end to civilization because of the imminent arrival of a new century. Art Bell interviewed a doomsayer almost every night. Key software programs were expected to crash a few seconds into the year 2000.

The calamity did not happen. A few systems probably had difficulties, but no major problems were reported at all. In the late nineties employees and contract workers at companies around the world ad devoted a great deal of time and money fixing or replacing software that would not work as designed in the year 2000. TSI was one of those companies.

The software programs that we had installed at clients and we used in TSI’s office often involved dates. For example, every business that does billing needs to know whether the clients are paying the bills within a reasonable time. This involves a comparison of the date of the invoice and the effective date of the report. The routine that makes the comparison must know the year for both dates. As long as both dates are in the same century, the familiar two-digit version of the year will suffice. However, if the invoice date is in 1999 and the report is run in 2000, the calculation must be adjusted.

This aspect of the problem was relatively simple to solve, but in large systems like the ones that we had installed there were thousands of references to dates. The challenge was to find all the situations that needed to be fixed and to implement the appropriate changes in a manner that minimized the inconvenience to the user.

From our perspective the problem was twofold: the way that dates were stored and the way that dates were collected—from data entry screens or from other files. As we entered the nineties we had three groups of clients: 1) System/23 (Datamaster) users, most of which had extensive custom code; 2) System/36 users, most of which were ad agencies that had a lot of common code, but a mixture of custom and standard programs were stored on separate media for each client; 3) a few AS/400 AdDept users; 4) TSI itself, which used a version of the ad agency system on the System/36.

I decided to inform all the Datamaster users well in advance that TSI did not intend to make their code Y2K-compliant. Most of them were not surprised; IBM no longer supported the hardware. However, the sole user at one customer, Regal Men’s Store, begged us to make their system work in 2000. I replied that it would probably be cheaper for them to buy a new system. As it turned out the company went out of business shortly after year end without purchasing a new system.

Fixing each ad agency system would have been a monstrous job of minimal benefit to anyone. By January 1, 2000, their hardware would have been obsolete for a dozen years. So, I sent a letter to each suggesting an upgrade to a small AS/400. Only a few of them took us up on the offer.

We did create a version of the ad agency software for the AS/400 that was Y2K-compliant. Our employees used it for administrative tasks for about twenty years. We had a great deal of trouble marketing it even to the ad agencies that love their GrandAd systems. Fortunately, by 1994 AdDept sales had really taken off, and we did not really care too much about the difficulties of marketing to ad agencies.

The AdDept system had to work perfectly, and the transition must be smooth. We had already promised a number of users that it would be Y2K-compliant. I intended to spend New Year’s Day 2000 watching bowl games, not dealing with Y2K catastrophes.


Why, you may ask, was there even an issue with data storage? That is, why were the dates stored in a format that caused the difficulties in calculations? The answer lies in Moore’s Law, the preposterous-sounding claim that the number of transistors in a dense integrated circuit (IC) doubles roughly every two years. In point of fact, the astounding 41 percent growth rate applied to many aspects of computing—processor speed random-access memory, and the ability to locate and retrieve large amounts of data very quickly.

For TSI’s first handful of years in business the clients stored all of their data and their programs on diskettes with a capacity of only one megabyte1. Those users crammed years worth of historical data on these thin slices of film. To put this into perspective, consider this photo of an eight-inch diskette:

Storing the simple photographic image shown above requires more than seven megabytes. So, storing a file of the size of this one image—something routinely done in 2021 by cameras, phones, watches, eyeglasses and countless other “smart” devices—would require (using the technology of the eighties) eight diskettes and perhaps an hour of computer time. Much of TSI’s systems were designed in this era in which both disk and memory were precious commodities. Good programmers were always conscious of the the physical limitations of storing and manipulating data. The prospect of a client’s system crashing because it ran out of space for its data was a nightmare to be avoided at all costs. Everything was therefore stored in the most efficient way possible. The idea of using two extra bytes to store the century occurred to almost no one in the early eighties.

I could think of several possible approaches to the storing of data to circumvent the problem of the new century. The four that we considered were:

  1. Replace all of the YYMMDD numbers in every data file with eight-digit YYYYMMDD fields;
  2. Keep the dates the way they were but add a new field to each record with the date in the YYYYMMDD format and use the latter for comparisons, calculations, and sorting;
  3. Add a two-digit century field (filled in for existing data with 19);
  4. Add a one-digit century field (filled in with a 0 for existing data).

Rejecting the first option was an easy call. All of TSI’s systems had hundreds of programs that read fields by their position in the record, not by the field name in the database. If the total width of the fields that preceded the field in question, was, for this example, 50, the program read the six-digit date field beginning at position 51. This was not the recommended method, but it had always worked better for us for reasons that are too wonky to describe here. The drawback was that whenever it was necessary to expand the size of a field, it was also necessary to change or at least check every line of code that read from or wrote to the file. This could be an imposing task for even one field. Since a very large number of files contained at least one date, almost every statement that read, wrote, or rewrote data would need to be checked. If it needed to be fixed—or even if it did not seem to need fixing—it needed to be tested thoroughly with data that contained dates in both centuries. We had no tools for the testing, and every situation was at least somewhat unique.

Large and dangerous.

Attempting this for every date and season field was such a large and dangerous task that the only way that I would consider it was if, at the same time, we abandoned reading and writing by position and replaced it with reading by field name. I thought about it, but I decided that that approach would result in even more work and was only a little bit less dangerous.

I reckoned that the other three methods were roughly equal in difficulty and in the amount of time required for implementation. I eventually decided that the one-digit method would suffice.

There was one additional issue in the AdDept system. The first two digits of the three-digit identified the year. So, it was necessary to add a century field for every file that included the season number as well. The season was a key field2 for many files. Fortunately, it did not seem to be necessary to add the century to the construction of any of those keys.


The other issue concerned data entry. Users of TSI software were accustomed to entering dates as a number in the form MMDDYY, the way that dates are commonly written in the United States. The programs validated what had been entered by converting the number into YYMMDD format and checking that each piece was legal. The check for the year normally involved checking to make sure that it was within ten years of the system date. So, every validation routine needed to be changed because the date entered and the system date could be in different centuries.


All of the work was to be done on the AS/400. The first step was to locate all of the files in both the AdDept database and the agency database, which we called ADB, and to add century fields that defaulted to 0 at the end of the files. At the same time, every program that wrote records to these files was found. A peculiarity of BASIC helped us find these programs. BASIC associates numbers with files in each program, and TSI consistently used the same numbers for files. Thus every instance of updating of the job file contained the phrase “WRITE #22”.

A single callable program was written to calculate the century. Its only input was the two-digit year. It was incredibly simple. It set the century to 1 if the year was less than 80 (the year that TSI moved to Connecticut); otherwise it set it to 0. In BASIC it required only two lines of code:
CENTURY=0
IF YR<80 THEN CENTURY=1

This approach will work flawlessly until the program confronts dates that are in the 2080’s. If anyone is still using code produced by TSI when that happens, someone will need to come up with a rule for setting CENTURY to 2. I don’t lose any sleep over this possibility. Yes, you could say that we just kicked the can down the road, but who is to say that roads and cans will even exist in 2079?


A much more time-consuming problem was correcting all of the programs that produced reports or screens in which data was sorted by one of the date or season fields. I set up an environment for the Y2K project that contained both programs and data. Whereas it seemed important to insert the century field into all the affected files as soon as possible, the reports and screens would work fine for a few years and could be addressed one at a time.

I evaluated this part of the project to involve mostly busy work—repetitive tasks with almost no important decisions and no creativity whatever. We had hired a college student to work with us for the summer. I thought that Harry Burt and I could set up the projects for him. Harry, who had experience as a college-level professor, could supervise him and check his work. This method did not work out at all, as is described here, and it used up some precious time.

I may have overreacted to this setback. I decided to make this a very high priority and to assign it to myself. One of the programmers surely could have done it as well as I did, but I did not want to assign it to any of them because I did not want anyone I was counting on to consider their job as drudgery.

So, for several months I spent every minute of time that I could find fixing and testing programs to handle the century fields correctly. A few cases were trickier than I expected, but the coding was completed, tested, and installed before any of our clients started planning for the spring season of 2000, the first occasion that would requir the code.


I am not certain about when this occurred, but at some point I received a letter from, as I remember it, someone in the legal department of Tandy Corporation. It said that the company had received a letter from someone named Bruce Dickens demanding that Tandy pay him a proportion of its gross income every year to license the software that handled the Y2K problem because it must have used the technique of “windowing”, for which he had been issued a patent by the U.S. patent office.

The letter, of which I cannot find a copy, contained a technical description of the term3 as described in the patent and asked me two questions: 1) Did the software that we installed at Tandy use this technique? 2) Would TSI indemnify Tandy Corporation in a lawsuit over its use?

I answered both questions truthfully: 1) “This does not sound like what we used.” 2) No.

Dickens sent demands for payment to all of the Fortune 500 Corporations. He said that if they did not agree, the percentage of income required for the license would be increased.

I have searched high and low to find out how this situation was resolved. I know that the U.S. Patent Office scheduled a review of the patent, but I could not find a report of the outcome. I also could not locate any information about whether any of the companies that he had extorted ever paid anything to him or the company that he reportedly founded, Dickens2000. I doubt it. I found no evidence that he actually sued any of them either.

If I had been asked directly whether any of our code calculated the century using the year, I would have changed the code listed above to remove the IF statement and simply set CENTURY=1 in all cases and then answered “No”. A few months into 2000 employees of the companies that used the AdDept system no longer entered twentieth-century dates on new items, and the programs only used the code to assign a season when new items had been entered.


We did not charge any of our clients for the Y2K fix. A few people told me later that this was a mistake. Since our customers depended upon AdDept, and there was absolutely no alternative system available, we probably could have gotten away with charging them. The companies may have even set aside funds for this purpose. However, all of the AdDept users had software maintenance contracts, and I considered it our duty to keep their systems operational.


1. A bit is a binary storage unit; it has only two possible values: off or on. A byte contains eight bits, which is enough to store any kind of character—a letter, number or symbol. A megabyte is one million bytes, which is enough to store approximately eighteen Agatha Christie novels. However, it is not close to enough to store even one photograph. Videos require vastly more storage.

2. A key is a set of fields that uniquely identifies a record. A well-known key is the social security number. The VIN number on a car is also a key. A zip code is not a key because neighboring residences have the same zip code.

3. The most readable and yet comprehensive description of the windowing technique that I have seen is posted here. The application for the patent, which was granted to McDonell-Douglas in 1998 (long after everyone had decided on the approach to use), was (deliberately?) designed to appear much more elaborate than the two lines of code that we used.

1977-1978 Wayne State Debate Tournaments, etc.

Debate at Wayne. Continue reading

The resolution for 1977-78, my first year at Wayne State, was: “Resolved: That the United States law enforcement agencies should be given significantly greater freedom in the investigation and/or prosecution of felony crime.”

The three resolutions during the time that I was at Wayne State were much more limited than the previous three that the guys from Michigan debated. This may have been an adverse reaction to the topic for 1976-77, the consumer product safety resolution. It was a nightmare for negative teams.

Wayne State’s debate team was in a rather strong position at the beginning of the school year. George Ziegelmueller and Jack Kay were both experienced coaches. Vince Follert had been a good debater for several years at Loyola of Chicago, and he had attended both regional and national tournaments. Against fairly heavy odds I had coached teams through the district tournament to qualify for the National Debate Tournament (NDT) two years in a row. No coach at Wayne the previous year had comparable credentials.

In 1977 Wayne State had, for the first time in several years, qualified for the NDT. One of the two debaters from that NDT team, Chris Varjabedian, was returning. The other, Bill Hurley, had graduated and was in Law School. The biggest problem, from my perspective, was that no one had much experience on the “national circuit”.

The Novices: George named Jack Kay to continue as “Director of Novice Debate” for the third year in a row. That was a pretty strong indication that George intended to coach the varsity debaters himself. During the first couple of months the rest of us concentrated on getting the new batch of inexperienced novices ready for the Michigan Intercollegiate Speech League tournament. Wayne’s novices debated three rounds against novices from other schools. All pairs debated the same side (affirmative or negative) all three rounds.

Working with these inexperienced students was time-consuming and often frustrating. Little time was left for any of the coaches to help the experienced debaters. Each coach saw some of them in a practice round or two, but the emphasis for us was on getting the new people prepared for MISL.

The first step was to get recruits to fill out a form with contact information and a short description of each one’s experience and goals. We then interviewed each person. After all the interviews were completed, the staff met as a group to make pairings. The objective was to try to match up people with approximately the same enthusiasm and potential. We did a horrible job. First impressions in meetings proved worthless as indicators of potential.

At least four freshmen had significant high school experience—Kevin Buchanan, Mike Craig, Nancy Legge, and Teresa Ortez. The boys, who both came from top Michigan high school programs, were assigned to debate together. Nancy’s partner was Teresa. I don’t remember if any of this foursome went to MISL.

In fact, I remember precious little about the whole process. Although I devoted many hours to getting my charges as prepared as possible, I harbored no illusions that many of the inexperienced debaters would stay with the program. If they had to face off against Buchanan and Craig, they would not know what hit them.

Camp Tamarack: George had a clever trick for keeping people on the team after MISL Novice. He scheduled an overnight trip for the entire FU to Camp Tamarack, a woodsy resort in Ortonville, MI. The alleged purpose was to do research, but several recreational activities were built into the schedule. We drove up on Friday afternoon and returned on Saturday evening

I remember a few things about the weekend. First, the food service was kosher. Jack Kay had to explain the rules to everyone.

My most vivid memory of the weekend was Kent Martini’s outstanding performance in the scavenger hunt, as I described here.

I wasn’t very impressed with the research aspect of this exercise. George or Jack checked out some books on the debate topic from the Wayne State library. I missed having access to the outstanding U-M library system. It was so much better than Wayne’s. On the other hand, this approach certainly made everyone feel that they were part of the team.

The Varsity: For the first semester the big question for the varsity debaters was; “Who will debate with Chris?” At the beginning of the year the two main contenders were Debbie McCully and Kent Martini. Debbie was (at least in theory) a senior; Kent was a junior. In addition, the novices from the previous year were pretty good. Four of them had closed out the finals of a novice tournament that year. Of the three that returned to the team as sophomores, it was obvious to all of the coaches that Scott Harris was more than a cut above the others.

Somewhere around the Christmas break Chris Varjabedian quit the team. I have no idea what prompted this, but he returned the next year.

George tried the three combinations of Debbie-Kent, Debbie-Scott, and Kent-Scott. The results were not decisive. George asked me which pairing I thought was the strongest. I voted for Kent-Scott. I assume that George also asked Vince and Jack and maybe even Billy Benoit. I was a little surprised when George named Scott and Debbie as the representatives at district. Scott did first negative and second affirmative.

Not this (although Wayne State did have a highly rated fencing team).

One thing that was never in doubt was the affirmative case that had been developed by George and Chris. They called it “fencing”, but it was really about labeling all goods for sale in the United States and recording all transactions on a mythical computer. “Super computers” existed in 1977, but they were far less powerful than a twenty-first cellphone. Hand scanners did not exist. All transactions would need to be entered by hand. Think about that. Every time that currency was exchanged for goods anywhere in the United States, someone would have to input the transaction into the national database, whether it was a girl scout selling cookies or a container ship bearing goods from foreign countries. Also, of course, there were no networks. Without the Internet, how would they check the database?

Nor this.

I absolutely hated this case. It epitomized what I called a “Class Z case”. The idea was so insane that no one would have bothered to describe what was wrong with it. George and Chris found a few articles that postulated a reduction in thievery if a good record keeping system was implemented.1 There were no nationwide studies; it was just a thought experiment.

The negative teams were in a tough position. They could attack the evidence proffered by the affirmative, but what else could they do? Little had been written about the subject. What writer or researcher would be inspired to warn of the dangers of relying on a computer that clearly did not exist and a process that still would not be close to feasible after four decades of Moore’s Law2? And who would publish the ravings of such a Cassandra?

Mr. Chairman and Fanne Fox.

I don’t remember the tournament at which this happened, but I have a very clear memory of an elimination round that I watched rather late in the season. It pitted one of Northwestern’s superb teams against Wake Forest’s duo of Ross Smith and John Graham. I was not judging the round; I wasn’t even taking a flow. I remember sitting next to Jim Maniace (pronounced MAN us, but I called him maniac), the only good debater from Notre Dame that I ever heard. He had won a place in my heart when he told a Wilbur Mills joke while debating in a round that I judged. When he saw me chuckle, he promised more such jokes at the end of his speech, and he delivered.

In this round Northwestern had pulled out a new case. Wake tried to attack it, but when it came time for the 2NR, Graham decided that their only chance of winning was topicality. He devoted all five minutes to this one argument. He carefully explained each portion of the argument. This was unheard of, but it worked! Wake won on a split decision. The Northwestern debaters in attendance were certain that their colleagues had answered the argument, but the judges disagreed. I have never heard a debater talk so forcefully and persuasively for so many minutes. It was actually quite a moving experience.

In preparation for districts Scott and Debbie began to work intensely with George. I helped them as much as I could on the negative. Debbie’s files were a huge mess, but there was too little time to do anything about them before districts.

Scott and Debbie participated in the tournament that Wayne State hosted just before districts. It was highly unusual, but not illegal or unethical, for a school to enter its best team in its own tournament. Scott and Debbie won first place. So, going into districts they had a lot of confidence.

I helped them prepare for district in at least one instance. Ohio University was running a case about arson. Their main source of evidence was a privately published an study (without peer review) about fire departments. I don’t remember OU’s plan was, but the study cited correlations between whatever it was (give me a break; it was over forty years ago) and fires determined to be arson. The study showed a graph of the relationship with the proposed solution on the Y axis and the arson fires on the X axis. If there was high correlation, the plot should approach a straight line that decreased. Instead it looked like a tightly clustered square of dots that neither increased nor decreased.

Publishing correlations on non-parametric data should definitely be a felony crime.

I discovered that the authors did not use the absolute numbers on either axis. Instead they had rank-ordered each and calculated correlations based on those numbers. This is a big no-no in statistics. I found a quote in a statistics text that indicated that correlations were only applicable on normally distributed groups like the raw numbers and not on so-called non-parametric data like the ranks. Scott used this against Ohio U. at districts. Two judges voted on this issue alone. One said that the affirmative got destroyed and never even realized it.

Several weeks before districts I met with George. I requested to go to the NDT in Denver. I told him that Scott and Debbie did not need me at districts. Eventually he agreed. George and Jack judged at districts. I was, in fact, right; Scott and Debbie cruised through districts and qualified for the NDT.

Scott and Debbie in Speaker and Gavel.

George elected to send them to DSR-TKA nationals, which was held at the University of Illinois March 22-25. They won the tournament, and Scott was the fourth-ranked speaker. The competition was pretty good, too. It included Kansas, Kentucky, and Utah.

In the interval between districts and NDT Vince and I worked with Scott and Debbie on their approaches on the negative. I organized a “Debbie Defilement Party” for all day on one Saturday. A few people dropped in to help us or make fun of us.

Debbie wrote out a new outline for her evidence. We then used my method of writing the outline levels on the dividers.

Empty both drawers and start over.

I took all the cards out of her file boxes, and the two of us, with some help from her friends, refiled each one. Occasionally we had to change the outline slightly or add more dividers. Before we inserted a card, we recorded the outline level on it. So each card in each section was labeled with the same level,e.g., II A 3 b 2).

This was, of course, time-consuming, but it more than made up for it by the time that it saved in refiling later. We got it all done in one day. This exercise had the additional advantage of fording her to become familiar with evidence that had been forgotten over the course of the year.

Vince helped with this, and at some point he mentioned something about writing some blocks3. Debbie uttered the immortal words, “Block me, Vince; block me up the wazoo.”

George scheduled several practice rounds before NDT. Only one was on their affirmative (the fencing case). I was the negative. I made plan attacks that they hadn’t heard yet. I had to admit that they did a pretty good job of defending the case.

The smoke did not stay in the back.

Three coaches and two debaters boarded the plane for Denver. Jack, who smoked, had to sit in the back. In those days as soon as the “No smoking” signs went out, a blue-grey cloud immediately formed in the back of the plane. The most dreaded words when buying a ticket were, “All we have available are seats in the smoking section.” Waiting in line for the rear toilet was not a pleasant experience regardless of the location of one’s seat..

Some buses are still free in Denver.

I have three rather clear memories of this trip. The first was a very favorable impression of downtown Denver. Free buses were always available throughout the center of the city. It was very easy to go to restaurants and to commute to the tournament site without a car.

My second strong memory is of the first round. I watched Scott and Debbie on the negative against two guys from Loyola of Los Angeles. I don’t remember the details of the debate, but Scott and Debbie were awful. At the end all four debaters were rightly convinced that Loyola had won all three ballots. Worse still was the fact that Scott and Debbie were screaming at each other. At one point one of them walked off in a huff. I have seen many debaters get upset with their partners, but never anything like this.

I talked with Scott and Debbie individually. I listened sympathetically to the complaints. Eventually they both calmed down and were willing to soldier on. There were only fifty-two teams in attendance. The goal was to be in the top sixteen. Losing one debate, no matter how badly, was definitely not a disaster. Losing trust of one’s partner was much worse.

I asked them if they wanted me not to listen to any more debates. They both thought that was best. In all honesty, I don’t remember what I did for the rest of the tournament. I might have had some judging assignments.

Scott and Debbie won four of the next six rounds. My other clear memory is of their eighth round assignment. It was recounted here.

Oh, please. They left out at least forty races.

I had my own great idea for a case, but no one on the team appreciated it. My idea was to increase the powers of law enforcement by creating a new agency to investigate felonies committed by aliens. I was not referring to the kind that cross the borders in the southwestern U.S. I meant the Greys, the Reptilians, and the other fifty-one well-documented unearthly races who had abducted countless American citizens.

I was half-serious about it. I was always attracted to cases with no evident disadvantages. The negative evidence on this case would be even scarcer than on the fencing case. The affirmative obviously could not employ the need-plan format, but surely the data gathered in the process of investigating sightings would be very useful if mankind ever needed to negotiate with the mother ship. At the very least the agency could publish a list of the people who were complete wackos.

During the summer of 1978 the other coaches and I worked with high school kids in Wayne State’s debate institute. The team that I worked with the most closely ended up winning the tournament at the end. I took no great pride in this achievement, but they were certainly better at the end of the week than they were at the beginning.


1. The principle was probably correct. When TSI implemented such a system for the inventory used in photo shoots by Macy’s in the nineties, the amount of pilferage experienced by the advertising department decreased dramatically.

2. Gordon Moore, the founder of Intel predicted in 1965 that the number of transistors in a dense integrated circuit would every year. In 1975 he revised it down to doubling every two years, which proved to be a good approximation of the improvement in the speed of the processors.

3. A “block” is an argument that is written out in detail with sub-points and evidence.