I had an idea that I wanted to teach kindergarten kids to understand basic computer functionality and to think like programmers before they could read or write. The Monkey Machines idea started to form.
Monkey Machines is an app intended to be used on tablets. In kindergarten or at home. The user can drag and drop monkeys and other props on to a landscape. Each monkey represents a simple programming function such as an IF-statement. A monkey thinking of a red banana will pass all red bananas to the right and all other bananas downwards. An IF-statement where the variable is the color of the banana. Chains of monkeys passing bananas around in the landscape is what forms a monkey machine.
The monkeys are animated as a way of explaining their function. In the functions library or when clicked a constantly looping animation shows how the monkey interacts with the surrounding environment. For instance, how it handles a banana depending on what color it has. Animations of the monkeys once they are put in the landscape is more situation based as they react to the running code. Idling monkeys can still be animated for a better understanding of what they are waiting for. They can even react to not being properly placed in the landscape, just like a developer's code editor highlights coding mistakes.
A monkey machine can be run at any speed. From very slow, where every animation frame is visible, to super fast, where you can hardly see the bananas as they pass by. Slow speeds are useful for debugging or if the kids just want to play around with the monkeys in the landscape. Full speed is for running interactive apps such as games.
Even if Monkey Machines looks like a video game the chains of monkeys can form really advanced code. Of course I don't expect kindergarten kids to be able to program advanced machines from scratch. Instead, there has to be vast library of ready-made machines, such as games, painting apps, animated clips, drum machines and interactive musical instruments. And just like kids are used to swipe and select videos on YouTube kids they can choose from thousands of machines in an online shared library. Once the machine is loaded on to the local landscape the kids can start reverse engineer it and move monkeys around as they like to see how it affects the machine. Just like a lot of us developers got into programming.
Here is a screenshot from my proof of concept web app. I can just mention that I am not a designer. This is a MVP to test if it was at all possible. It was, but the app needs to be re-worked. In this landscape I have created a very simple random sound generator using chains of monkeys and a looping water stream. In the top you have the machine library where kids can choose ready-made machines to use in the landscape. The monkey with the camera can take a snapshot of the current machine and save it in a local library. Machines can also be shared with others. On the left you have the speed selector and on the right the functions library.
Here is a simple chain with three caller monkeys explaining the canvas functionality. The canvas is used to paint pixels. A caller monkey calls the crane operator monkey and tells him what to do, one instruction at the time. Pretty much like instructions sent to your graphics card that paints pixels on your screen. What the instructions are depends on what is on the caller monkey's mind. If it is a yellow banana the caller monkey tells the crane operator "yellow". Crane operator monkey shouts out the color to the painter monkey who paints a yellow pixel. The caller monkey can also communicate directions (arrows) to the crane operator monkey who will then use the crane to move the painter monkey accordingly. When the caller monkey is done it passes the banana to the next monkey. In this example another caller monkey with other instructions.
Here is a setup of howler and listener monkeys. Howlers and listeners can be used as a way of interacting with a machine when it is running. When a user push a button the howler monkeys screams out loud because his tail got pinched. Each button has a howler monkey associated with it and each of these monkeys make a unique sound when their tail gets pinched. In this example the monkey screams out Uuu! In the landscape there can be one or more listener monkeys listening for the sound Uuu. If they hear Uuu, they will immediately pick up a banana from their pile and pass it to the next monkey in the chain. In this example a trumpeter monkey who plays a note.