There's a way of thinking that worries me: a “new operating system” must look graphically different from the previous version of the same operating system. Premise: I have been upgraded to Android (so-called) Lollipop. (Second premise: I own a Samsung Galaxy S4 — something I regret, but it's too late and I'll keep it till I die or till it breaks — whatever happens first).
I have often wondered why C hasn't any kind of function overloading. The typical answer is that we don't want to live with name mangling in C — the hell of the C++ — that would break a lot of things which must stay as they are. I agree… except that you don't need to implement it the C++ way when you have a bright example like Fortran.
There's an italian weekly magazine (La settimana enigmistica) that once in a while publishes “A puzzle with Susi”. Susi is a cute and smart girl who accepts to solve challenges her friend Gianni is used to throw to her.
In one of my italian blog I've tackled two (so far) of these puzzles using Prolog and Haskell.