Fail scale

fail scale

An interesting idea I heard recently is "near miss reporting". Instead of doing failure analysis as part of the reaction to a failure, it's much better if you can start that analysis before the failure has actually occured. I think there is something really compelling about taking failure from a binary to a scale. Maybe it wasn't a failure exactly, but "not quite as much success as you'd like" is still a valuable signal.

It also makes for an interesting way of quantifying your own goals. If you think in terms of simple pass/fail, you're wiping out a lot of nuanced information. How much did you succeed? If you just scraped over the line, that's not the same thing as succeeding easily. For anything you want to be able to do consistently, like a skill or a habit, relaxing before you hit the comfortable win stage may well mean you slip back into failure when you stop focusing.

It might even be worth considering at what point a win is too easy - perhaps if you go all the way into the green zone it's worth taking on a harder challenge or spending less effort next time.

Ghosts: the game

ghosts

I went to a launch party for my friend Malcolm's zombie card game, and it got me thinking about tabletop game ideas. There's one that's been floating around in my head for a while based on two important concepts: demonic possession and recursion. I call it Ghosts.

The basic idea is that players are characters in a semi-scripted scene. They get a character card with various facts about themselves, and a list of goals like "get out of the office without the boss asking you to stay late", or "ask Annie from accounting on a date". The base level of the game is that you act out the scene trying to achieve your goals (though obviously some of the goals will conflict). The game plays out in turns, with each turn involving a series of conversations between characters.

However, the scene is also haunted! Some players begin as ghosts, but you also become a ghost if your character leaves the scene for any reason. Ghosts have goals much like characters do, but their goals are in terms of other people in the game, eg "help someone achieve their goal", "prevent someone achieving their goal", "cause as many people as possible to hate each other", etc.

At the start of each round the ghosts choose who to haunt. Haunting means that when a player is about to speak in a conversation, the ghost can tell that player what to say instead. Each person can only have one ghost haunting them at a time. However, ghosts can haunt other ghosts: a friendly ghost can haunt a friendly ghost that haunts a character, and all three of them will succeed at the same time. A malevolent spirit could haunt a friendly ghost who is haunting a character, and ruin twice as many goals.

The goals of the characters and the ghosts would be secret except to the person haunting them. That would mean that over time the ghosts could build up knowledge of who wants what, but the characters would stay in the dark and have to trust in friendly ghosts to help. As characters satisfy their needs and leave the scene, there would be more and more ghosts vying for control and the scene would devolve into chaos. The game is scored at the end by how many goals you achieved.

Obviously there's a lot of tweaking needed to make sure it's fun, but I think it has a pretty appealing mix of fun hammy acting, intrigue and strategy. And, most importantly, spooky ghost hijinks.

Voiding some warranties

exchange rate

I was trying to figure out what to do with two broken Nexus 5s - one of them had no wifi and the other had a broken power button and a cracked screen - and I finally just opened them up out of desperation. It was actually nowhere near as bad as I expected and I ended up making a fairly respectable phone out of the parts.

For some reason I tend to assume there's no point in trying to repair modern electronics, what with the whole "not user serviceable" thing and Appleisation of hardware. But you can do anything a technician at some repair centre can do, if you're willing to learn. I was surprised to find that there's actually a lot of resources out there on repairing modern smartphones, where to order replacement parts and so on.

Maybe it's a bad habit taking "that's a hardware problem" to mean "and therefore not my problem". Every time I've made it my problem it's been a lot less hard - and a lot more fun - than I expected.

Charity as arbitrage

exchange rate

I had an interesting thought occur to me on a walk the other day. While most charity is framed as an act of altruism, it's something we only tend to do when there's a significant difference in value between the good for you and the good for the person you're giving it to. Measured in currency, if you give someone $10 they're $10 better off, and you're $10 worse off. But measured in utility that $10 might be worth a lot more utilons to the homeless guy you give it to than it was to you.

A reasonable measure of altruism would be an exchange rate from your utilons to someone else's. An exchange rate of 1 would mean someone else is exactly as valuable to you as you are. That would imply strange things like not minding if someone steals something of yours as long as it gives them the same utility as it gave you. A number like 0.5 would mean you are willing to sacrifice 50% of what you want to give someone else what they want. In practical terms, I think most people would have a number fairly close to zero. Plenty of people give to charity, but few are willing to sacrifice much to do it.

So how does charity work in a society with such low altruism exchange rates? Ultimately, it relies on arbitrage. Charities act as middlemen between people with a lot of money (where it's not worth much) and people with very little money (where it's worth a lot). They can exploit that difference to do a trade at the point where the money exchange rate matches the utility exchange rate.

I wonder how hard that would be to measure...

Brains!

brains

I've been working on a project to do EEG visualisation lately. It's a bit of fun, but I'm way further down the rabbit hole than I ever expected to be re: signal processing. I think FFTs are dark voodoo, so having to become familiar with Welch's method for Power Spectral Density estimation is a bit of a shock to the system.

Two things have been a big surprise and enormously helpful so far. Firstly, the sheer ridiculous comprehensiveness of Python's scientific and maths libraries. You've heard you need a window function but you're not sure what that is? Don't worry, scipy has 18 to choose from.

The second is 0mq. I wanted to run something over websockets but Python's threading/event model stuff was giving me the crankies. I whipped up a Node thing in 5 minutes and hooked up 0mq in even less time. Since then I've basically pulled everything out into smaller processes loosely coupled with pub/sub. It feels good.

I'm still a little daunted by the crazy pile of brain stuff there is to figure out, but at least I know that all my problems can still be solved with service-oriented architecture. And Welch's method for Power Spectral Density estimation.