I try not to make unlikable software (and features) May 8, 2021 on Drew DeVault's blog

I am writing to you from The Sky. On my flight today, I noticed an example of “unlikable” software — something I’ve been increasingly aware of recently — inspiring me to pull out my laptop and write. On this plane, there are displays in the back of each seat which provides entertainment for the person seated one row back. Newer planes no longer include these, given that in $CURRENTYEAR everyone would just prefer some power for their phone or laptop. Nevertheless, you can still end up a plane with this design. You can shut the thing off by repeatedly pressing the “☀️ -” button, though that button is rated for half the cycles it will have already received by the time you press it.

When the flight safety video is playing, or an announcement is being made, however, the system will override your brightness preference. This is a fairly reasonable design choice, added in the name of passenger safety. What’s less reasonable is that the same feature is re-purposed for shoving advertising into your face a few minutes later. In fact, it spends more time on ads than on safety. A software engineer sat down and deliberately wrote a “feature” (or anti-feature?) which they had to have known that the user would not have wanted. The airplane manufacturer demanded it at the expense of the user.12

I have had many opportunities throughout my career to make similar anti-features, and I have encountered many other examples of this behavior in the wild. Many programmers have implemented something which measurably worsens the experience for the user in order to obtain some perceived benefit for the company they work for. Dark patterns provides many additional examples, but this kind of thing is everywhere.

I find this behavior to be incredibly disrespectful to the user. When I am that user who is being disrespected, I will generally stop using that software, and stop supporting any businesses who chose to be disrespectful.3 For my part as a programmer, I do respect the user, I find satisfaction in making software which makes their lives better, and I always have and always will push back against anyone who demands that I subvert that ethos for their wallet’s sake. You should always aim to make the user’s experience more pleasant, not more unpleasant. We should just be nice to people. That’s it: please be nice to people. Thank you for coming to my Ted talk.


  1. A savvy reader could (correctly) extrapolate this to infer my position on advertising in general. ↩︎

  2. They also got on the PA later on to try and convince passengers to sign up for their airline-themed credit card. This isn’t even a budget airline. ↩︎

  3. Though, to be entirely fair, it is somewhat difficult to “stop using” the mandatory ad viewing session I am being subjected to on this airplane. I could put in earplugs and gouge out my eyes, perhaps. Yes, that seems like a proportionate response. ↩︎

Articles from blogs I read Generated by openring

Robust generic functions on slices

Avoiding memory leaks in the slices package.

via The Go Blog February 22, 2024

ClassNotFoundException: java.util.SequencedCollection

Recently I’ve had users of my libraries start reporting mysterious errors due to a missing reference to SequencedCollection, a Java interface added in JDK 21: Execution error (ClassNotFoundException) at jdk.internal.loader.BuiltinClassLoader/loadClass (Buil…

via Aphyr: Posts February 20, 2024

Status update, February 2024

Hi! February is FOSDEM month, and as usual I’ve come to Brussels to meet with a lot of other FOSS developers and exchange ideas. I like to navigate between the buildings and along the hallways to find nice people to discuss with. This edition I’ve been invol…

via emersion February 20, 2024