Creativity (stories, film, etc.)

New game by Myst-creators: Obduction

Yay! A new game by the creators of Myst and Riven. I loved those, so I’m quite excited. You too? Then please support their Kickstarter and share. Only 4 days to go! (And if you haven’t played Myst and Riven, do yourself a favour and do so!)

Philosophy, Technology

John Searle wrongs Computer Programs by denying them the Possibility for Consciousness

This is a great talk, go watch it first. I agree with everything John Searle says, except for his point that a computer program without special hardware can never claim to be conscious.

At 5:10, he says: “All of our conscious states, without exception, are caused by lower-level […] processes in the brain, and they are realized in the brain as higher-level or system features.” He continues: “[consciousness is] the condition that the system is in.” And I agree. But why does he think the same cannot be true for computer programs? Isn’t software “the condition (the state of the bits) that the system (the hardware) is in”?

At 11:00 he goes on claiming that a computation (i.e. manipulating symbols) is only about syntax, while consciousness is also about semantics. It seems that he defines semantics as what arises when symbols are interpreted by consciousness, and I’m fine with that. This however, leads to a circular argumentation when claiming that a computer program cannot have consciousness since it doesn’t possess any intrinsic semantics. Let’s say that semantics arise when symbols are interpreted by a consciousness. Who is to say that a complex computer program cannot do that interpretation just as validly as a human mind can? In a way, he wrongs the computer program exactly in the same way as the materialists wrong him when they tell him: “we’ve done a study of you, and we’re convinced you are not conscious, you are a very cleverly constructed robot.” The computer program might reply, just as he does: “Descartes was right: you cannot doubt the existence of your own consciousness.”

Philosophy, Society

How to compare people, or even nations?

How should two different entities relate to each other?

What do I mean by “entities”? People, organizations or even nations. And what do I mean with “different”? Obviously, that they are not the same, which implies that they are “unequal” in some way. What we think are the important ways to measure, to compare two entities, that’s what determines everything.

Is it wealth? Is it happiness? Is it age? Is it intelligence or technological progress? Without considering the problem of how exactly to define those terms, comparing people or nations with each of these measures gives vastly different results. But irrespective of what measure is chosen, one entity is always inferior when compared to the other. When choosing to measure in “wealth”, a rich CEO or an industrialized nation is “higher up”, or “more advanced”, when compared to a lowly construction worker or a so-called developing nation. But when choosing to measure in “happiness”, it might just be the other way around.

So, back to the question of how two entities should relate to each other, i.e. what nature their relationship should be of. Depending on the measure chosen to compare the two, there will always be inequality. Now, very often inequality is considered to be a negative phenomenon. It is used to point out that something is unevenly or unfairly distributed. But we wouldn’t want all people to be exactly equal to all the others, either. We wouldn’t want all nations, irrespective of the measure chosen, to be the same: the same climate, the same food, the same population density, the same level of energy consumption.

The key appears to be to rigorously define in which measure we want which entities to be equal, or at least to be more equal. And then demand for more equality in that measure. I some cases this may indeed be possible and even desirable. Although it is important to be aware that by choosing someone else’s measure, you invariably agree to play their game. As an example, by demanding “a career” (in the traditional work-a-lot-and-then-get-promoted-sense of the word), women agree to play the game of fighting for promotions. Alternatively (or at least additionally), they could demand less full-time stressing-out jobs for everyone.

Either way, there are a hoist of cases where it isn’t straightforward at all to settle on a measure for comparison. For example, when choosing a country to live in, or a person to marry, you might want to consider both the wealth of the country or person, and how happy you are going to be (among other factors). So you might be tempted to set up an equation to determine the “ultimate value” of each scenario p:

value(p) := λ1*wealth(p) + λ2*happiness(p)

where λ1 and λ2 are weighting factors you need to determine for yourself. For example, if you set both to 0.5, it means wealth and happiness are equally important to you.

It may be worth to point out that by combining the measure of wealth and happiness into one, what we have done in effect, is simply created yet another measure. I’m sure there are some economists or psychologists that have come up with a model like that already.

But now there are many more combinations of how very different entities can end up having the same value. Like a person being very rich but totally unhappy having the same “value” in that measure as one being very poor but extremely happy.

In order to form a balanced and constructive relationship where both entities can learn from each other, it seems important to choose the weights λi such that the value of both entities ends up being equal. That way, neither one appears more advanced in any absolute sense, and neither one is being looked down upon by the other.

It is easy to make the mistake to choose large weights for precisely those measures where you yourself already score high. That way, you’ll never be the loser. But it has the opposite effect as well: without noticing, you will end up behaving like a hegemonic empire. And both entities lose out.

Philosophy, Technology

iOS 7’s Redesign

When the iPhone debuted, it set the standard for a lot of things, among them the GUI of a touch-based mobile operating systems. But that was in 2007, and the design of iOS has gotten a bit stale and heavy by today’s standards. Some even say that “iOS is the Windows XP for mobile devices” – its familiarity is loved by so many that it’s going to be hard for Apple to make radical changes. But yesterday, Apple did just that: it introduced iOS 7 which finally brings a clean redesign of the whole GUI, while keeping all the elements at their familiar places. So, is it any good?


I don’t care much for the new App icons, the rounded corner radius is too large and the Safari icon in particular is just gross. Also, the default home-screen image is reminiscent of some 70s bling, which turns especially awful when seen through a translucent panel; fortunately that image can be swapped out by the user.

But other than that, I like the redesign. It really shines in the Apps as well as the Notification and Control Centers: no visual clutter or heavy chrome, a smaller and crisper color palette, and carefully chosen whitespace and typography. The translucent navigation areas place them clearly on a layer above the content (when scrolling in Safari or playing a movie, they even slide unobtrusively out of sight). The Apps in turn are above the background image, on which the parallax effect is used to form a sort of three dimensional box to peek into.


The new design is not “flat” (whatever that means), but it’s streamlined. And while removing visual clutter always comes at the risk of harming discoverability, I think iOS 7 didn’t go too far. Buttons may be gone, but the interaction elements are at the familiar consistent places and if it’s blue text (or in some Apps red, but always looks like a link) or a wireframe icon, the user knows it’s save to tab.

Everyone should choose a better home-screen image, Apple fix the icons, and then iOS 7 is a solid foundation to improve upon.

Society, Technology

Making a Dent in the Universe

Leadership is the art of getting someone else to do something you want done because he wants to do it.
– Dwight Eisenhower

We all strive to make our dent in the universe. And while too much concentrated power is certainly a bad thing, nobody wants to be entirely powerless.

If power is the ability or capacity to influence the state of the world, then being able to influence the physical world (stones, trees, rivers) may be the primary form of power. The archetypal lone cowboy is always certain to have enough power to provide food for himself and defend himself. But influence over the physical part of our world is a rather crude form of power, compared to the ability to influence the social part of our world – people.

Technology is usually primariliy considered in its capacity to influence the physical world (e.g. building a dam) rather than the social world. But since the invention of mass media technologies – starting with the printing press, then radio, television and now the internet – this has changed a lot. While not requiring all the same skills as mastering other kinds of technology, mastering a certain communications medium (e.g. writing books, blogs or filming) has become a very effective skill in influencing the world. Even more so in the highly connected and collaborative world we live in today.

A very simple form of the ability to influence people is “getting them to do what you want them to”. There seem to be mainly two strategies to this end. Either, you convince them that your idea is so great that they voluntarily invest their time in its support, or you simply pay them to do so. Or you do both.

In an industrialized society, where every year a larger part of the simple mechanical work can be done by machines, your are dependent upon motivated people that don’t simply execute what you paid them for, but actually understand and believe in your idea and want to actively be part of making it a reality. But in our current society, people also need money to get by.

So you’d think convincing them of your idea and paying them at the same time would be the smartest thing to do. But alas, whenever you introduce money as a motivator, things get more complicated. The warm and fuzzy feeling people get when doing some good for free might fade, you have to decide whether to give some people more money than others, etc.

So what do you do? It might very well be that either the state will provide a basic income to all its citizens, or that companies will do so for their employees – as long as they seem to be doing something broadly in the interest of the company. In the meantime, you can hope to find or found a company doing something close to that, or roll your own and look for some crowd funding.


Parallel and Concurrent Programming Models

This is a simple (non-exhaustive) categorization of different approaches for parallel and concurrent programming, inspired by Parallel and Concurrent Programming in Haskell (PDF). They state that parallelism and concurrency are two solutions to two different problems (as do others).

  • Parallelism (i.e. data parallelism, is deterministic)
  • Concurrency (i.e. threads or task parallelism, is nondeterministic thus cannot be expressed in purely functional code)
    • locking shared resources
    • blocking/synchronous channels (e.g. CSP) and asynchronous message passing (e.g. Erlang)
    • cancellation: asynchronous exceptions
    • software transactional memory (STM), i.e. group code into atomic blocks

Instead of concurrency, event loops with callbacks (as in Node.js) can be used to solve the problem of multiple external agents interacting with each other.

The paper also notes:

In the world of concurrency and parallelism, there is good reason to believe that no one size fits all programming model for concurrency and parallelism exists, and so prematurely committing to one particular paradigm is likely to tilt the language towards favouring certain kinds of problem.
We might wonder whether the compiler could automatically parallelise programs for us. After all, it should be easier to do this in a pure functional language where the only dependencies between computations are data dependencies, and those are mostly perspicuous and thus readily analysed. In contrast, when effects are unrestricted, analysis of dependencies tends to be much harder, leading to greater approximation and a large degree of false
dependencies. However, even in a language with only data dependencies, automatic parallelisation still suffers from an age-old problem: managing parallel tasks requires some bookkeeping relative to sequential execution and thus has an inherent overhead, so the size of the parallel tasks must be large enough to overcome the overhead. Analysing costs at compile time is hard, so one approach is to use runtime profiling to find tasks that are costly enough and can also be run in parallel, and feed this information back into the compiler. Even this, however, has not been terribly successful in practice [Harris and Singh]. Fully automatic parallelisation is still a pipe dream. However, the parallel programming models provided by Haskell do succeed in eliminating some mundane or error-prone aspects traditionally associated with parallel programming.

Philosophy, Society

Gratitude and why you shouldn’t expect things to “just work”

I’m utterly convinced that the key to lifelong success is the regular exercise of a single emotional muscle: gratitude.

– Geoffrey James (hat tip to swissmiss)

Continuing the line of thought from my two previous posts, it feels like many of us have (or at least I have) come to expect many things that probably shouldn’t be expected. What I mean is this conception of “how things are supposed to work”, and the believe that somewhere on this planet there are those “true professionals” that do things that way. That conception, that if you adhere to a couple of smart principles, including the scientific method, sound reasoning and a lot of grit, you eventually end up with a process that is “the right way”. And the thought that if you do things that way and do them thoroughly, you will eventually come up with a “proper” product, solution, or at least a satisfactory conclusion concerning that particular problem. And if you don’t, you are just doing it wrong, have too little experience and probably aren’t (yet) one of those “true professionals”.

But what I’ve come to realize, is that those “true professionals” don’t really exist. That even the most professional experts, most of the time, have not much of a clue of what they are actually doing and are just making things up along the way. Of course, experience and formal training help, but even the best of us, most of the time, have to navigate a vast decision tree with simply too little information.

So what’s that got to do with gratitude? Well, if you expect that things can, should and are done “the right way” (that is assuming you are not working with or using a product of complete idiots, or believe you are yourself one), then you expect things to “just work” in the “expected way”. If they don’t, you are disappointed. But what’s even worse: if they do, you just ignore the fact that it just worked, without ever feeling any gratitude. Simply because that’s what you were expecting all along, that things work the way they are supposed to. So however things turn out, either you get disappointed or don’t feel much at all.

On the other hand, if you were to expect that things usually don’t “just work”, it is much easier to feel gratitude every time they actually do. And you will have a much happier life, giving you the power to tackle harder problems (not expecting to solve them on the first attempt).