Category Archives: life

How to not be late

Being late bugs me.

I don’t mind so much when other people are late (within reason) but I really hate being late myself, and I hate it when other people make me late.

In observing how this comes about recently, I’ve come to realise that a lot of why people are late is because they just don’t know how to be on time.

Fortunately, this is easily remedied. Being on time is in fact very simple. It may not be easy, but it’s simple.

If you wish to be on time, you need to aim to arrive early.

Why? Because if you’re arranging to arrive on time, then if anything goes wrong you will be late. And given the tendency to optimism in planning, things will go wrong more often than not.

This is particularly true if you have scheduled connections to make. If your trains run every half an hour, then being five minutes late for your train will make you half an hour late for the next stage of the journey. These things compound.

What this means is that if you want to not be late on a multi-stage journey you need to plan for redundancy. Tight connections mean you will be late.

The other way to not be late is of course simply to not aim to arrive anywhere in particular at any particular time. When you’re in control of your own schedule, this is entirely viable, but it’s much harder when coordinating with other people.

This entry was posted in life on by .

Against Virtue Environmentalism

I came up with the term “Virtue Environmentalism” recently and I think it’s a good one and will probably be using it more often.

This came up when talking to a friend (this really is a thing that happened to a friend, I promise, though some parts of it also apply to me) about a frustrating experience he’d had. Afterwards he vented at me about it for a bit and we had a good conversation on the subject.

The friend in question cares a lot about the environment. He’s mostly vegan and donates a lot of money  to a variety of environmental charities and generally spends a fair bit of time stressing out about global warming.

But he also drives. Like, a lot. And I don’t mean a Tesla (I don’t know enough about cars to tell you about fuel efficiency, but it’s a conventional engine). Both short distance and long road trips. There’s no physical reason he has to drive – he’s in tolerably good shape and could definitely cycle a lot of the places he drives to if he wanted, but he really likes driving.

These aren’t inconsistent positions. I don’t think I was the one who convinced him of this, but he’s basically on board with the idea of donating instead of making personal interventions. He’s decided quite reasonably that his life is significantly better for all this driving that he’s willing to make the trade off, and he donates more than enough to be massively carbon negative despite it even without the veganism.

But someone he met at a party recently really took issue with that, basically calling him a hypocrite. I’m not sure how the subject came up, but it got quite heated.

Over the course of the conversation it emerged that the person in question was not vegetarian and did not donate anything to charity, but was very conscientious about taking public transport everywhere they couldn’t cycle, turning off all the lights, recycling everything, doing home composting, etc.

One of these people is making a big environmental difference. The other one is giving the person who is making a big environmental difference a hard time for not making a big enough difference.

(Note: This account has been somewhat fictionalized to protect the guilty)

I’m going to start describing this behaviour as virtue environmentalism.

The term comes from ethical theory. Approximately, we have consequentialist ethics and virtue ethics (it’s more complicated than that, but that’s the relevant subset here).

Consequentialist ethics says that ethical behaviour comes from acts which produce good outcomes, virtue ethics says that ethical behaviour comes from acts which exhibit virtues.

Similarly, consequentialist environmentalism says that environmentally friendly behaviour comes from acts which produce environmentally good consequences, while virtue environmentalism says it comes from acts which exhibit concern for the environment.

So, donating money to charity is consequentially good but mostly not a virtue – sure, you might as well do it, but it’s not real environmentalism.

My biases are clearly showing here. I largely subscribe to consequentialist ethics, but think virtue ethics has its place. There are good arguments that virtue ethics produces better consequential outcomes in many cases, and also that it produces better adjusted people. I’m not sure I buy these arguments, but it’s a valid life choice.

But virtue environmentalism is mostly bullshit.

Atmospheric carbon and other greenhouse gasses are amongst the most fungible types of harm out there. If I pump 100 tonnes of carbon into the atmosphere (a very high footprint) and extract 110 from it into some sort of long term storage (e.g. donating to prevent deforestation or plant new trees), then I’ve removed ten tonnes of carbon  from the atmosphere and as a result I’ve done more good than someone who has only pumped 5 tonnes of carbon into the atmosphere (a very low footprint) but hasn’t removed any.

Virtue environmentalism largely results in three things:

  1. Spending lots of time and effort on actions that make no practical difference at all but are highly visible.
  2. Feeling good enough about yourself that you don’t perform the actions that would actually help.
  3. Pissing off other people and making them care less about environmentalism overall.

The third is particularly important. If we want our descendants to not gently broil in the inevitable consequences of our own environmental waste, we need to get everyone to start to taking this seriously, and if you keep telling people that the only valid way to do environmental change is this sort of hair-shirt-wearing nonsense then the result will be that people do neither that nor the actually useful actions they would probably be quite happy to do.

If you want to do “environmentally friendly” things that don’t help much but make you feel better then sure, go for it. But stop expecting other people to do the same if you actually want to help the planet instead of just feeling good about yourself.

This entry was posted in Charitable giving, life on by .

In defence of developer exceptionalism

Epistemic status: I am thinking through a possible position out loud. While I believe the argument I am making in this post, I am not totally convinced by it. I am aware of a number of counter-arguments that I do not touch on here.

There’s a rather annoying attitude that often comes up: Software Developers are special and you should treat them differently from everyone else when designing how your organisation works.

I don’t think this is true. Software development is knowledge work with a fairly logical (though less logical than we like to pretend) basis, and most of the specific features of it as a profession just emerge out of that.

But I am starting to think it might be useful.

There is a category of argument I have often encountered in negotiation (not at all coincidentally, usually right before I turned down a job offer or shortly before I left a company). I call it the “We can’t treat you fairly because then we’d have to treat other people fairly too” argument. e.g. I’ve seen this in requests for flexible working (I like four day weeks a lot, and will in general happily take 80% of the salary for a 4 day week) where the response to the request is “But loads of people want that and if you had it they’d ask why they can’t have it too.”

My attitude to this in the past has always been “Well, why can’t they have it too?”

This is, of course, still my attitude, but I’ve come to accept that it will win the argument precisely 0% of the time.

The problem with accepting arguments of the form “Why should you get this treatment if everybody else does not?” is that they remove all possibility of incremental change. Even when everybody should get something, there’s probably no route to that that doesn’t pass through some people getting it and not others.

One example of where this comes up in a more explicitly developers vs non developers scenario is in responses to things like “Why you should not interrupt a programmer“. Every time this or similar is posted, a lot of my friends become angry and say “Programmers aren’t special! You shouldn’t interrupt anyone!”.

This is more or less true (there are large categories of jobs where it’s not only fine but desirable to interrupt them because that’s what their job is. But for basically all knowledge work and a whole bunch of adjacent jobs it’s true). You shouldn’t interrupt anyone.

But it’s a lot easier to win arguments about not interrupting programmers.

And, perhaps, it’s a lot easier to win arguments about not interrupting other people once you’ve established a norm that it’s not OK to interrupt programmers?

And this is why I think developer exceptionalism might be useful. Not because developers are exceptional, but because it is a place where we can put the thin end of the wedge.

A lot of how business is run is very dysfunctional, and exceptionalism gives us a convenient way of side stepping that.  If your business is very interrupt driven but you can establish a small island of uninterrupted calm around your programmers, maybe later the designers can come join you on the island? And maybe after that marketing can note that actually a lot of their work involves pretty intense thinking like that and they’d like to be uninterrupted at least some of the time and…

I can’t promise that it will work, but I’m pretty sure it won’t work without. Systems are quite stable without something to shake them up, and without some specific argument that you should be treated specially, you’ll be treated the same way as everyone else: Badly.

Exceptionalism and solidarity feel fundamentally at odds, and perhaps they are, but perhaps solidarity without the permission to occasionally engage in exceptionalism is just a crab bucket, and the best way to get everyone to where you want them to be is to let some people get ahead by whatever means necessary and then pull the others up behind them?

Of course, if this is going to work you have to actually pull people up behind you.

The correct progression is:

  1. “You can’t have X”
  2. “But developers are special!”
  3. “OK fine developers can have X”
  4. “You can’t have X”
  5. “But the developers have X and it worked really well at improving Y which is also our problem”
  6. (Developers chime in) “We can totally back that up. This is what we’ve seen out of X and it really does help with Y”
  7. “Oh OK, you can have X too”

An incorrect progression would be:

  1. “You can’t have X”
  2. “But developers are special!”
  3. “OK fine developers can have X”
  4. “You can’t have X”
  5. “But the developers have X and it worked really well at improving Y which is also our problem”
  6. (Developers chime in) “No! X is only for developers! You are not a developer and thus are not special and cannot have X”
  7. “You can’t have X”

If developer exceptionalism is to be a useful lie then we need to do two things:

  1. Never forget that it is a useful lie and not actually the truth.
  2. Have other peoples’ back when they try to follow our lead.

Otherwise it’s just developers being privileged jerks, which we have quite enough of already.


This entry was posted in life, programming on by .

The DRMacIver survival kit

Up front warning: These are all affiliate links. I doubt I’ll get much out of that, but I have it set up and I was writing the post anyway so I figured I might as well.

I carry a lot of stuff around with me by default. Not in a “Well of course I carry a leatherman with me. Doesn’t everyone?” sense, I’ve just accumulated a bunch of things that solve specific problems. Some of these are personal peculiarities, but some of them have been life changingly useful, so it seemed like it might be useful to enumerate

Very few of these are essential. The essential leaving the house check is wallet-keys-phone (my phone is a Nexus 4. I had a 5 for a while, but it broke and the 4 is just better). The rest of these are more… the chance of my life being dramatically improved by having these available without advance planning is high.

So, yes, sorry. This is my survival kit, not a guide to surviving me. You’re on your own on that one.

Unambiguously useful

  1. Bag. I have a lot of stuff, and while the fashion gods have decided that my gender gets pockets, I don’t get that many pockets. I like satchels. A backpack would be more useful, but vanity. The one I’m currently using as my main bag is a slightly battered and cheaper variant of this one.
  2. Musician’s ear plugs. These are so good. If you have any sort of trouble in loud bars you need to get yourself a pair of these. They cut out general ambient noise while mostly not filtering conversational noise. You should get these ones. I’ve tried 3 or 4 brands at this point and these ones are amazing and the others I’ve tried vary from OK to useless. People spotting that I was wearing these and going “You have literally changed my life” when I explained them is the major thing that prompted me to write this post.
  3. Kindle. I read probably somewhere in the region of ten million words of fiction per year. This used to be a major problem – a lot of my travel weight allowance always went on books, because otherwise I’d run out mid travel! Then I found out I could have a book store in my pocket and, well. I do not leave home without my Kindle if I can possibly help it. Note. You will probably want a case for this. I have the standard hard leather case. I don’t know about the paperwhite, but my previous kindles were very non-durable without a case.
  4. External battery for phone and kindle. I use a RAVPower. The Kindle has a long enough battery life that this is mostly for the phone or for when I forget the Kindle. Phones running out of battery is awful. This battery is huge but lasts me probably 6 or 7 phone charges, so I only need to remember to charge it once a week.
  5. USB cables to go with the above. I’m using these ones, which were recommended to me as giving great charging time, though I find they don’t always stay in my phone very well (other devices such as kindle and battery are fine).
  6. A watch. I have a cheap Casio. It’s pretty great. It’s not the most attractive of objects (though I have the metal one so it’s inoffensive), so it fails the “watch as socially acceptable men’s jewelry” role, but it’s pretty great at telling the time, lasts forever on one battery charge, almost impossible to damage (I’ve put it through the wash) and means that I don’t get distracted by my phone when I check the time.
  7. A water bottle. I have a metal Siggs which is great. I like hydration, but hate disposable plastic. The 0.4 litre size seems pretty good to me – I rarely run out of water for casual use with this size, but it also doesn’t add too much to the weight.
  8. Nail Clippers (generic link. I don’t actually have specifically these ones). My nails splinter a lot, and it’s so annoying to not have these to hand and they take up basically no room.
  9. Ear Phones. Sometimes you just don’t want to listen to your surroundings. I like the Amazon Basics ones.
  10. A key ring to tie things together. I’m a big fan of these ones. They’re super cheap, fit a lot, and are generally very useful.

Ambiguously Useful

These pull their weight enough that I haven’t removed them, but I wouldn’t necessarily rush out and get one yourself.

  1. USB flash drive. I have this one, which is great and can just go on a key chain. It’s ambiguously useful because I don’t think I’ve used it since I put it there. I thought I would use this all the time, but it turns out I just don’t need a USB key.
  2. LED flashlight. I need to see in the dark sometimes, and the phone flashlight basically nukes the battery. Hence a flashlight. The one I have is fairly bulky. I have something that’s a slightly cheaper version of this. I’m considering downgrading to a tiny key ring one.
  3. Hip Flask. I carry this around because I have fairly specific tastes in drinks and am often in places that can’t satisfy them. (Basically I don’t really drink beer or wine much and am a spirits snob). So I thought carrying a hip flask of decent whiskey around would be a good idea. Problem is it turns out I hardly drink these days, and when I do it tends to be in places that will serve me good cocktails. So that’s not very useful after all.
  4. Utili-key. Turns out I do carry a leatherman-ish around with me all the time. I’ve never used it, and that’s not just because I’m bad at opening it.

Things I’m considering trialling

  1. Coin purse. I hate carrying change. I’m wondering if having one of these in my bag would help.
  2. Pill bottle. As previously mentioned, Ibuprofen is an essential part of this complete David. My main concern here is that I don’t feel great about carrying around an unlabelled bottle of pills, and having them in the packet isn’t that inconvenient.
  3. Travel bottles. Mainly for things like moisturiser which are really annoying to need and not have.


Do I recommend you follow suit and go out and buy all these things? Well, maybe. I think carrying a bag is a good idea in general (especially if you’re one of those freeloaders who relies on other people carrying a bag), and once you’ve got that having some of these is really helpful.

I don’t normally have comments open, but I’ve opened them for this post, so feel free to share any essentials you have. I promise not to edit my affiliate code into the link. :-)

This entry was posted in life on by .

Free work is hard work

As has previously been established, I’m a big fan of paying people for labour and think you deserve to get what you pay for when it comes to software (yes, I do run a free operating system. And yes, I get what more or less precisely what I pay for).

But… honesty compels me to admit that paying for work is no panacea. If you compare open source software to similar commercial products, the commercial ones are usually really bad too.

They’re often bad in different ways, but they’re still bad. Clearly being paid for work is not sufficient to make good software.

I think I’ve figured out a piece of this puzzle recently: When working for free, the decision making process looks very different from paid work. The result is that you can be good at things that people aren’t good at when writing commercial software, but it’s also that you just do a lot more work that you would otherwise never have bothered with.

Consider the question: “Should I do this piece of work?”

Free answer: “Well… people seem to think it’s important, and it looks a bit shit that I haven’t done it. I guess I can find some free time to work on it.”

Paid answer: “Will I earn more money from the results of doing this work than the work costs me?”

The result is that in free work, a lot of things happen that if you put your hard nosed businessperson hat on and looked at objectively make absolutely no sense.

A concrete example: Hypothesis supports Windows. This isn’t very hard, but it does create an ongoing maintenance burden.

Personally, I care not one whit for Python on Windows. I am certain that near 100% of the usage of Hypothesis on Windows is by people who also don’t care about Windows but feel bad about not supporting it. I only implemented it because “real” libraries are cross platform and I felt bad about not running on Windows.

In a business setting, the sensible solution would be  to not do the work until someone asked for it. and then either quote them for the work or charge a high enough license fee that you can soak the cost of platform support.

So what to do about this?

Well, on the open source side I think it makes sense to start being a bit more “on demand” with this stuff. I probably shouldn’t have supported Windows until I knew someone cared, and then I should have invited the person who cared to contribute time or money to it. Note: I am probably not going to follow my own advice here because I am an annoying perfectionist who is hurting the grade curve.

On the business side, I would advise that you get better software if you do sometimes do a bunch of stuff that doesn’t make immediate business sense as it rounds everything off and provides an over-all higher user experience even if any individual decision doesn’t make much sense. But honestly almost everyone writing software who is likely to read this is off in startup and adtech la la land where none of your decisions make any financial sense anyway, so that’s not very useful advice either.

So perhaps this isn’t the most actionable observation in the world, but now that I’ve noticed it’s going on I’ll be keeping a watchful eye out to observe its mechanisms and consequences.

This entry was posted in life, programming, Python on by .