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.

1997-2007 TSI: AdDept Clients: Tandy Corporation Divisions

RadioShack and Computer City. Continue reading

Doug Pease. TSI’s Marketing Director, took the call from Tandy Corporation. I am not sure whom he talked with, but he learned that Tandy had three retail divisions—RadioShack, Computer City, and Incredible Universe. All three were based in Fort Worth, TX, but they placed their advertising independently. They were interested in purchasing three copies of the AdDept system. Doug was salivating at the prospect landing three new prospects at once, especially since Tandy already had AS/400’s with enough capacity to handle all three installations. So, there would be no problems in the IT area, and there would be little or no hardware expense. It was almost too good to be true.

Doug and I flew to Fort Worth to talk with the people about their needs. RadioShack was clearly driving the project. They ran weekly ads in two thousand different newspapers. The responsibility for ordering and paying for the ads was split among four employees: north, south, east, and west. Another lady managed their ads in magazines.

Tandy Center in 20002. The Mall was between the two towers. Computer City was in the tower on the left. I think that this photo was taken after the subway was shut down.

The newspaper schedulers already had two systems, one for scheduling and one for paying. The two systems did not communicate at all. So, each employee had two separate workstations on his/her desk. One of the schedulers, Dolores DeSantiago, showed us how they worked. They had to enter all the ads in each one, and both systems were intolerably slow.

I am pretty sure that I did the demo at the local IBM office. The people who attended were very impressed at how quickly AdDept could build a schedule, and I don’t think that they could believe it when I told them that it could fax insertion orders without any extra data entry.

The subway stop for workers and shoppers.

The primary custom work that they wanted was to devise a way that they could split up the newspapers as they were accustomed to doing. I could think of no good reason why scheduling would require four people using AdDept—they only ran one ROP ad and one insert every week. Most papers got one or the other. I don’t think that we actually talked with anyone from Computer City or Incredible Universe, but we were assured that if it worked for RadioShack, it would work for them.

Dolores and Veronica in Enfield.

I wrote up the proposal and the design document. They liked it. I sent them the contract for all three divisions, and they signed it and sent the deposit.

Four people from RadioShack came to Enfield for training—Dolores, Veronica Anguiano, and a man and woman whose names I don’t remember. He was quite familiar with the Hartford area and asked about some of the girlie bars that were just east of I-91 at exit 33. She had worked at Color Tile (described here) and was an enthusiastic supporter of the AdDept system.

The two people whose names I cannot remember.

We probably went out to eat together, but I don’t remember where. It was December, and so they drove up to Springfield to see the Bright Nights display in Forest Park.

After the training session I and the programmers were working on the custom work specified in the contract. That was when Doug received a disconcerting phone call from Tandy. They no longer wanted to purchase a system for Incredible Universe. Evidently sales were sluggish, and they were closing some stores. In fact, they closed down the entire division in 1997.

So, we had to decide whether to hold Tandy to the signed contract, or to revise it to include only RadioShack and Computer City. If we had done the former, we probably would have had a somewhat bitter client. Maybe we were wimps, but we gave in and rewrote the contract.

Not even one.

The installation was unusual. I went to Tandy’s gigantic data center, where not a single TRS-80 was to be seen. A female employee escorted me to my workstation, where I had access to the AS/400 that would be used for the two systems. She spent the entire day sitting next to me watching what I was doing! Maybe she worked in security. She would not let me take any photos.

When I was finished I went to RadioShack’s offices. They insisted that I spend time with each of the four newspaper schedulers.

RadioShack was famous for being a go-to retailer for new technology. During the early course of its relationship with TSI, its leading cellar was the cellphone. At that time their were many different carriers, and RadioShack had deals to supply phones and technical assistance for many of them. The carriers varied from store to store. So, Veronica asked us to add a field to the pub table to designate the carrier. It was important that the paper got the correct version of each ad.

I don’t have any notes from my work with Tandy, but I do have some vivid memories.

The new RadioShack store in Enfield was less than a quarter of a mile north of the existing store in Enfield Square.
  • Fort Worth reminded me of a cow town. It was nothing like Dallas, which seemed like a very wealthy oil city. Doug and I found a restaurant downtown. I ordered chicken-fried steak. I asked the waitress if it was low in calories. She admitted that it wasn’t. I said, “Good; I’ll have it.” It was delicious.
  • On one of my first trips to Fort Worth I was a little late and slipped on some unexpected ice. Because I had my sample case full of program listings in one hand and my laptop bag in the other, I fell flat on my ass. I was not hurt.
  • Most of the time I parked in a gigantic lot that was near the Tandy Center, a shopping mall that also included the offices. The only privately operated subway in the U.S. transported parkers to station below the mall. It only went underground for a short distance.
  • The mall had an ice rink, but it did not get a lot of use.
  • I was in Fort Worth when the temperature exceeded 100 for the fifteenth consecutive day. It was so hot that the asphalt felt spongy. The roads in that area are almost all made of concrete.
  • On November 27, 1997, I was in Fort Worth and, as I usually did when a college football game was on television, I watched Texas Christian University, which is in Fort Worth and almost universally known now as TCU) play against Southern Methodist University, which is in Dallas and is almost universally known now as SMU. SMU, which entered the game with a 6-4 record, was heavily favored. In fact they had won their previous five games. TCU was 0-10 and considered the worst team in the countries. The game took place in Fort Worth. If I had known about it, I might have gone. The lowly Horned Frogs prevailed over the Mustangs 21-18 and won the Iron Skillet.
  • One day I saw a list of new stores that were planned. The name “Enfield CT” jumped out at me. Knowing that there already was a RadioShack store in the Enfield Square Mall, I asked for the address. It was a low number on Elm Street. This seemed strange to me because the only strip mall of any size on Elm St. was directly across the street from Enfield Square. Nevertheless, that was where they put the new store, but it was only open for a couple of years.
  • Veronica had a crush on a singer or actor named Antonio. I assumed that it was Antonio Banderas, but when I said so she looked at me as if I were from another planet. Evidently there was another heartthrob named Antonio.
  • The attempt of Bruce Dickens to extort money from the Tandy Corporation because the AdDept system used a simple calculation to determine the century was explained here.
Yes, but barely.

Most of my time in Fort Worth was spent in the RadioShack division. Computer City actually went out of business in 1998. Before it did, however, I had several unusual experiences in the CC advertising department.

  • The first thing that I noticed was that everyone in the department seemed to keep a large supply of food in one of the desk drawers. Maybe this was a widespread habit elsewhere, but I first noticed it at CC.
  • One of the ladies with whom I worked casually mentioned that she had fifty-three cats. Sue and I had two at the time, and I had always considered that two was the perfect number. I asked the lady if they were indoor cats, and she said that if any of them went outside, a neighbor of hers would shoot them with a rifle if they approached his property. I remarked that this would have been adjudged as bad form in New England.
  • One day I noticed the VP of advertising spending time at the copying machine. He spent the entire afternoon engaged in copying something. I could not imagine what he could have been doing. I don’t ever recall seeing a VP at any other company photocopy even one sheet of paper. They all had personal assistants or secretaries.

In 2000 Tandy changed its name to RadioShack Coroporation.

Bob Quaglia.

I remember the name of only one other employee at RadioShack. Bob Quaglia2 was the media director, which made him the boss of both Veronica and the lady who managed the magazine advertising.


In 2007 Veronica called us to say that RadioShack had outsourced the buying of their newspaper ads to to an ad agency or media buying service. Since that was the primary use of AdDept, they stopped using AdDept. A few months later she called me for some reason. She mentioned that they thought that they might have made a mistake.

In February 2015, RadioShack Corporation filed for bankruptcy protection after eleven consecutive quarterly losses. It was purchased by General Wireless, Inc., in May. A very high percentage of the stores have been closed. All the remaining stores are franchises.


1. Much more information can be found about Doug here and in many of the entries for other AdDept clients.

2. In 2023 Bob was still in the advertising business with his own firm called Gonzo Media. Its website is here. He left RadioShack in 1998. Incidentally, the reason that I remembered his name is that quaglia is the Italian word for quail.