Category Listing For

Thoughts for a new major version of Enchanting

Greetings, everyone.

I have some ideas for a next major version of Enchanting, and would love some ideas and input at this formative stage.

Why? Why a new major version?

I’ve found that, while Enchanting is easier (and more powerful) than alternatives for programming the NXT, kids still do not understand what is going on, and why a program works or does not work. My aim is to fix this. I want kids to understand programming, and enjoy it, and be active in creating and using technologies, and not just passive consumers of the same.

I have found a great essay by Bret Victor called “Learnable Programming”. I want to incorporate several of these ideas into Enchanting.

In particular, I want students to be able to pause a program, and to be able to scan back in time and see how the sensor and variable values have changed, and which paths the program took in execution. I can see that if there is a (really simple) simulator component (like NXT-on-Stage, but probably as a separate application), it would be possible to allow a user to pause a program, tweak a value, and see how that affects a robot’s progress. (In particular, this could be interesting for seeing how different values affect a line follower, or for tweaking a PID controller). See this video, from 12:00 minutes to 14:40, for an idea of what I mean.

The other reasons I want to create a new version of Enchanting include:

  • there are new devices out that would be nice to support. (I’m most interested in the BrickPi, but I did pick up an EV3, as there is a lot of demand for its support).
  • there are some misfeatures in the current Enchanting that’ll be very difficult to fix:
    • Enchanting does not communicate changes in lists between the UI and the robot.
    • There are various connection issues that are difficult to reproduce, diagnose, and fix.
    • The fact that you can only have one Enchanting program on the robot at a time.
    • The code/compile/upload/test loop is too long and hinders understanding.

I’ve been contemplating how on earth I might achieve these aims.

The best idea I’ve come up with is that an Enchanting application, running on the robot, is sent code from the computer (or loads it from a file), and runs it, interpreting each command as it gets to it. It would be sort or like an emulator, a virtual machine, or an interpreter. When a command is run, any resulting value or state change is retained, so that it can be displayed in the user interface. [It might even be nice if two people can connect to the robot simultaneously and code together. That is much easier said than done, though.]

When a user has paused a program, they get a list of which commands were run, and when, and what the result was. The program is very interactive. I am learning towards supporting WiFi connections only. Perhaps bluetooth (ugh!) or USB connections might be possible at some point. I think the first target machine will be the BrickPi, but perhaps a simulator or EV3 are possibilities. I do think the NXT will come later.

Here are some of my preliminary thoughts on the design of the interpreter engine:

Prelimary Enchanting 2 VM class diagram

There is lots to figure out.

Oh, did I mention that I am presenting in Edmonton to teachers and computer technicians from across Alberta, Canada, on Enchanting in late November, and have an unreasonable dream that I’ll have something to show them of this new version?

I do wonder about changing some technologies.

  • Programming in Squeak Smalltalk is great, but few people desire to spend the time to learn it, and it makes it harder to help with the project. It may prove fruitful to use Snap! v4, written using HTML5 technologies, as a basis. (I just can’t help but think of all the work I’ve put in to modifying Scratch that would have to be redone. And the result could not even pretend to run the UI on a Raspberry Pi [which would be nice]. But being able to run it from an iPad or a mobile device is a big plus.)
  • I’m actually not a big fan of Java, either. I will be more than delighted if I don’t have to include a Java Development Kit with a future version of Enchanting. I’d been toying with programming some things in C++, but, am seeing that if I want to be nimble, it would be ridiculous to rewrite the great things that are working now and can be reused. (Time to set up an IDE right, as I can test the VM code on a computer.)
  • And, github is all the rage these days. Perhaps hosting code there would help. (I do so love bzr, though).

Lastly, I wonder if having multiple sprites that you can program is confusing. I’ve never thought so before I read what the Learnable Programming essay says about having a powerful metaphor.

I’d love to hear some thoughts, and to know if others are interested to keep up or help as this evolves.

Posted by Clinton Blackmore - Monday September 30, 2013.
Posted in .

Robotics Resources

Here are resources for people looking to teach robotics, especially those who came to my presentation at the SWATCA teacher’s convention on Hands On Robotics.

Here is a PDF version of my slides; note that is lacks all audio and video clips.

Next Actions


Try out Scratch. (Happy Scratch Day in Canada today).

Also take a look at ScratchEd, a site for people teaching children to use Scratch.

If you’d like to try something more advanced, look at Build Your Own Blocks. (You might also like these interactive books on BYOB-based programming languages).

Mailing List

Sign up for the Robotics In Education mailing list.


Come to the 2013 SABRE Games, next Thursday (Feb 28, 2013). (Come to watch; or bring some young roboticists to participate!)

Make Magic

If you have a LEGO Mindstorms NXT set, try out Enchanting.

Check It Out

There are some great books in the Jim and Mary Kearl Library of Cardston that you can sign out easily from your local Chinook Arch library (and ought to be able to get via inter-library loan from any public library in Alberta, or perhaps Canada).

[There are a great many other excellent books on robotics; check out an online bookstore near you.]


Listen to some great podcasts.


Here are some interesting videos.

Keep In Touch

Here are my contact details.

You can also follow me on Twitter — @ClintonWB.

I also run a mailing list called SABRE Announcements. You can sign up on the left.

Additional Resources


  • LUMACS – outreach program at the U of L that does robotics.
  • NXTPrograms has fabulous building instructions for all three NXT kits.
  • Stem Robotics 101 “is both a turn-key curriculum for novice Robotics teachers and a collaboration tool for veteran Robotics teachers.”
  • LEGO Engineering has a number of robotics-related activities, and it run by Tufts University Center for Engineering Education and Outreach.

Competitions and Events

  • With other groups, we’ve run Robofest locally for several years.
  • FIRST Alberta run events like the FIRST LEGO League (FLL), Jr. FLL, FIRST Tech Challenge and FIRST Robotics Competition — with an event for every age range.

(There are lots and lots of other events, and it is easy to host your own).


Radical Idea


PD Courses

  • has also offered courses on robotics.

Where To Buy

  • Retail kits can be purchased from many places, such as, Amazon, Target, Toys R Us, and from LEGO directly.
  • Parts are best purchased at BrickLink or eBay.

If you are looking for interesting sensors, check out

Other Interesting Technologies

Just a short list — as there are so many!

  • Arduino – an easily programmable microcontroller
  • Raspberry Pi – a $35 computer designed for kids to explore programming.
  • VEX – a more advanced robotics kit.
  • fischertechnik – an alternative robotics system.
Posted by Clinton Blackmore - Wednesday February 20, 2013.
Posted in .

Mindstorms Is Different

Brian Davis asked, at The NXT STEP blog, Should LEGO make sure you can build everything? Go read his post (and the other comments); my summary will not do it justice. In brief, he asks, “Lego Mindstorm’s owners are upset that the new NXT set does not let them build the same things they could with the first set. No one gets upset that when you buy one Star Wars set, you can’t (necessarily) build something that requires a different set. Is Mindstorms somehow different from other LEGO kits?”

Here are my thoughts on the matter:

Mindstorms is different, especially the NXT. (As a minor point, when you buy an RCX, even an adult can tell that it is LEGO, and can use it with any existing LEGO they have; with the NXT, people say, “That’s made out of LEGO?”)

When you buy a Star Wars set, you buy 1) the ability to build the model(s) on the box, and 2) parts, with which you can build anything you can imagine.

When you buy a Mindstorms set, you buy 1) a robotics invention system — a versatile toolkit for building robots. The models on the box show that you can do something with it, but you don’t buy the kit to build them — you build them to understand how to use the kit. The set is not purchased for parts, but because the parts do something. It does whatever you can think of to make it do.

And herein lies a problem. Using LEGO Mindstorms is really, really hard! Even when you can decide what you want to make, putting the pieces together in such a fashion as to bring the idea to fruition is difficult. But that’s only half the challenge. Now you need to make it do something. Unfortunately, the target audience doesn’t know how to program, and their parents aren’t prepared to help. [And then, if you know how to make your program, you have to fight against buggy software. Ugh!]

Symour Papert, author of “Mindstorms: Children, Computers, and Powerful Ideas” spoke of how, if you want to learn French, you should go to France. If you want to learn math, you should visit ‘Mathland’ [refering to the idea of using computational power to provide engaging environments in which it is natural to pick up new concepts and apply them.]

In the same way that a language is a toolkit of words, grammar, and syntax that enables communication, the NXT set is a toolkit of bricks, construction techniques, and programming that allow you to create robots. Languages drift over time; Old Slavic becomes Russian and Ukranian. Here we have a sudden drift of the parts in the NXT set, and a budding roboticist, like a toddler learning to speak, does not know enough of his own set (or language) to be able to benefit from instruction written for a different set — it might as well be in a different language. It has been said that the US and Britain are “two nations separated by a common language”. The same can now be said of owners of the different NXT sets.

Back to ‘Math Land’ — the doors to ‘NXT Land’ have been opened wide. Authors and netizens have drawn maps that guide the way through the territories (or ‘exploration space’) of what can be done with the set. Then LEGO, instead of enlarging the borders of the land, changes them, rendering whole continents out of bounds to new roboticists (while, admittedly, creating new terriries that the guides are busy mapping.) It is frustrating, as a robotics teacher, that my students can not do the same things with their toolkit that I can with mine, and that the resources that have been invaluable to me are valueless to them. They don’t have the parts, they aren’t about to figure out how to use BrickLink (and don’t have a credit card anyways), and their parents, after fessing up $350 for a robotics kit, aren’t about to spend an additional $100 for, say, the NXT Educational Resource kit.

One more example: Regular LEGO sets are like computer applications. You crunch data in your spreadsheet, draw a picture in your artwork program, and use the results of both in your word processor, which you can then e-mail to someone or print off. The tools all work together, and if you have more tools, you can do more things. In contrast, the Mindstorms set is the platform — a computer, an operating system, and a suite of built-in applications (and a rich home for third party applications). Now, the computer platform is changing all the time, but great effort is taken to maintain backwards compatability, so that you can use different computers and still perform all the tasks that you expect to be able to do. What LEGO has done is broken backwards compatability—imagine what would’ve happened if they’d changed the size and spacing of the holes through the bricks—and the platform isn’t nearly as useful as it would’ve been if it could still do — out of the box — everything that it did for someone who bought it two years earlier.

Mindstorms is more than just a construction set; it is a toolkit for building robots. While you can battle the Dark Side with any number of Star Wars sets, you cannot apply hands-on learning from a master craftsman when you are missing a tool he uses.

Posted by Clinton Blackmore - Tuesday February 9, 2010.
Posted in .
Comment [1]