Notes on aspirational mental models

So I wrote a thing for the Lumi blog explaining how the new personalised topic timelines work.

I’ve really enjoyed implementing this chunk of work. Part of this is that I get to play with recommender systems and scoring algorithms and other fun stuff like that. Part of it is that I’ve been enjoying the process of developing it. It’s been a while since I’ve got to come into an unfamiliar code base of this complexity and been given the mandate to make sweeping changes to it (the last time would have been probably about 4-5 years ago at Trampoline Systems when I had only about 2-3 years of dev experience under me and was much less sure what on earth I was doing). So as well as doing the work I’ve been watching myself do the work and observing how I’m applying the tools of thought I’ve built and sharpened in the meantime to the task, and seeing if there’s anything interesting emerging that I want to pull out of the process and reify into something I can use again.

Well I spotted an interesting one. It’s something I’ve definitely found myself doing in the past, but I’d previously done it in a reversed order that caused me not to notice: When I design a system I usually start with an abstract model which I think is powerful enough to do what I want and flexible enough that I can modify it when I find that it doesn’t. So I start with a mental model of how the system is going to work and then add patches to it as I implement it and encounter how the real world is messy and complicates my nice abstract design.

Sometimes it turns out that the abstract design is flawed and I just have to replace it. Most of the time though I find it basically works except details, and those details are ones you can ignore unless you’re actually looking right at them, so I basically store it as “Here’s how to think about it. Here are some details that deviate from that”. It’s essentially what I said previously about having mental models as variations on mental models I’m already familiar with except the mental model I’m patching against is for something that never really actually existed.

What I’ve caught myself doing with the timeline work is reversing this process. Thinking back, this is definitely something I’ve done for a while but I’ve not been quite so overt about it and it feels like it’s worth drawing attention to.

Essentially the idea is I’ve built a mental model of how I want the timelines to work rather than how they actually work. Oh, I’ve got a mental model of the grim reality too, but I keep it alongside the shiny pretty one of how it’s supposed to work. I haven’t just pulled this out of thin air, I’m pretty sure it’s quite close to the intentions of the original authors. Certainly I talked to them heavily in building it. Bits of it though are definitely wholly of my creation.

How do I use this mental model? Well part of it is just as a vehicle for understanding – well abstracted models are easier to reason about. But I’m not that bad at reasoning about the detailed realistic model either.

I think the main use of this model though is that it’s a vehicle for change. When I’m trying to reason about how to improve things or make a new feature, I first design it against the aspirational mental model of how I want things to work. I then check it against the real model of how things actually work. Sometimes the result is that actually my idealised version is completely impractical and I stick it on the shelf of ideas that don’t currently work but I should remember to look at again later. Sometimes the result is that it will work fine with no real difficulties and I just implement it.

Often though the result is something more interesting: It will almost work, but there’s this detail where the real and the idealised versions of how things work don’t quite line up.

This can then be resolved in one of two ways. One is that this has exposed a flaw in the aspirational mental model and I have to update it (this doesn’t happen too often). The other is that I fix the code to look more like the aspirational mental model.

And this is really what I mean when I say that the model is aspirational. It’s not exactly a design document. It’s more of a tool to guide refactoring. It lets me simultaneously have the “system I would design if I could do a complete rewrite” in my head and not do that complete rewrite but still get about 60% of the benefits of doing so by fixing it whenever the fact that I haven’t gets in the way.

I’m still observing the effects of this and trying to decide whether it’s a genuinely good idea or whether I’m over-fitting, but so far it seems pretty good.

This entry was posted in Open sourcing my brain, Uncategorized on by .

Warning: This blog has secret mind control powers

I’d like to talk about writing ethics. I do some things which are obviously manipulative when writing this blog. I don’t know how transparent they are (if you’re trained in rhetoric they’re probably charmingly naive, though they might still work anyway), and to be honest I often forget that I’m even doing them – they’ve just become second nature – but they’re there in almost every post that is designed as a persuasive piece.

This post comes off the back of a twitter conversation with Jay about my use of “we” in “I am angry too“, and how it was essentially a rhetorical trick to claim legitimacy and get people on board with my point by identifying with me. It’s a fair cop. We then had a good discussion about our use of rhetorical tricks like this and whether this was OK. Here is something she wrote about this issue a while back.

I think it’s an important question. I believe I know my answer to it, but it’s still worth thinking about the issue.

But first, a digression.

In order to understand the ethics of this, and in order to understand why I do things like this, we first need to go meta and ask another important question: What is the purpose of this blog?

I’ve long maintained that the sole intended audience of this blog is me and that the rest of you are just along for the ride. Once this might have been true but it’s been a transparent lie for some time by now. Although many of my posts fall into this category (lets be honest, none of you care about my efforts at game design), a substantial proportion of my writing is obviously designed to be persuasive. I’m not usually trying to persuade myself here, so clearly there must be another intended audience and another intended purpose.

Thinking about it a bit more, the purpose of this blog becomes clear: The purpose of this blog is, of course, to invade your brain and take over your thoughts.

I don’t mean I’m trying to use it to turn you into mindless zombie drones obedient to my every whim or anything. That would be silly. I mean really, the very idea.

I have way better means of achieving that than mere writing.

No. What I want is not to make you obey every command I give you. What I want is for you to autonomously make the decisions I would have commanded you to make without my having to bother.

You think I’m joking. That’s OK. I get away with a lot because people think I’m joking. But, for once, allow me to persuade you that I am in fact deadly serious.

In order to do that we will have to step up a level again.

What is the purpose of persuasive writing?

Um. It’s to persuade, isn’t it?

Actually, no.

You see, if you were persuaded by a piece of writing then that means that either you didn’t really care very much about the subject matter in the first place or you already 80% agreed with it. It is essentially impossible for someone else to change your mind about an issue you believe strongly on.

Convincing fence sitters and people who are already mostly on side is certainly still useful. It bolsters your numbers and gets you more aligned along a single purpose. But these are fringe benefits. They’re useful, but they’re not really the main point. What you want is to get people who disagree with you to change their minds.

Pity it’s impossible, huh?

Fortunately, it turns out though that even though you can’t persuade people to change their mind, you can do the next best thing: You can make them persuade themselves to change their mind.

How does this work?

It’s simple really: You make them listen to your point. You make them remember your point. If you can you even make them believe it for an instant – not so it sticks, but so that later when they come to the scenario that you described and have cause to check what they believe about it they remember that they could have believed differently in this case. And then they question maybe whether they should.

You see, when you wrote that memorable piece, you may not have persuaded them, but you planted a seed in their brain. If it stuck then when your point is relevant to a situation they find themselves in, that seed will grow. It has found a chink in the foundation of their refusal to believe you and it can take root there, growing as each new experience feeds it. Eventually those foundations will crack and they will discover that maybe they agree with you after all.

Will that seed flourish? Probably not. But plant enough seeds and it hardly matters. That one may not have stuck, but another one might. The seed you planted in their friend might, and they might have another go. It’s not inevitable, but if you’re good at it, if you’re persistent at it, and if you’re simply lucky enough, eventually you will have a forest.

Why am I doing this? Why is it so important that I plant ideas in other people’s brains and persuade them around to my own point of view?

Simple, really. It’s because I want to take over the world.

Oh I don’t want power. Frankly, power sounds immensely tedious. What I want is much more subtle: I want the giant global brain to look like me.

You see, the world is broken. It’s broken in big ways, it’s broken in small ways. Some people don’t log stack traces with their exceptions, some people kill others for having a sexuality they disapprove of.

I am not very good at fixing the world. Some of this is just a lack of power – I’m just one person, not especially influential, I’m comfortable but not exactly rich, so the amount of actual ability to change the world I have is relatively limited. A lot of it is personal failings: I’m not great at taking action. I tend not to overcome the initial hump required to motivate myself to do so, I tend to paralyse myself with indecision over which cause to commit myself to. A variety of other issues you don’t care about.

But one thing I can do is influence other people to change the world for me. I mean sure, my audience isn’t exactly huge – I’d guesstimate that most of my serious posts get about 100 readers. Some of my more popular ones get more traffic than that, but I’ve seen the stats and most of you aren’t reading them. For example, my post about gendered anger has had about 1400 unique visitors so far, but of those three quarters have left the site in under a minute. Still, that’s 300+ readers. I don’t think hoping I’ve planted one or two seeds that will flourish is too over optimistic.

Is all this effort really worth it just to change a handful of minds? Sure. It took me maybe an hour to write that post. If all that results from that hour is that I’ve made a couple of people’s lives substantially better, job well done.

But that’s not all. You see, if I change those handful of minds, they have now become vectors for my zombie plague. They will talk to other people about this, maybe try to persuade them about it, maybe just link to my original post. I don’t care how they do it. The point is that by changing your mind you have not just changed your mind, you have implicitly committed to changing other peoples’. There’s no obligation of course – it’s not like you have to become evangelical about every idea that you become convinced of, but that doesn’t matter. It will happen anyway. You will talk to people, you will discuss ideas, and sooner or later those ideas will spread like a plague and eventually the world will be in the thrall of my all powerful grasp.

Err. I’m sorry. I got distracted there. What were talking about?

Oh yes. The ethics of rhetoric.

Let me present you with a scenario. You are facing an opponent in a friendly duel. You each have a short stick. Your goal is to be the first to poke your opponent with the stick.

Now suppose I offer you a stick that is twice as long as your opponent’s. Do you accept?

Of course you don’t! You’re a decent human being. You believe in fairness. You don’t want to cheat do you?

Now suppose I tell you that if you lose the game I will kill all your family.

Oh you want the stick now? Cool. Here you go.

There’s this notion that using rhetorical tricks is somehow unfair, or cheating. This seems to be particularly common amongst the scientifically minded and the left.

Personally I think this is wrong and is a fundamental misunderstanding of how language works and what it’s for. But that doesn’t matter.

What matters is simply this: Fairness is that thing you do when you’re playing games. It’s what you do when what you’re doing is unimportant.

I’m not saying everything I write about is earth shatteringly important and whatever means I choose to employ are justified. This is patently and obviously false.

But what I am saying is that I think that what I’m writing about is important enough that I’ve already chosen to invade your brain and take over your thoughts. On top of that, what’s a few subversively chosen pronouns between us?

Enjoy your new trees.

This entry was posted in Uncategorized on by .

How to get free tea from Pret a Manger

Note: For obscure and nefarious purposes I’ve decided I should write a little bit more about my life. I’m going to be starting with what entertaining stories I can extract from it, ideally dressed up as some sort of parable or life lesson so you and I can both pretend there’s some point to this.

So as you might have noticed, I can be something of an angry person. I hide it well, but it occasionally comes out in subtle and hard to read ways like telling most of the tech community that they’re utter hypocrites who need to learn to take responsibility for their actions. Things like that.

This is somewhat visible working with me. I’m very often visibly annoyed at things – software that isn’t working right, bits of the codebase that we’ve wanted to fix for ages and have never found the time for, etc.

I’m very rarely angry at colleagues though. Or at least, not to their face. I’ve sent an angry email or two (there was the “How dare you edit my words, you horrible little man! Do you know who I am?” prima donna email I sent once. It was totally justified), but nothing too serious. There have been some animated debates verging on full blown arguments, and I’m sure I’ve occasionally been short with people, but I’ve never actually yelled at a colleague.

Oh. Except that one time.

Picture a scene. My colleague is sitting in his chair, wearing a perfectly respectable suit. I am standing near him. We are arguing. I am illustrating my points by gesticulating with a (thankfully mostly empty) mug of tea.

I am not wearing a suit.

More specifically, I am wearing pyjamas.

Not just pyjamas of course. That would be silly. I also have a dressing gown and slippers on.

There is a towel draped around my neck.

Back to the argument. It is fairly heated. Eventually I shout at him. What do I shout?

“NO”, I declare “This is SCIENCE. YOU do not get to have an OPINION about SCIENCE!”

Lets rewind.

There are a number of things confusing about this scene which will make more sense with more context.

For example: Why was my colleague wearing a suit? He was a programmer. This was a startup. We don’t wear suits. The very idea is ludicrous.

In order to explain this, I must tell you an important fact: This was a Friday. This particular Friday was also Halloween, but I think that was more an excuse than a reason.

Earlier that week Charles, our CEO, had got it into his head that it would be an amusing team building exercise to invert normal corporate culture. “Many companies”, he said, “have a dress down Friday, in which people come into the office in casual clothes. But this company couldn’t dress down any further without getting arrested, so instead lets have a dress up Friday in which everyone comes in in suits”

“Can’t dress down further?” I thought. “Well that sounds like a challenge”

Which is why on that particular Friday morning I put on my pyjamas and dressing gown, donned some shoes I owned that looked remarkably like slippers (this was before I realised that flat feet and shoes designed to feel like barefoot were a terrible combination), stuck a mug in one dressing gown pocket and a wallet in the other, artfully arranged my towel and set forth for the tube.

I have learned interesting things about how Londoners behave when you do strange things on the tube. I learned it this time and confirmed it when I later carried a giant frog with me on the tube (it was a wedding gift).

They don’t look at you at all. They’re afraid that if they make eye contact the crazy person will come talk to them. So they very scrupulously pretend everything is normal and keep reading their papers.

Except children.

It might be more curiousity. It might be less fear of awkwardness. Whatever it is, children are entirely happy to ask you what on earth it is you think you’re doing?

Which is why the only remarkable feature of the tube trip to old street was when a child asked his mother “Why is that man wearing pyjamas?” and she replied “I don’t know. Maybe he forgot something?”. I politely explained that I was wearing a costume for halloween. It was mostly true. She looked very relieved.

Eventually I got to Old Street. There I ran into my colleague, Jon. He didn’t look half as scary then as he does now, but he was still suited up and with his shoulder length hair tied back into a (very short) pony tail he was definitely giving off a bit of a Mafia enforcer guide.

He saw me from across the station and thought “Ha ha. There’s some idiot wearing pyjamas. That’s the sort of thing some of the nutters I work with would do…. Wait. Hang on”

So from there we proceeded to work together. Of course now people would look at me. A guy in pyjamas might be a dangerous lunatic. A guy in pyjamas accompanied by a Mafia enforcer is more likely to be performance art. This is East London after all. We definitely got some amused smiles and laughter as we passed.

En route we stopped at Pret a Manger so I could get some breakfast and tea.

The tea was needed to complete my costume. I presented my empty mug and politely asked the girl behind the counter to fill it with tea and could I have a croissant please?

Eventually she stopped laughing. She comped me the tea (Allegedly because I had my own mug, but I’m choosing to believe it was out of respect for the gown). Alas I still had to pay for my croissant, but I guess a gown only gets you so far.

Tea in hand, Jon and I finally proceeded to the office. I put on my best sleepy just-got-out-of-bed face and ambled in through the door, yawning.

There was laughter and a certain amount of respect, but ultimately not all that much surprise. As new people came in we occasionally had conversations to the tune of “Are you wearing pyjamas?” “Yes” “Why?” “Because Charles set a challenge, and I could not in good conscience refuse it” “OK”.

Besides, it was hardly the strangest thing anyone had ever worn to work in that office.

After not too long we settled down. Some of us were in suits. Some of us were in pyjamas. It was fine. This was the new normal. We adjusted.

The new normal

Aww. I was so young and cute! I still had hair and glasses!
Picture taken by my friend, and colleague at the time, Al Davidson

And this, you see, is why when I was shouting at my colleague I had pyjamas and he had a suit. It was normal. Everything makes sense with enough context.

Why was I yelling at a colleague about science?

Simple really.

I have a few hot button topics. Subjects on which my normal insistence on reasoned discourse frays and I find it hard to treat matters of disagreement as reasonable positions to take and instead take them as evidence that the person in question is a terrible human being.

Which is why, when the colleague in question was talking to his neighbour about how global warming was just a big conspiracy by the governments of the world to extort more tax money from hard working individuals like him, I didn’t take it very well.

I was working on something at the time. I’ve no idea what. I had a very researchy job then, so it was probably something to do with network analytics or text processing. I’m going to pretend I was doing something clever, but five chances out of six it was more likely to be tweaking an SQL query or munging large volumes of text through GNU sort.

It doesn’t matter much though, because in the presence of climate change denial going on not 3 meters from me it wasn’t really going to happen. I spent about 5 minutes gritting my teeth and telling myself not to get involved. Then I got involved.

I don’t remember the details of our conversation. I imagine there was a lot of back and forth with me quoting the facts and him weaving conspiracy theories. I do remember what lead up to the punchline though.

Look. You are a programmer. You are not a climatologist. There are a very large number of climatologists, whose job it is to study these things, who actually know what they are talking about and have hard evidence for it who say that you are entirely wrong.

That may be, but my opinion-

NO. This is SCIENCE. YOU do not get to have an OPINION about SCIENCE!

Which is why, on this particular Friday, in the middle of our office, I was in a dressing gown yelling about science at a colleague in a suit. Obvious, really.

This entry was posted in Isn't my life interesting? on by .

I am angry too

Hilariously, not 6 hours ago I published a post mentioning how I try not to swear on my blog these days. I’ll try to stick to that, but I’m currently so angry that I’m holding onto my rage by my fingernails. Some (much) profanity may slip through.

For those just joining us at home. Shanley is a woman who works in tech and who writes about her experience as such, often from a feminist perspective. Recently she wrote Things I Never, Ever Want to Hear Again which is basically “Here are some of the ways in which men behave awfully in response to the things I regularly talk about. Please stop”.

Twitter is currently exploding with men doing all those things in response to it. Here are some examples.

You see, apparently the problem with Shanley’s post is how angry she was. Honestly, it’s so unproductive. We men are just telling her to be less angry because we want to help her achieve more constructive results. Don’t you know that you catch more flies with honey? Anger is harmful and we don’t like it.

This is, of course, complete and utter fucking rubbish.

The tech community loves anger. We rant all the time. It’s a wonderful spectator sport! People find things they don’t like and they complain about them. And the rest of us chuckle along at home and nod sagely at the the person who is clearly venting and is expressing the rage we also feel in an entertaining manner.

Think of our angry tech celebrities. What happens when you say “Linus Torvalds is a very smart man, but I wish he’d be less angry about it”?

Of course what happens is that everyone nods and agrees with you and says how they’re very impressed by all the things he’s done but boy his attitude is destructive isn’t it?

Wait. No. That’s not what happens at all.

Instead they tell you that he’s just blunt and direct and he gets things done. What are you, some sort of politically correct corporate weenie who is shilling for Microsoft in order to sabotage our beloved open source utopia? How very dare you!

There are plenty of other examples of lesser fame. There’s Zed Shaw, who we all love to hate and sure we think he’s obnoxious but hey why don’t you read this post by him it sure hits the nail on the head.

Hell, way down at the bottom of the scale there’s even me. I’m not without my share of angry tech rants, and people sure seem to enjoy them (for comparison, the angry version of my error reporting manifesto is the one that keeps getting linked to and has at least twice as much traffic as the rewritten one).

We are an angry community. Some of it is real, some of it is for our own entertainment, but many of us are full of anger and it is an entirely normal part of the way we communicate.

But let a woman tell us how our community treats her and people like her and that she’s maybe a little bit peeved about how many people respond to her points in exactly the same fucking way, over and over and over?

Honestly. Why is she so angry? It must be because she’s one of those feminist women! She must have issues! I’m glad us mean are more rational so we can respond calmly and point out that she has some good points but could she maybe say them a little more quietly so we don’t have to listen and can thus go about fixing the issues! Thanks, there’s a dear.

Little bit of a difference there, isn’t there?

The problem isn’t anger. The problem is empathy and responsibility. The problem is sheer god damn hypocrisy.

When people rant about tech it’s something that has bearing on our life experiences. We all see the problems and experience them and can relate to them. Their anger is legitimate because it corresponds to our life experiences.

But when it’s something that only a minority of us experience? Most of us are men, and as such we don’t have the same experiences as Shanley and have trouble relating. Which means that unlike the anger about error reporting, which is totally legit, her anger is wrong, it’s unconstructive. We don’t understand it, so she must be angry over nothing, right? It can’t be a real problem or we’d have seen it.

But it’s more than just an inability to relate of course.

Suppose someone was ranting angrily about people who get some aspect of literary criticism wrong. It might be entertaining (I sure enjoy such things), but we wouldn’t be able to relate. Would we react in the same way?

No of course we wouldn’t. We’d just shrug our shoulders and not care that much.

The problem with complaints about sexism isn’t just that we don’t relate to them, it’s that they make us uncomfortable. We don’t want to be made uncomfortable, so we try to soften the blow by making them not matter. By telling her that maybe she should stop being so angry about the constant abuse and derailing she gets. Because we’re so helpful. See how we’re helping?

Well you’re not fucking helping. You are being part of the problem. Now own up to your hypocrisy, take some responsibility for your actions and the actions of the community you are a part of and realise that maybe you should be angry about this too.

Now. With all this in mind, here’s what I want you to do. I want you to go back and read Shanley’s post again. Don’t ignore the anger. It’s there. It’s legitimate. Instead acknowledge it and listen to the message. She is telling you her experiences. Listen to this, take it on board, and consider the fact that she might be right and by focusing on her tone instead of the message you might be part of the very problem she’s talking about.

This entry was posted in Feminism on by .

Blog editorial guidelines

I mentioned on Twitter the other day that one of my reasons for being embarrassed by my old post on perfect voting was that it violated my modern editorial guidelines for this blog. Jay asked me if I’d written these up anywhere. I haven’t, because they’re mostly informal, but it seemed like a good idea.

I started writing a bit about tone and theme. This got onto a massive digression about the purpose of this blog, the nature of blogging and various theories of mind. One of the theme rules is “Stick to a coherent single thread of argument rather than bringing in everything relevant you can think of” (this is mostly because if I don’t do this the post will end up languishing in the drafts folder for eternity), so this post is only about specific concrete things I do. Much of the tone stuff simply boils down to “Conversational tone with an eye towards persuasion. Lecture if you must, but if you do try to keep it short and entertaining”

  • Be absolutely scrupulous about citations. If something isn’t by me or I’m quoting someone, say that this is what I’m doing. I will occasionally quote without asking permission, but if I do this then I will attribute only if the quoted thing is publicly visible (e.g. something someone said off twitter), else it will be anonymized. Citations of public things should be links to where they were. Citations of offline conversations I tend to make a judgement call for the initial version on making it either anonymous or by first name then ask about their citation preferences for the thing in question (I often do this after initial publication). I haven’t totally sorted out the etiquette here, but the basic goal is cite people as they wish to be cited. Never fail to cite people.
  • Where I am talking about a subject on which I lack sufficient knowledge to be confident about what I’m saying, I should make this clear. This isn’t a requirement for full disclosure of credentials/privilege/etc everywhere ever, it’s simply that I tend to write in a very similar tone whether I’m speculating or actually confident about what I’m saying and I don’t want people to confuse these.
  • The pronoun for a person of unspecified or non-binary gender is they. If a specific person strongly insists on a pronoun that isn’t they, use it, but if they’re OK with they but have a mild preference for a more exotic choice (ze/it/he/she, etc) stick to they. The phrase he/she, him or her, etc. are entirely verboten. Try not to make assumptions about peoples’ preferred gender and default to they if I am unsure (I don’t always do this last one brilliantly). Note: I am not an expert on trans etiquette. I believe this to be correct behaviour. If it is not, I welcome corrections and will take them on board (the one exception is that I suspect people will dislike that I default to they even when people mildly prefer another. I do this for reasons. Those reasons will be readily overcome by strong preferences but not weak ones).
  • Avoid ableist terms. Wacky and outrageous things are not crazy. Ideas which on a moment’s reflection prove to be bad are not retarded. Things that are confused about their nature are not schizophrenic. Failure to be good at details is not having ADD. I do this variably well. I’m not very good at remembering not to use “crazy”
  • Profanity is… not exactly to be avoided, but to be thought about carefully before use. Most profanity has unfortunate connotations, and the few remaining ones I find acceptable I tend to overuse. It’s a lazy rhetorical crutch and it puts some people off if I swear too much, so I try not to on here. I don’t do a very good job on this one. Also note that some posts are explicitly rants designed to blow off steam. All profanity filters are off for these ones.
  • I have a historic tendency towards using ludicrous over the top descriptions/threats of violence to illustrate points (e.g. “people who do that deserve to be set on fire”). Don’t do that, any time ever. I think I’ve successfully censored this trend on here. I sometimes forget myself and do it on twitter. I mean to stop doing that. I think it has its place as a source of humour/blowing off steam (my humour can get pretty dark when I’m in company where I think it’s appropriate), but that place is emphatically not in public on a medium where people routinely use actual threats of violence as a way of responding to voices they don’t like.

I think there are other rules I try to stick to, but these are the only ones I can think of consciously checking for and needing to edit to follow. I generally think they’re pretty good ideas, so I’d encourage you to follow them as well. Conversely, if there’s anything I should be doing that I’ve missed I’d encourage you to tell me.

This entry was posted in Admin on by .