Category Archives: Uncategorized

A partial defense of master / slave nomenclature in technology

By now you’ve probably heard that there’s a movement to change various pieces of computing terminology that refer (or in some cases just appear to refer) to slavery or other terms that are racially sensitive. I’m in favour of making the world of software more welcoming to all kinds of people, and I think there is plenty of important work we can do here. However, some of the arguments I see people making here don’t make sense to me, and I’d like to explain why.

Before I get into the main argument, I’d like to make it clear that I respect the motivations of people who I’m not in agreement with on this, and I hope that this article can (in a small way) lead to more clarity on this point. Even if my argument is wrong, I hope that setting it out can help me and other people to understand the argument better and (if appropriate) why it fails.

An analogy is not an endorsement

Using a concept for a technical analogy is not an endorsement of that concept. We talk about killing tasks, zombie processes, dead code, flooded servers, etc. and none of these are indications that these are positive things or that we want to run human society in such a way.

The recent rise of containerised architecture has come along with a shift of thinking of servers from “pets” (cared for) to “cattle” (killed whenever convenient). I don’t have the statistics, but I imagine this shift has occurred at a time when more and more engineers are vegan or at least engaged with animal welfare issues.

I think most of us can see through this apparent contradiction: using the metaphor of servers as cattle isn’t making us more likely to kill animals for food, nor is any reduction in social squeamishness about animal-killing driving the containerisation boom. The metaphor is merely useful and (as far as I know) nobody has trouble differentiating the metaphor from the reality.

You can see elements of this evolution, much further down the track, in the word “workhorse”. I could refer to a server or a database engine or a keyboard as a workhorse and everyone would understand what I mean. This is despite the fact that there are fewer and fewer people still alive who remember horses being used as beasts of burden. The word, abstracted from its original concrete meaning, remains useful long after the reality has faded away.

An apt analogy can be useful

The technical use of master / slave is pretty narrow and specific; it isn’t applied arbitrarily. That some architectures have a single node making decisions and other nodes following that don’t make independent decisions is a real architectural fact. Other architectures don’t have this, and the difference between these architectures is not socially constructed but is a real engineering difference.

The decision to choose one architecture over the other is an engineering decision about the properties of the two systems, and even if you think modern life is structurally racist I believe you can agree that these decisions are made on their technical merits.

The proposed alternatives “leader” and “follower” actually blunt some of the descriptiveness. The servers we formerly referred to as “slaves” are not semi-independent servers that might sometimes have unique contributions of their own; they are limited to do exactly what they are told by some other server.

Why this is only a partial defense

The realities of human beings are complex, and words can have a power that cuts far beyond the logical implications of their etymology. I needn’t give examples of specific slurs for you to get my point: we can all call to mind many words that would be personally hurtful to us, or to those we care about, and with only a little empathy can foresee the potential impact on people who have nothing in common with us, but who we nevertheless don’t wish to see hurt.

It may well be that “slave” has become one such word, for people in the English-speaking world in the early part of the 21st century.

A word needn’t be hurtful to everyone in order to be worth retiring. The pain needn’t even be widespread; even a few percent of people being actively hurt by a word choice is probably too many.

If you’re in my team and a term we use is hurtful to you, I’ll do whatever I can to avoid that problem for you. If I’m working on a project where team members are being hurt by choice of language, I’ll support that team finding better language. Words exist to serve humans. But this adaptation is something we should do in the case of specific harm to individuals, not a vague sense of social harm.

How and where exactly to draw the line is difficult, but I think there is the potential to for some objectivity here. It would be unreasonable to expect that every injured person speak up, but some personal testimonies would help to build understanding. Surveys asking about personal experiences (not just opinion surveys) would be helpful. So far I haven’t seen any evidence of this kind offered by those who think our language needs to change.

Setting Effective Personal Goals

So you’ve decided you want to set yourself some personal goals to motivate yourself to achieve more. Great! But how to choose the right goals?

One common piece of advice, almost a cliche at this point, is to set goals that are SMART: Specific, Measurable, Achievable, Relevant and Time-bound (different sources will give you slightly different expansions of this acronym). I don’t disagree with any of this.

But how do you tell when you have picked the right level of challenge? You might constantly hit your targets, but have a nagging feeling that you aren’t working hard enough. And there’s a darker inverse of this: the person who constantly fails their goals but fails to realise that the fault is not in themselves, but in their goals.

I’ve been playing with an idea that’s inspired by an exercise in Steve McConnell’s book Software Estimation: Demystifying the Black Art. It involves making guesses about a series of quantities you can’t possibly know, such as the number of trees in Canada or the number of words in the complete works of Shakespeare (examples made up by me, I don’t have the book to hand).

The idea is not to try to a point estimate at the number, but to specify a range that you think is 90% likely to contain the real value. The real challenge comes not in picking a range that contains the real value, but in picking a range narrow enough so that you’re only right 90% of the time.

It would be trivial to say “the number of trees in Canada is between 4 and 7 trillion trillion”, but you’ll be right with probability 100%. It’s a much harder challenge to be right 90% of the time.

Of course, you can’t tell whether a single range estimate has a 90% chance of being right, because the only way to check it is to look up the real value, which only yields a single yes / no. But if you repeat this exercise with 10 or 20 different examples, you’ll start to see a pattern. Most people set their ranges far too narrowly, and are right much less than 90% of the time, but it’s also possible to get the feedback that you are being too pessimistic, and getting too many answers right.

I think something similar can be applied to personal goals: did you achieve 90% of the individual goals you set for yourself? If you achieved 100%, you could probably be aiming a bit higher.

To be clear about what I’m proposing, I think this works best when individual goals are binary (achieved or not achieved), and the feedback mechanism is the number of goals you achieve. In theory it might make sense to accept 90% completion of individual goals, but human nature is such that it just moves the goalposts: if you set a goal to write 10 blog posts but accept 90% completion, then you’ve really just set a different goal of 9 blog posts.

I’ve tried this myself, but not very formally. At one point I actually wrote a goal tracking system that would grade me on how close my task completion rate was to 90%, but I stopped maintaining it. But my experience of using this approach loosely has been pretty positive: it keeps me focused on achieving things but takes away some of the sting of failure if I miss a goal. More importantly, it keeps my attention on the fact that often a “failure” is actually a mistake in goal-setting, not goal-doing. I’d be interested to hear if anyone else has tried anything similar.

Clearing out the backlog

I was casting around for ideas of what I should be doing on this blog. In fact I have a lot of writing prompts that I gathered in the years when I was writing more actively and never got round to using.

I checked today, and to my surprise I have some 57 draft posts, which are of varying quality but have a few interesting thoughts among them. I’m going to discard many of them, but I figure that turning some of them into publishable articles is as good a way as any to overcome writers’ block.

I doubt many people will notice, but in case you’re wondering why I’m writing about things that seemed to be really hot topics nearly a decade ago, that’s why.