Thursday, April 27, 2017

NODATA Data Ghosts in the Machine? $23 Quadrillion Explosions?

The 2004 Movie "I-Robot" starring Will Smith rechewed a 1940-1950s Isaac Asimov story line.  But with a new idea injected the character Dr Alfred Lanning: Ghosts in the Machine -- random snips of code (ad hoc algorithms) that manifest new, sometimes good -- sometimes bad -- behaviors.

I-Robot First edition cover, by Isaac Asimov, 
circa 1940-1950 from Wikipedia

Q: Do ghosts reside in our circa 2017 machines?  Always caused by "random snips of code"?

A: YES -- with a surprise twist:  The "ghosts" are buried in how NODATA tokens are stored -- and interpreted. The ghosts are not in the software -- but in the DATA -- specifically how human software developers adopt unconscious & unknown software ASSUMPTIONS regarding current & historical use of NODATA tokens.


VIDEO: Perhaps a scary $23 quadrillion dollar billing example -- to kick off this significance of NODATA assumptions -- and software interpretations. In 2009, Josh Muszynski of New Hampshire was "billed" over $23 quadrillion dollars via his debit card:



2 min video: Josh Muszynski of NH reviews his online bank statement 
and astronomical $23 quadrillion bill (from WMUR-TV, video alternate link )

Wow!  And the open literature suggests there were some 12,000 other similar example that have gone unreported [1].

Q: How did a NODATA "ghost" cause this surprise bill?  A bill that was over 2000 times larger than the US National Debit in 2009? (or said another way, Mr Muszynski -- if he had actually received the $23 quadrillion -- could have "paid" the US debit and had 1999 extra US-sized debts to spare).


A: The best explanation comes from how ASCII "blank" data (space-bar characters) are "padded" into the debit / credit card reader -- at your local corner store -- and then "digested" by the computers at the bank end.  From a very short illustration [2] from programmer website TheStackExchange:


Q: "Is 23,148,855,308,184,500 a magic number -- or sheer chance?"
A: "Add the cents to the number and you get [19 digit number]: 2314885530818450000 -- which in Hexadecimal [base-16] is: 2020 2020 2020 1250.  Do you see the pattern? The first six bytes have been overwritten by spaces (hex 20, dec 32). "

KEY IDEA?  MESSAGE?  How NODATA is stored -- and interpreted by software and programmer algorithms -- is REALLY, REALLY important.  Failure to recognize interpretive difference between NODATA storage types will make the ghosts pop out of the machine!

References:

[1] Apparently there are some 12,000 other un-reported $23 quadrillion dollar billing errors from NODATA padding & improper interpretation:
http://www.nytimes.com/2009/07/23/nyregion/23towns.html

[2] StackExchange Q&A: Is $23,148,855,308,184,500 a "magic" number?

http://stackoverflow.com/questions/1133581/is-23-148-855-308-184-500-a-magic-number-or-sheer-chance/1139230