Software Monkey

just write the code already


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

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 StackExchange profile

Most of my professional experience has been programming in C and Java primarily in the networking and communications arena. But in the early years there was Pascal and COBOL (the horror!), and for the last 15 or so years there has been a fair amount of CLP and RPG on the IBM midrange AS/400 (aka the iSeries, System i, IBM i and whatever name IBM’s schizophrenic marketing department comes up with next week).

On the markup side of things I have had to learn a working knowledge of HTML, CSS and a multitude of XML dialects.

My hobby programming activities are mostly in Java, but I enjoy experimenting with Haskell 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.

Why Software Monkey? Typically the term “monkey” is applied to a junior level and inexperienced person in a particular trade or discipline, and I’ve been doing this a long time. But I use the term self-deprecatingly to remind myself that every 5 or 10 years I look at my old code and think how much better it could have been done. There’s always something new to learn, constant advances in computer programming with which we are not yet familiar.