Scratch is a visual programming language aimed at teaching children aged 8 and up, and other beginners, to program by employing the metaphor of Lego-style blocks that you drag around and "click" together to form programs. The shape of these blocks is so designed that it's impossible to make syntax errors (wrong blocks just won't fit together), removing a principal source of frustration for learners. Scratch was developed by a team at the MIT Media Lab led by Mitchel Resnick and the first desktop-only version was released in 2003 - the current version is accessed and used online, and you can share your work with other users who can "remix" it into their own programs. I came across Scratch while writing an Idealog column about the recent "coding" craze, and after some initial scepticism became hooked - it's great fun to use, and far more powerful than its toytown appearance might suggest. As a test I decided to convert some of my Ruby programs into Scratch and found it not only possible, but in the case of animation (which is Scratch's strongest point) actually much easier in Scratch. Though it lacks some features like local variables, and its implementation of lists is only as visual tables, you can work around such gaps once you grasp the way the components work. I deliberately chose a couple of textbook examples - a recursive Factorial function and The Sieve of Eratosthenes - to show what can be done in Scratch, along with an absurdist poetry generator and a simple ecosystem simulation: click the links below to run them on the Scratch site.