[107330] in Cypherpunks

home help back first fref pref prev next nref lref last post

Re: FC: How Y2K doomsayers got it wrong

daemon@ATHENA.MIT.EDU (Mok-Kong Shen)
Mon Jan 11 03:09:13 1999

Date: Mon, 11 Jan 1999 09:00:06 +0100
From: Mok-Kong Shen <mok-kong.shen@stud.uni-muenchen.de>
To: Bill Stewart <bill.stewart@pobox.com>
CC: cypherpunks@cyberpass.net
Reply-To: Mok-Kong Shen <mok-kong.shen@stud.uni-muenchen.de>

Bill Stewart wrote:
> 
> Five days after the year started using the magic value "99",
> a message from Mok-Kong Shen appeared, saying:
> 
> >For any firm with data processing personals of solid experience,
> >it shouldn't be too late if a Y2K project is started today.
> >More than 300 days are still left.
> 
> Either the message you posted early last year was delayed by
> bad mailer software (:-), or you are incorrect.
> Some software began encountering Y2K problems several years ago
> (badly-written software using dates in the future),
> but the big problems triggered on 1/1/99, and bigger problems
> will of course trigger on 1/1/00.  Any software using "99"
> as a special value for the year can obtain incorrect results
> during 1999 -- typical bad behavior is to discard a record
> or interpret the record as the last record of a list,
> and to fail to output error message when doing so.
> This can cause incorrect output, or missing output.
> 
> Another big problem that occurred 1/1/99 was in the BIOS software
> controlling the clock chips of some recent PCs, including 386,
> 486, and some older Pentium models.
> 
> >Like all software engineering problems it can and will be well solved,
> >provided that it is correctly dealt with according to the
> >state of the art, with neither panic nor ignorance but prudence
> >and resolution.
> 
> Unfortunately, this is only true to the extent that engineering,
> unlike science, includes making good use of the resources available
> to you given constraints on information and skill,
> which may not the scientifically optimum use of those resources,
> and may not obtain the desired results :-)  For instance,
> given 24 hours to solve a problem, an engineer can develop a
> 24-hour-quality solution.  This is more complete than a
> 1-hour solution, and less complete than a 365-day,
> and there is some threshhold below which the solution is not good enough.
> 
> The state of the art in software engineering, for most of
> my 25 years in the business, has included clearly defining
> the requirements and documenting anything important;
> newer practice recognizes that the requirements and constraints
> are seldom all known at the beginning of the process,
> and tries various approaches to work around this.
> Also, good software engineering practice says that you should
> define what good and bad inputs are, and your software should not only
> do good things when it gets good input, but should also
> not do bad things when it gets bad input - maybe this means
> producing an error message, maybe shutting down, maybe skipping a record.
> 
> In the case of Y2K re-engineering, this all goes out the window.
> Good software doesn't die on 1/1/2000 unless there's a good reason,
> and you can read the good documentation and see if it warns you about this.
> But bad software doesn't have good documentation, the people who wrote it
> left the company years ago, there weren't any clear requirements,
> you don't know if there was enough testing to know if it met the
> unclear requirements, or if the requirements were any good,
> the code is written in JOVIAL or IBM 360/90 assembler,
> the punch cards for the source code were thrown away years ago when
> the vendor got bought out by that paper recycling company,
> not that anybody quite knows why they bought that anyway,
> and your staff has been bandaiding the code every year to
> work around the copy protection that's looking for the 8-inch floppy,
> which is fairly inpressive considering that the only people on
> your staff who were around when it was bought were the HR department.
> 
> So your first job is to find out what software you have,
> and try to guess what is good software or bad software;
> if you somehow have only good software, *you* might not need to do
> Y2K engineering for very long, so this isn't written for you :-)
> 
> Why does Bad Input happen to Good Software?
> Lots of reasons, but you can't always tell whether input is bad -
> if a date 1/1/00 shows up, that;s a good hint,
> but what happens if some people's records just don't show up,
> because somebody else's Bad Software stopped at 99?
> Is it Somebody Else's Problem?  Or is it yours?  Can you tell?
> But even that's well-bahaved bad input -- does it count as
> Bad Input if your computer suddently stops receiving electricity?
> yes, good operating systems and good databases fail cleanly,
> but what happens if the DNS invalidates everything in its cache
> because its clock reset just before the router lost power?
> And that's only Good Software...
> 
> What does Bad Input do to Bad Software?  Since you're grubbing through
> undocumented assembler code anyway, can you tell if that two-byte
> 00 or 99 or FF is a date, or a flag, or the length of an array,
> or if you're comparng two of those fields because they're dates
> (sometimes fixable by offsetting by some value like 30 mod 100,
> which is a really Bad thing to do for array-bounds checking :-)
> Even if the stuff used to be C0B0L, it can be hard to decipher
> without either the source or documentation, or often even with them.
> 
> OK, so you gave up on fixing the Bad Software, and you're just
> going to replace it with new stuff.  That's probably better,
> at least if the new stuff runs on Unix and not Win98,
> but one reason it was Bad was because you don't have any requirements.
> Should you start over with Business Process Re-Engineering and SAP?
> There are some Big N Consulting Firms that strongly recommend you do,
> and they'll be happy to charge $2-10K per day to help you.
> That's trouble enough for an accounting system, which may be
> intimately tied to your Just-In-Time warehouse inventory system,
> but what about process control problems.
> 
> Now let's take a couple of really ugly examples.  Say your system
> does something simple like accounting, but you're the
> Internal Revenue Service, or a tax software provider,
> so the accounting is the US Tax Code, for which the laws alone are
> several inches thick of ugly contradictory conditions,
> the meaning of which is modified by many feet thick of court decisions,
> and was often not well-understood by the CongressCritters who wrote it,
> except for the provisions that were deliberately trying to obscure the
> recipient of the political favor that was being granted.
> 
> That's not too bad - look at Air Traffic Control.....

I think what you wrote isn't bad. But the problem Y2K has to be
solved just like a person who has a serious illness has to be 
cured, isn't it? So the only correct thing is to start a Y2K project
today, if there isn't any yet. There is no need of panic, for
panic doesn't help. What one needs is resolution.

M. K. Shen


home help back first fref pref prev next nref lref last post