Wednesday, 1 February 2017

IT Kitchen: Tangible Programming With Nemo"

I first taught computer programming to young people in 1981 when Seymour Papert's "Mindstorms: Children, Computers and Powerful Ideas" was hot off the press. Papert argued that learning can happen most effectively when people are active in making tangible objects in the real world, have objects to think with and see tangible results. Papert developed his ideas in the learning theory of Constructionism and for educational computing he developed the turtle as an "object to think with" - a robot that could be programmed with the Logo language to move around with a pen and draw shapes - to program behaviours in physical objects rather than just control of what’s on a screen.

Using the LOGO language with the Turtle robot along with Papert's Constructionist theory of learning was such a joy as a new teacher - it was fun and effective and left a deep and lasting impression on me. These were exciting times - the early days in the microprocessor revolution and the beginning of second era of computing. There was a "cambrian explosion" of diverse ideas, technologies and activity and there was a great deal of optimism about the positive potential of computers.

There is much about today that reminds me of the early 1980s - a "cambrian explosion" of diverse ideas, activity and technologies such as nano computing, AI, virtual reality, augmented reality, IoT, robotics, 3D printing and wearable tech to name just a few. There has never been a more exciting time with technology.

CCS Libraries have given me a Lego Mindstorms EV3 kit to do some development work and I thought I would use this to revisit Constructionism in learning with tangible physical computing and pay tribute to Seymour Papert who sadly passed away last summer.

Lego named its programmable technical construction kit "Mindstorms" in honour of Seymour Papert and his ideas in "Mindstorms: Children, Computers and Powerful Ideas" so I thought it fitting to call this project "Nemo" to associate it with Papert and his work with Turtles, physical computing and Constructionism back in the 1980s.

I wanted to use a Lego Mindstorms robot to not only move around but to draw with a pen like Papert's Turtles. I also wanted to create something open ended that itself could be programmed independently to carry out different actions as an independent robot programmable in a physical, behavioural or "tangible" way without a standard programming interface.

The nature of computing is changing - we are at the very start of the information revolution proper and what could be new era of computing. Mainframes gave way to microcomputers which in turn are giving way to mobile computers - the next era could see computing disappear as devices become smaller, pervasive and intelligent. We started off with mainframes and the CUI (text based Command User Interfaces) which have way to the GUI (Graphical User Interfaces) of the Micro-computer era but with the rise of Artificial Intelligence we may see a return to the CUI ... but this time ... not just commands but conversations with machines. Graphical user interfaces are not a good fit for handheld computers like smartphones - in the future our phones really will become smart and we will be able to talk to them - to give them commands and have conversations with them. Communication interfaces with computers and machines are likely to change with developments in artificial intelligence and soon we won’t program computers ... we’ll train them like dogs - this is one reason I am interested in developing fully physical or tangible computing and computer interfaces. Pavlov and Nemo are just a toe tip in the water of tangible computing - I'm looking forward to AI In The Making.

Lego Mindstorms has plenty of square parts but nothing that makes for a good pen holder so I needed to extend the Lego kit and make one and to do this I turned to one of the technologies in today's "cambrian explosion" of technology - 3D printing. It wouldn't be difficult to 3D design a simple pen holder with Lego connectors using Tinkercad for example but there are already designs that people have shared and that are ready to print. The part I printed to use was Thingiverse thing:1573474 - "LEGO technic pen holder"

Much of the 3D printing I have been doing has been to showcase its potential using small demonstration prints like halloween decorations, xmas decorations and little "trinkets" - see the inspireNsjare Thingiverse collections for example. However, having a 3D printer available can be really useful to make parts to use in other things - for example in "IT Kitchen: 3D Printer .... Get Baking" I showed how you can use a 3D printer in the kitchen to make cookie cutters. For this project it was a real joy to manufacture in under 15 minutes the part I needed in my kitchen with a 3D printer. I'm sure you have had to throw away things that have had small broken or worn parts that you just can't get hold of to replace or repair - If only the products came with a gallery of 3D designs that we could use to 3D print broken and worn parts - this would help the environment and our pockets but I can't imagine it happening ... suppliers would sooner we buy new rather than repair - indeed, many manufacturers make their products this way - incompatible with other suppliers parts and not end user serviceable or even repairable at all.


Amazingly I was able to take the 3D printed pen holder "hot off the press" and "straight out of the oven" and fit it onto Nemo - a slightly altered Lego Mindstorms base model with my Nemo program running.

The Nemo program uses the Lego Mindstorms "brick" buttons for the learner to program it - there are two modes - "train" (learn or program) and "perform" (or execute\run the program). Press the centre button to start, press the right button to go into programming mode and press the down button to perform or run the program.

Training (programming or learning)
Press up to go forward
Press right to go right 90 degrees
Press down to go backwards
Press left to go left 90 degrees
Press centre to stop programming

Performance (program execution)
Watch Nemo playback the "commands" learned in training 

Place a felt tip pen in the pen holder and watch Nemo draw using the commands it learned from you during training.

Thank you to 
CCS Libraries for the loan of a Lego Mindstorms EV3 kit
Ultimaker for the loan of an Ultimaker 2 3D printer

To find out more about inspireNshare visit
To find out more about inspireNshare Thinglab visit


No comments:

Post a Comment