Matt Jadud

473 points
User profile image.
Berea College

Matt is passionate about the design and development of usable languages for embedded control. You can some of his work at concurrency.cc, a rallying point for parallel programming on the popular Arduino platform. However, most of the time Matt keeps himself busy as a member of the faculty at Berea College.

Authored Comments

Hi James,

See my previous reply. You aren't stuck with the tools LEGO gives you, by any stretch.

Hi Greg,

I didn't want to get bogged down in this article on any one of the platforms; the Mindstorms has an interesting history w.r.t. open source.

The RCX was closed, but LEGO (wisely) did not pursue litigation when the RCX was completely reverse engineered. pbForth was one of my favorite projects for the RCX: <a href="http://www.hempeldesigngroup.com/lego/pbForth/homePage.html">a complete Forth interpreter running on the LEGO brick</a>. You sent it text, and it compiled it and ran it right in the 32KB. (I love Forth. I mean, just as a matter of principle... a language-extending language you can bootstrap with little more than 1KB of flash. Awesome... but I digress.) There was also <a href="http://bricxcc.sourceforge.net/nqc/">NQC</a> (Not Quite C) and a number of other efforts that gained a fair amount of traction. (Porting software to the RCX was a pain, though... everything you did was over an IR link, so if you crashed your firmware, you lost the ability to debug...)

When the NXT came out, LEGO acknowledged its community rather intelligently. It brought critical members of the hacking community together, and they listened to their input. The firmware was open (but I think there's a copyrighted phrase in there or somesuch), and from the get-go people were hacking new runtimes and languages for the NXT, a 60MHz, ARM7-powered device. It was possible to get a JTAG port on the device, but most everything you might want to do as a hacker was possible over the USB connection.

<a href="http://www.botmag.com/articles/10-31-07_NXT.shtml">Many languages and tools for programming the NXT</a> have been developed. NXC (not eXactly C), pbLua (also by Ralph Hempel, developer of pbForth), and NXJ (a Java environment for the LEGO NXT) are all open solutions. I have not touched any of these in several years, so I cannot speak to their maturity with any authority. <a href="http://bricxcc.sourceforge.net/nbc">NXC is a port of NQC from the RCX</a>, so is mature toolchain, and <a href="http://lejos.sourceforge.net/">NXJ is a revision on leJOS</a>, the Java runtime for the RCX. Ralph Hempel is a great developer, and is an example of what one person can do when they're passionate about something---I think the vast, overwhelming majority of the work on both pbForth and <a href="http://www.hempeldesigngroup.com/lego/pbLua/">pbLua</a> was all him.

(Shameless note: our environment for parallel programming was recently ported to the NXT; it's <a href="http://projects.cs.kent.ac.uk/projects/kroc/trac/browser/kroc/trunk/tvm/nxt/">now in our tree</a>, but needs some love before we integrate it into our development environment and can support it with documentation.)

So the NXT paved the way for people to do cool, open stuff with their LEGO robots. I probably should have highlighted that better in the article, but I felt it might get a bit long in the tooth. That's why we have comments, though. :)