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 roulette games on SuperRuleta 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. 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. In a sense, I believe we all remain “monkey programmers” our entire careers - there’s always something new to learn, constant advances in computer programming with which we are not yet familiar.

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 free programs, code extracts, and articles on programming and technology.

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 notations for magnitude 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 Name Symbol Origin Derivation
210 kibi ki kilobinary (210) kilo (103)
220 mebi Mi megabinary (220) mega (106)
230 gibi Gi gigabinary (230) giga (109)
240 tebi Ti terabinary (240) tera (1012)
250 pebi Pi petabinary (250) peta (1015)
260 exbi Ei exabinary (260) exa (1018)
270 zebi Zi zettabinary (270) zetta (1021)
280 yobi Yi yottabinary (280) yotta (1024)

For more detail see the NIST government site.