In. Sub. Ordinate.

In. Sub. Ordinate.

By Frances Buontempo

Overload, 29(161):2-3, February 2021


Mindless rebellion is mindless. Frances Buontempo encourages mindful consideration of when to refuse.

Yet again no proper editorial from me. I just won’t do the thing. Oh well. Not everyone does what they are told. Whether we’re talking rebellious children, defiant pensioners, eco-warriors or the population at large picking and choosing what advice they are willing to follow, everyone is insubordinate from time to time. Why do we obey any laws or suggestions? Many philosophers have asked this question, including Hobbes, Locke and Kant. They suggest some form of social contract, whereby people give up freedoms either for absolute government avoiding the prospect of anarchy or less extremely than Hobbes’ view, increasing the chance of respect and a quieter life [Wikipedia-1] What would happen if all laws were abolished is an interesting, but ultimately unanswerable, question. Laws are laid down, and often, though not always, obeyed.

Some laws are more observations than laws. Moore’s ‘law’ springs to mind. His observation that the number of transistors tended to double every two years captures a trend in data which seems unlikely to continue forever [Moore]. There are many similar observations in computing, regarding storage and so on. These are not laws. They are neither enforced nor does anyone run the risk of incarceration if they disobey. On the other hand, many outfits have coding ‘guidelines’ which are more like actual rules, either officiously enforced or automatically applied. I recently set up the Python formatter Black [Black] on CI for a new repo because our coding guidelines say ‘We use Black’. It describes itself as an uncompromising formatter, so that “Formatting becomes transparent after a while and you can focus on the content instead.” What has in fact happened is a whole slew of commits with messages like “Black, oh why? Oh why?” or “Black. Again. Grr”. If I change the CI step from just checking the formatting to reformatting, or set up pre-commit hooks, that would avoid the agro. Black could then silently do its thing with whitespace so we can concentrate on the code in between the spaces. Or I could remove the step from the CI build in a small act of rebellion. Little victories.

The UK had all kinds of guidelines and rules to attempt to keep us safe from COVID-19 over the Christmas holidays. How obedient was your break, if you had one? Did you stay indoors, video conference your family, say hello to neighbours from two metres away and above all costs only sing if you were in a choir, or alone in a shower? Our mixture of rules and guidelines are somewhat confusing and prone to last minute change. Some are using this as an excuse for disobedience. Many are trying their best, though under a little duress. Where the rules seem to make no sense, it’s useful to be able to discuss why and what the alternatives might be. With difficult political situations that’s not always possible. Having a discussion about code format and formatters seems likely. Asking our parliament why they issue the guidance they have seems less so.

Now, insubordination and disobedience differ. The former involves a refusal to be lorded over, rejecting submission to a supposed higher authority. To disobey, in contrast, is a more direct refusal to comply with a given instruction. The diktat is snubbed not the dictator. It is possible to do exactly as you have been told and, while not disobeying, you can nonetheless be insubordinate. Your computer may well obey you, but may appear to be attempting some kind of insurrection or at least insubordination at times. Upon the bash instruction echo variable the defiant machine will echo variable verbatim to the screen, rather than the contents of the variable, since you forgot the dollar sign. Flip. It could be worse though; sometimes computers try to guess what you really meant. Don’t get me started on autocorrect. Undefined behavior is neither insubordinate nor disobedient. Walking off the end of an array allows your compiler to do whatever it feels like, if you believe computers have feelings. Obedience isn’t always helpful.

Furthermore, doing exactly what you are told can cause all kinds of trouble. The phrase ‘work to rule’ springs to mind. Rather than striking, employees may take to doing exactly what the rules say, as a “form of industrial action where the employee will follow the rules and hours of their workplace exactly in order to reduce their efficiency and output.” [Voice] So often, extra voluntary duties keep the wheels moving. By calling this form of action work to rule, the degree of spikiness is obvious, pointing out that much of the day to day work involved is above and beyond written and signed off contracts. Let’s avoid devolving into discussions of workers’ rights: that strays far too close to me writing opinions and puts this in danger of becoming an editorial. Totally unacceptable.

Doing exactly what you are told can get you into trouble, even if you are really not trying to be insubordinate. My special superpower is following instructions, often to others’ bemusement, with unexpected consequences. This probably means I should go into software testing when I grow up. Have you ever read instructions and followed them precisely? Try it on a document you have written, or a recipe or DIY instructions. Don’t do what you think you wrote, do what you actually wrote, or at least consider what that might involve. Writing clear instructions is a hard technical job that few of us are any good at. Though I could relay many personal stories, I shall stick to one. For a practical science exam, the first instruction was to find the volume of a cylinder. To my mind, the capacity was the amount of volume of a liquid I could fit inside the cylinder, so it stood to reason that the volume of the aforementioned cylinder was precisely that. I therefore set about trying to find how much volume the walls of the cylinder would displace, much to the consternation of my teacher. Having noticed her facial expression, I read the subsequent instructions and concluded I would need to know the capacity of the container in order to proceed. Lesson learnt. The instructions are usually wrong – read them all first to decide how insubordinate you need to be to accomplish your mission. How many times have I followed steps one at a time, to find the next sentence says don’t carry out the last step under some specific circumstances? If you write up instructions please, please, please put the instructions inside an “If” so Fran doesn’t break stuff. Glancing ahead, and wondering “Why am I being told to do this?” helps one to discern the actual instructions or indeed alternatives. A small degree of disobedience might genuinely be in the best interests of all involved: no insubordination intended.

Trying the software you have written and discovering what happens when you stray off the ‘happy path’ can be illuminating too. What happens if you press the same button twice? What happens if you don’t enter your date of birth? If you don’t have the imagination, try sitting with someone else using your creation. No matter how obvious or clear you think something is, there is always a chance someone else may have different ideas. In fact, you sometimes look back at notes you have previously made and either can’t read your own hand-writing or have no idea what you were driving at originally. Sometimes things don’t pan out, despite an attempt to follow instructions.

Following instructions can even cause no end of trouble. There’s a long standing tension around the subject of tax avoidance and tax evasion. I have to concentrate on which is which. One involves obedience, sticking to the law, doing as instructed and thereby paying less tax than you would have had you not stopped to think through which numbers to put in which boxes or paid an accountant enough to put the right numbers in the right boxes. The other involves lying and not owning up to cash-flows you owe tax on. So often big tech companies have been called out for ‘not paying their tax’, though they seem to be sticking to the rules on the face of it. They don’t seem to be money laundering, though by registering different parts of their business in different countries, they do seem to have managed to optimise their bill. Is this a crime? Probably not. Does it seem unfair? Well, maybe. Many criticisms are levelled against big tech companies, variously referred to as FAANG (Facebook, Amazon, Apple, Netflix and Google) or the Four (Horsemen (of the apocalypse implied here)), stretching far beyond questions about tax payment and accounting. ‘Avoid taxes, invade privacy, and destroy jobs’ according to some [CNBC]. Whatever you think, I suspect no company would have that as their mission statement. I suspect many of us have a ground state of suspicion of those who are incredibly rich. Forbes announced that Jeff Bezos became the richest person ever last year [Forbes], worth over two hundred billion dollars. I suspect it’s very hard to put anyone’s true worth into dollars, but you can look up stock prices and that is a mind-boggling amount of money. Does wealth imply criminality? Nope. Does criminality imply wealth? Again, nope. Are any companies disobedient or insubordinate? That might imply a company has a mind of its own, which seem unlikely. I’ll leave you to decide for yourself if huge wealth leaves you feeling slightly queasy though.

Should we pay our tax? Both Matthew and Mark’s gospels say “Render unto Caesar the things that are Caesar’s.” This may well not mean you must pay tax, since there are various ways to interpret the text. Tax revolts, including at the time of Jesus, have been common throughout history. Wikipedia offers a list of what it calls tax resistance [Wikipedia-2], pointing out it has been suggested that such resistance has caused the collapse of empires. The resistances often involve refusing to pay part of a tax which is considered unfair or even immoral. The Quakers refused to pay taxes for equipping soldiers, according to the aforementioned Wikipedia site. Many other examples are listed. Other times people do obey the law, at least to the letter, if not the spirit. At one point in British history, a tax was introduced on windows; the building rather than computing kind. You still see many bricked up windows on old houses. You can’t be taxed on a window that’s no longer there. Insubordination? Yep, why not. This reminds me, I really should pay my self-assessment tax shortly.

We have seen that some laws are neither legal nor scientific laws, more observations of trends over time. We have observed that some guidelines are more like laws, for example strictly enforced coding standards. I mentioned Python formatters. It amuses me that Python uses whitespace rather than braces to avoid arguments about brace placement and other layout discussions, the idea being there should be one true way so we can concentrate on code. And yet, here we are, with a choice of Python formatters. The PEP8 guidelines [PEP8] point out style guides are about consistency, assuming that a lack of consistency harms readability. The guide reminds us, “A foolish consistency is the hobgoblin of little minds.” To some Hobgoblin is an ale, to others a Marvel character, but the Emerson quote refers to a fairy creature that lives in the hob or fireplace. It seems Emerson, in fact, was encouraging non-conformity [Stanford] and perhaps some form of insubordination in order to become truly self-reliant. Guidelines and rules may be there to try to keep things running smoothly and to keep us safe. Sometimes mindless obedience makes things worse, though. A spot of anarchy once in a while never hurt anyone. Rules should make life better and easier; if they don’t, question them. In an article in this edition, Bjarne Stroustrup says “Design and programming are human activities; forget that and all is lost”. Let’s not get lost.

References

[Black] Python formatter, Black – https://github.com/psf/black

[CNBC] Four – https://www.cnbc.com/2017/10/02/scott-galloway-the-four-amazon-apple-google-facebook.html

[Forbes] Riches Billionaire – https://www.forbes.com/sites/jonathanponciano/2020/08/26/worlds-richest-billionaire-jeff-bezos-first-200-billion/

[Moore] Moore’s Law – https://en.wikipedia.org/wiki/Moore%27s_law

[PEP8] PEP8 Guidelines – https://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

[Stanford] Stanford Encyclopedia of Philosophy: Ralph Waldo Emerson – https://plato.stanford.edu/entries/emerson/

[Voice] Working to rule – https://www.voicetheunion.org.uk/working-rule

[Wikipedia-1] Social contract – https://en.wikipedia.org/wiki/Social_contract

[Wikipedia-2] Tax resistence – https://en.wikipedia.org/wiki/List_of_historical_acts_of_tax_resistance

Frances Buontempo has a BA in Maths + Philosophy, an MSc in Pure Maths and a PhD technically in Chemical Engineering, but mainly programming and learning about AI and data mining. She has been a programmer since the 90s, and learnt to program by reading the manual for her Dad’s BBC model B machine.