Working with the LEGO Mindstorms NXT using the included (LabVIEW-based) development environment, I feel constrained.  For someone starting out with programming, it's an awesome way to visualize program flow, but working with more advanced concepts it becomes a bit tedious.  Part of it is I just don't 100% get the pin-based connections, but it's more than that.  If I want to process data in another thread, I just can't.  I'm also really limited by the small amount of memory available.  I've blogged about this before, but it's really a big deal to me.  An SD slot or at least a meg of onboard memory would have been really nice.

I've now discovered NXT#.  This is a .NET-based development bridge.  You can link to the libraries and use C#, Visual Basic, or even J# I'm sure.  It sends direct commands via Bluetooth -- no software is required on the actual NXT unit.  A nice piece of work, and very easy to use.  The sample code implements a line following algorithm, and also a simple remote controller.  For me, that's all it takes to see how to take advantage of it.  If you are interested in robotics, the LEGO Mindstorms NXT set is well worth it.  If you are already an experienced .NET developer, this really seals the deal.

NXT# - Mindstorms for .NET