Charisma transform

It's an interesting quirk of our biology that some ways of representing data are much more meaningful than others. We have a very high visual bandwidth, for example, so charts and graphs are much easier for us to understand than numbers. Not so for computers, where the visual information would have to be reverse-engineered back into numbers before it could be analysed. We are similarly very good at understanding movement, but it's trickier to represent things kinematically (though there are some pretty amazing experiments already).

Rather than visualisations or animations, I think of these functional attempts to shift data into a more easily digestible form as transforms, no different to the kind of transform you might do when converting data between file formats. It's just that these formats are tailored for our own peculiar data ingestion engine. You could say that transforms like these are designed to exploit particular capabilities of our hardware.

There's one capability that I think is both powerful and underexplored: our empathy. As inherently social creatures, we are very efficient at understanding and simulating the behaviour of others. However, most tools we understand mechanistically, like a car or a keyboard; you know that everything that happens follows directly from something else. But it only works for simple behaviour. How do you understand the behaviour of a complex network, or a country's economy? Doing a strict mechanistic analysis is too hard in many cases to be useful.

You can understand these complex behaviours much more easily if you can transform them into the empathic domain where we have specialised understanding. And if we could find a way to effectively describe the motivations of an economy, say, by casting the major forces as characters, assigning them emotions and values that reflect their real-world behaviour, I think it would make the whole thing a lot more intuitive.

What's more, our tools are rapidly exceeding the complexity where we can reason about them in anything but an abstract way. Historical computer interfaces had a simple mapping between actions and results; there's a list of commands, you type a command from the list, it does the same thing every time. But what about voice interfaces? Or search results and other name queries? Or really any system with a user model? Smarter computers are, unfortunately, less predictable computers.

I believe that to keep these complex tools usable we will need to develop a charisma transform: something that can represent the behaviour of that tool in a humanlike way that we can more easily model. I think our interfaces will have to develop personalities, or something that we can understand the way we understand a personality. I expect this will take some time and most of the early attempts to be pretty ham-fisted, but it seems inevitable that we'll have to go in this direction as systems become more complex and our capability to logically understand them gives out.

Convoy

I had an interesting idea for a game the other day, based on the good old fashioned heist trope. You're riding atop a train in some kind of post-apocalyptic badlands, with gangs of baddies riding up alongside and trying to climb on board and take the train over. You run around on top of the train fighting them off, but you can also upgrade the train and add turrets and traps and so on.

Essentially it'd be an iteration of the standard tower defense formula with a few action/rpg elements. But I really like the possibilities that the setting gives you; the train never stops moving, although the scenery changes and the baddies get stronger, there's a kind of absurdist constancy to it. It'd be fun to play with that in the dialogue of the game too. Why are you on top of a train? Where's the train going? Why does it never seem to get there?

Plus I think as an art direction you could do some really fun things with post-apocalyptic vehicular battles. Deserts, forests, icy tundra. Molemen on motorbikes. Spider robots with rocket launcher legs. I mean, the ideas just write themselves.

Garbage-collected tabs

I tend to keep a lot of tabs open. I mean a lot, like around 200 at the time of this writing. That's spread over 20 windows, with about 10 tabs per window. There's something about the spatial nature of tabs that really works for me, better than bookmarks or other things. Especially because I tend to have a lot of little projects going at once, they work sort of like a project space. You can keep a bunch of associated research together and close it all at once when you're done with it.

But it appears Chrome is not strictly designed for this kind of usage. It tends to get particularly slow with a lot of tabs, both from enormous memory consumption and because websites seem to like to use your CPU for things in the background. I've found The Great Suspender to be helpful for this, though I feel a bit like it shouldn't have to exist. And even without the resource consumption issues, it's still tough to manage all the windows and tabs.

I think an interesting approach would be something like the way garbage collection in programming. What you want is to only keep the windows and tabs around that are still relevant to what you're doing. Each new tab you open would have a reference to the tab you opened it from, and each tab would have a freshness that indicates how interested you are in that tab. Whenever you interact with something it freshens that tab and tabs connected to it. When things get a low enough freshness they are suspended, and if they are left suspended for too long they disappear.

Though unlike with real garbage collection, you'd never actually delete anything. Instead, they would go into some kind of garbage collected tabs and windows history where you could pull them back out if they were needed for something. You could also possibly have some kind of pinning system for things that you want to keep as a long-term reference. Maybe you could even have a nice UI for tabs or windows that are going to disappear, on concertina them if they're stale tabs on a fresh window.

There would be a lot of tuning to do, especially as far as what updates freshness and how that propagates between tabs, but I think it could be an interesting model. The way I use browser tabs (and, judging from The Great Suspender's install numbers, hundreds of thousands of others) isn't in the same iron-clad way that we are used to for desktop windows. It's less like "I need this information to stay here forever" and more like "I'm interested in this now and, in an hour, who knows?"

The Shenzhen Shuffle

Although I've had a certain low-level exposure to the riches of China, it never managed to blossom into a serious electronics habit. But all of that has begun to change recently, starting with a gift I received of some ESP8266 modules, which are basically tiny WiFi SoCs that can even run Lua.

The chips are pretty fun on their own, but nothing compared to the stuff you can do if you have some sensors, lights, wires, breadboards, battery packs, voltage regulators, solar panels... Suffice to say the electronics binging that has probably been my destiny since the age of ten is finally being fulfilled. The process has this great multiplicity: each new thing you buy gives you more options when combined with all the things you already have. And that gives me an idea.

I've never really been into the whole buyer's club type thing, but it seems like this could be really great place for it. You pay some fairly small amount ($10-20/month) and in exchange you get random new electronics stuff delivered each week. China Post's notorious 20-40 day lead time isn't really an issue once you start pipelining the mail. And you could get some pretty cool stuff for the money, especially with collective buying power. Here's some I found in the $1-3 range in a few minutes of searching: mini Arduino knock-off, LED matrix, RFID module, motion sensor, ultrasonic distance sensor.

I think an appropriate name would be The Shenzhen Shuffle. Any takers?

Middle-out

When creating something, it often seems like you start from a particular point and fill the rest in around it. For example, you start with an amazing character idea and build a plot around that character, or alternatively you start with a great plot idea and find characters that can drive it. Or, if you're Asimov, you just write your ideas down and hope for the best.

In software businesses there are similar starting points. You can start with a particular product and figure out the engineering necessary to build it - that's most modern web startups. You can start with an engineering breakthrough or scientific discovery and figure out how to turn it into a product – that's basically the rest of the startups. Even in the software itself, you often have to choose which components to start with, which database or web framework or game engine, and that decision then shapes all the subsequent decisions you can make.

And I think that really misses something. Because when you commit hard to an early decision it means there are significant limitations to how you can make all the other decisions. You can often feel this in a codebase, a kind of impedance mismatch where you can see lots of translation layers between different modules because they're designed in different ways that don't line up well. Or you avoid that by only using modules that fit nicely with the existing ones, even if that means they don't work well in other ways.

I once read that Jony Ive's philosophy on design is different because he spends so much time thinking about materials and how they can complement or inform product design. The particular choice of metal or plastic, or what kind of manufacturing process to use, doesn't come right at the end, as it does with many other companies, but is part of the process the whole way through. Instead of saying "we want a laptop this size, therefore we'll make it out of metal", or "we want something made out of metal, how about a laptop?", it's more like "we like laptops, we like metal, I wonder if those can go together".

Ultimately I think this kind of philosophy is best. Obviously there's nothing stopping you from picking one most important starting point and fitting everything around that, but I believe that really amazing feats of design and engineering only happen as a kind of simultaneous equation. You consider all of the possible options for all of the aspects of the thing you're making, and among those you find a set that fits together so beautifully that the resulting product just falls out naturally.

Of course, that's much easier said than done. All of the options for all of the aspects is a fearsome combinatorial explosion to deal with. In practice, you probably have to pick your battles on that front, and be sensitive to the limitations of your poor fleshy brain and the time available to the project. However, I think that in many cases picking one place to start is a very early optimisation, and an unnecessary one. Taking the time to think about the right set of primitives can give you something much better than you could have designed incrementally.