Resiliency

Data is a fickle thing. Signal-to-interference-plus-noise ratio – Wikipedia. In addition to trying to determine which part of a signal is useable, other factors can make the output unreliable.

Hardware malfunctions

Computers, both natural and man-made, expect a given output determined by the input signals. Hardware imperfections can either ignore a signal or create one that does not exist. Interesting side note – IBM’s computer speed was limited by the bandwidth of the HP oscilloscopes used to troubleshoot hardware failures. You can’t fix what you can’t see. Various schemes have been developed to detect (and sometimes correct), failures, especially memory faults.

Computer data is just a series of 1s and 0s. If you add one more bit at the end of the data if the total of 1s is an even number, you can detect some hardware errors. An even more sophisticated form of this Longitudinal redundancy check – Wikipedia is the CRC. Cyclic redundancy check – Wikipedia is the calculation of what “sum” all of the data creates. Early space flights relied on having multiple computers calculating trajectories and the pilot “guessing” which to trust if the outputs differed!

Supervisory program malfunctions

Android (operating system) – Wikipedia or IBM PC DOS – Wikipedia user programs are controlled and monitored by Operating Systems. These programs are a combination of hardware control Microprocessor – Wikipedia and coordination of multiple operating systems tasks. These flaws are the reason your PC needs to do constant updates.

User program logic flaws

To summarize the hierarchy of a modern computer (or a nature-made computer)

  • Various hardware logic and storage devices for holding data and comparing values
  • Hardware-controlling microprocessor code for determining what actions to take when an instruction is executed. This level is the assembly language execution of commands.
  • Supervisory code to connect the machine to input and output devices
  • User program to perform calculations desired by the programmer

That seems pretty straight forward, until you consider that a user can write a program that

  • Pretends to be a different operating system
  • Running microcode that does not exist on the current system
  • interpreting hardware instructions on virtual hardware (and of course, that program could emulate a third hardware configuration)

A computer programmer writes rules that are supposed to produce the desired result based on the input data. There are many chances for mistakes. The most common is not accounting for all of the possibilities when deciding what action the program should take. If the programmer writes “If the dress is blue, put it in box 1, but if it is red put it in box 2” would not know which box to put a pink dress.

here is a piece of code I wrote in 1987 and it still works, but probably took a few tries to get it right.

DO CASE
CASE ITOWN = ‘WR’
REPL INT WITH ROUND(TAX1(IDATE-DATE_BILL)(.14/365.25)+MAX(TAX2(IDATE-DATE_BILL-90)(.14/365.25),0)+MAX(TAX3(IDATE-DATE_BILL-180)(.14/365.25),0)+MAX(TAX4(IDATE-DATE_BILL-270)(.14/365.25),0),2) FOR AMNT_PAID =0 .AND. TOWN = “WR” .AND. YEAR >= IEARLIEST .AND. YEAR <= ILATEST .AND. INT = 0

CASE IZERO .AND. ITOWN = ‘ ‘
REPL INT WITH ROUND(TAX1(IDATE-DATE_BILL)(.14/365.25)+MAX(TAX2(IDATE-DATE_BILL-180)(.14/365.25),0),2) FOR AMNT_PAID = 0.00 .AND. INT = 0.00 .AND. YEAR >= IEARLIEST .AND. YEAR <= ILATEST

CASE ITOWN = ‘ ‘ .AND. .NOT. IZERO
REPL INT WITH ROUND(TAX1(IDATE-DATE_BILL)(.14/365.25)+MAX(TAX2(IDATE-DATE_BILL-180)(.14/365.25),0),2) FOR AMNT_PAID = 0.00 .AND. YEAR >= IEARLIEST .AND. YEAR <= ILATEST

CASE ITOWN # ‘ ‘ .AND. IZERO
REPL INT WITH ROUND(TAX1(IDATE-DATE_BILL)(.14/365.25)+MAX(TAX2(IDATE-DATE_BILL-180)(.14/365.25),0),2) FOR AMNT_PAID = 0.00 .AND. INT = 0.00 .AND. TOWN = ITOWN .AND. YEAR >= IEARLIEST .AND. YEAR <= ILATEST

CASE ITOWN # ‘ ‘ .AND. .NOT. IZERO
REPL INT WITH ROUND(TAX1(IDATE-DATE_BILL)(.14/365.25)+MAX(TAX2(IDATE-DATE_BILL-180)(.14/365.25),0),2) FOR AMNT_PAID = 0.00 .AND. TOWN = ITOWN .AND. YEAR >= IEARLIEST .AND. YEAR <= ILATEST

ENDCASE

Finally, all of the hardware and programming pieces may be operating perfectly, but everyone forgot that years have 4 digits Year 2000 problem – Wikipedia.

Next Chapter Clock Control