Sam Gentle.com

Transactional shell

Here's a neat idea I had today: a transactional system shell. Once or twice I've accidentally nuked some files I wished I'd kept around, or overwritten something by accident. On desktop OSes the way that's solved is by making destructive operations actually non-destructive in various ways, like a special trash folder or OS X's version history system. But when you're using commands on a shell, there's no such protection available.

One option that I've started using is change the default to confirm before you delete or overwrite files, but it's a bit annoying. Worse still you train yourself in the habit of just hitting yes every time, which means it's inevitably going to lead to confirming by accident sometime too. Instead, you could use an overlay filesystem: a small filesystem just containing the changes you've made. When you start a transaction, all changes from that point happen in the overlay filesystem, and when you're ready you can commit them for good.

The nice thing about this is that, on top of protecting you from yourself, it would also provide a safer environment for running other people's shell scripts. If you run a script or a command in a transaction, you could confirm what changes it's made afterwards and decide whether it's done what you expect. Even if it has, it's nice to know exactly what changes have happened.

All the other software in my life seems to have gone to a safe-with-undo-by-default system, so it'd be great to see shells get there too.

The anthropic principle of problems

One of my favourite arguments is the anthropic principle, which is basically that you can't say too much about how likely life is or isn't to exist, because we're that life. No matter how unlikely it is, assuming it happened somewhere, that life would be standing around the same as us thinking "how strange that we happen to exist despite all those odds!" If it didn't happen, well, nobody would be around to notice. What I like about it is that it injects an extra source of information into the argument: the existence of the arguer. It has this in common with Descartes' famous "I think therefore I am".

There's another anthropic principle I've been thinking about, which is a kind of anthropic principle of problems. Problems that are easy to solve go away, problems that are hard to solve stick around. It's easy to think something like "how strange that we humans happen to have this set of systematic biases that, among other things, prevent us from noticing and correcting those exact same biases!" But, of course, that's exactly the anthropic principle at work. We presumably have other sorts of biases that are already corrected, and we don't even think about them.

And, of course, it's also easy to think "how strange that I have some particular set of problems that are difficult to solve". But there's nothing strange about it; you also have problems that are not difficult to solve, you just don't think of them as problems. Probably, you don't think of them at all.

Two kinds of perfect

When I first started using Uber, I gave the drivers a lot of 3- and 4-star ratings, but never 5. I think I was just holding out for the best possible experience. After all, 5 stars is the maximum possible stars: a perfect score! So to achieve those lofty heights a driver would have to not merely be good, or even great, but perfect. Driving me from one place to another on its own is not impressive enough to justify 5 stars. What would be? Well, I never found out, because it never happened.

I think of that kind of perfect as perfect-complete. The idea that perfection is measured by how much is done, and true perfection can only be achieved when you do everything. A perfect Uber driver would surely do more than just drive! I assume that's why they carry mints and bottled water now. Once everyone is doing that, maybe they'll give backrubs. Perfect-complete is an unattainable goal, because there's always some way to do more, some bigger scope you could fit your perfect-complete thing into where it will no longer seem complete.

Later on, after realising the absurdity of holding on to my 5th star for a driver who would do my taxes or bear my firstborn, I started rating drivers in a different way. I considered what the ideal experience I expected from a trip was. Surprisingly, mints and bottled water did not appear; I realised that what I wanted was to be taken to my location quickly by someone who was pleasant. That was all. Now most drivers get 5 stars unless they do something wrong.

I think of this second type as perfect-correct. It doesn't require doing everything, but it does require doing things properly. This kind of perfection is actually achievable, and what's more I think it is actually worth achieving. It's possible (and useful!) to define the limits of what you expect, and once that's done it's very satisfying to be able to nail down what perfect would be in some finitely-bounded way.

It's far too easy to set perfect-complete expectations that require skills, abilities, and resources far beyond what we have at the time. In the scrabble to achieve these perfect-complete things we can end up sacrificing a lot, including the perfect-correct quality of actually doing what was needed. The dream of that first kind of perfect can only be a disappointment, whereas the second is a path to taking pride in the craft of what you do.

Copyright 2.0

So it's fairly well agreed that copyright lasts way too long, at least according to anyone who isn't being paid by Disney. The original copyright term was only 14 years, and there's actually a fairly compelling economics paper showing that if you pick a reasonable set of parameters, you end up with 15 as the magic number.

But it's not likely copyright law will change anytime soon. Too many people make too much money from it, and copyright's now a global trade issue; governments don't want to be the only suckers on the world stage with some weird copyright law. But who needs the law anyway? Or, more accurately, who needs new law? We could make our own copyright!

Since you can put basically whatever restrictions you want in a license agreement, you have a kind of delegated copyright power. If you decided that a particular kind of copyright law would be better, and assuming it's a subset of current copyright law, there's nothing to stop you from applying it to your own work.

So maybe some serious copyright people could get together and draft up a Copyright 2.0 with 15-year terms and remixing and whatever else Lawrence Lessig thinks is a good idea. It won't do much about Disney, but I think there are a lot of people out there who would be happy to voluntarily give back the extra powers that copyright law handed out.

Where-do list

Continuing my previous to-do list variations, including the to-do blocks and why-do list, I have an interesting one I've been using recently that I call a where-do list. The concept is fairly predictable from the name, but I think there are a few features that make it interesting.

Where-do lists are useful for tasks that you tend to need reminding of on a regular basis. Classic examples include washing dishes or casual exercise (like a few push-ups here and there). Trying to stay reminded of these maintenance tasks on a constant basis doesn't work very well and leads to a certain degree of low-level background stress. Instead, you create lists that are attached to particular places, like the entrance to the kitchen or the side of the couch. When you see a where-do list it prompts you to do the stuff on the list at the time you see it.

You could, of course, put all those things on a regular to-do list, but since they're never really done all they do is clog it up. Instead you can clear maintenance tasks both out your main list and out of your brain, since you don't need to think about them except in the time between the where-do list reminding you of what to do and you doing it.