Code Craft

Software is equal parts Art, Craft, and Engineering


About the Site

This is my personal presence on the web – a place to publish things that I think are of interest in the field of technology. It is home to articles on programming and technology, free code snippets, and free programs.

All pages on this web site are annotated with the dated created and updated when that’s relevant; the update date pertains to significant content changes not typographical and spelling corrections.

This site uses SI notation for magnitudes as they are defined. Even though I am an “old school” programmer who memorized the powers of two through to 65536 as a pre-teen, over the years I have become frustrated with the disparity and confusion caused by using binary exponents for Kilo, Mega, and Giga as opposed to the SI standard decimal exponents. So as a matter of principle, I am forcing myself to adjust to using the SI standard unit definitions and prefixes for powers of two (realizing this will make me unpopular with some readers). My personal opinion is that it’s well past time to end the confusion and use of the decimal SI multiples and prefixes is already firmly established as powers of 10 in every discipline & industry except computing; something has to give, and that something needs to be the incorrect use of decimal SI units for binary multiples within the computer industry.

The SI prefixes for binary multiples are as follows:

Factor Symbol Name Decimal Derivation
N/A 10-24 yocto septillionth
N/A 10-21 zepto sectillionth
N/A 10-18 atto qintillionth
N/A 10-15 femto quadrillionth
N/A 10-12 pico trillionth
N/A 10-9 nano billionth
N/A 10-6 micro millionth
N/A 10-3 milli thousandth
N/A 10-2 centi hundredth
N/A 10-1 deci tenth
210 ki kibi (kilobinary) 103 kilo thousand
220 Mi mebi (megabinary) 106 Mega million
230 Gi gibi (gigabinary) 109 Giga billion
240 Ti tebi (terabinary) 1012 Tera trillion
250 Pi pebi (petabinary) 1015 Peta quadrillion
260 Ei exbi (exabinary ) 1018 Exa quintillion
270 Zi zebi (zettabinary) 1021 Zetta sextillion
280 Yi yobi (yottabinary) 1024 Yotta septillion

For more detail see the NIST government site.

About the Author

My StackExchange profile

I have been writing code since I was 12 - I started with BASIC on a Commodore VIC-20. The first computer I owned was a Sinclair ZX-81 on which I progressed to programming Z80 assembler by the time I was 13, to speed up my games. My next computer was a ZX-Spectrum with a massive 48K RAM and 16 colors! I still fondly remember the hours spent designing bitmapped graphics for our games by redefining the character sets, one pixel at a time. (Life was so much better after my best friend, Rodney, and I wrote a program to let us cursor around an 4x4 grid of 8x8 characters (each character representing one pixel) to design our graphics.)

My first program:

    20 GOTO 10

Not long after this, I got in trouble and had to “write lines” as my punishment (you know, back when ill-behaved kids at school were punished for their insolence). So the output of another of my early programs was sent to the (dot matrix) printer after my teacher agreed to let me type out my lines for practice:

    10 FOR A = 1 TO 1000 STEP 1
    20 PRINT "I must not talk back to the teacher in class."
    30 NEXT A

The majority of my professional experience has been programming in C and Java in the networking and communications arena, and JavaScript web application programming. But in the very early years there was Pascal and COBOL (the horror!), and over the years there has been a fair amount of CLP and RPG on the IBM midrange AS/400 (aka the AS/400e, SYSTEMe, iSeries, System i, IBM i). On the markup side of things I have a deep understanding of all things “ML”, having worked extensively with the web and XML communications protocols.

My hobby programming activities are mostly in Java and JavaScript. My other hobby is photography. Between these two things plus family and work, my time seems to disappear like ice-cream at a kids party.