Ground rules of computing

Most of this should be redundant to the computing professional. I hope it is obvious, regardless of religious, political or cultural affiliation. This is so often ignored by most of the materials you engage in when making decisions about computers; I thought I'd write it, if for nothing else than to provide myself of a written record of my current understanding, for future improvement.

Computers run within the laws of physics

This should not need to be re-iterated, but it often is a source of friction between me and the wider world. Because of this need to think within physics, which I am by no means an expert in, we immediately can throw away anything that is said to be free of cost into a container of nonsense and hype, designed to harm people.

A need for grounding in statistics

I know that there are lies, damn lies, and publicly quoted statistics. Of course there is nothing wrong with statistics, usually criticism comes from would-be pedants who cannot differentiate the exception from the average or common cases. Outliers are not inconsequential, and you need to be mindful of them, but probably won't reflect averages.

Things should be reproducible

The infamous IT catchphrase "works for me" or "works on my machine" is not good enough. Sadly we all say this sometimes.

My last time was just last week. I've still not tracked down what the root cause was, but working with another engineer we did release a patch for the issue, which was confirmed on two machines and we understood. We likely were not taking control of enough of the environment to guarantee reproducibility.

The greater the number of confirmations in a reproducible environment, the greater the chance is that something will hold true for the same environment. Clean rooms such as VM's and containers, disk images have come some way towards improving this. Sadly it's not an area given enough attention.

This is especially important as part of the environment may not be within our control, or may be unknown to the observer. Only through time, education and iteration will we gain the depth of knowledge to exert full-control over that environment and give better advice, and guidance to make good decisions.

Anything non-pure compute flows through memory

As I write this, I hope the reader is aware of this, but recently I've encountered technical leadership which astounded me by not knowing this, or over-simplifying their model of computing to infer this was not true. In most cases this means RAM, CPU registers or cache memory.

While I will accept that there are oddities to some computing models allowing direct read and write without deliberate usage of RAM; I've yet to find a suitable explanation other than "There is memory used somewhere, which may or may not be RAM, but is used for the same purpose".

Memory is just a place that is generally able to be a source of truth which is faster, so we go there rather than waste time for general-case. Those in business may see this as trading high fixed-costs, for variable-costs.

Traditional storage is also sequential in access from punch-cards to CD, DVD & Blu-ray, and spinning-platter hard-drives. There is a thing called a seek cost, because something mechanical needs to move to a place.

Takeaways