Updating NXT-G Programming Guide

Well, I just got a request from Apress to update the NXT-G Programming Guide - the book came out in 2007 and, now that NXT-G 2.0 is out, it's probably a good idea. I've collected mistakes and omissions over the years and will hopefully fix those easily enough, but Apress has given me permission to increase the page count on the book... so....

For those of you who own the first edition, I have a few questions that I'm hoping you'll help me out with...

1. Is there anything you feel should be added to the book?
2. Would exercises be beneficial?
3. Did I cover wires well enough or do they need more discussion?
4. What did you like about the book and want more of...
5. ... and what did you NOT like about the book and want less of... or corrected?

For the original book, I made the test robot (SPOT) available as a downloadable zip file containing photos to build it - for this book, I'm probably going to update SPOT and provide BIs for all three kit versions - 1.0, 2.0, and Education. Not sure if that will be useful or not... thoughts welcome.

I've had requests from teachers and coaches to provide some hands-on activities in the form of Exercises, so please comment on that as well if you can...

It's nice to be able to update a book and fix things you overlooked the first time around... and I welcome your thoughts on improving this book. No promises that Apress will let me do anything too crazy, but if I'm able to use your suggestion or find it useful for correcting or adding something in, I'll try and credit you in the book if you're the first responder for an improvement, fix, or addition.




Unknown said…
I haven't read the book, but I just tried to load the .lxf file (Lego Digital Designer) on Snow Leopard with version 3.0.something and it says, that the model was saved in an old format. If I try to load it after this warning, it seems to remove some blocks. (one motor, for example)

It's a minor thing, but an update of this file would be cool.
I'll see what I can do... I may not even be able to open it since I don't have any earlier version of LDD on my laptop. Yikes.

It's not a complicated robot, though, as the photos show. I'll see if I can get it redone in LDD in the near future but someone may beat me to it...
Unknown said…
Hey Jim,

One thought I had was expanded coverage of My Blocks. There's a lot that can be done with My Blocks--especially the complex stuff with the data wires--and I think that might be helpful to explain to readers. I was only able to cover the basics of My Blocks in my book "The Inventor's Guide," but I've realized that there's a lot that could be said on the subject.

Looking forward to your second edition!

- David J. Perdue
Edmands said…
Hi Jim,
think about how your readers will use the book. For me, it is a reference book which I use to look up information rather than reading it straight through. I assume coaches use the book this way but a teacher would go through the entire book.

1. Add a section on how to debug a robot. This is a very important skill for students to learn and can prevent some of their frustration. Cover checking plugs, viewing sensor information, logic, sensor placement, etc. Sometimes the robot really is only doing what you told it to do.
2. Exercises would be useful but what would be considered out of scope? Your FLL book has some good examples of problems I expect would be good exercises. For example, show how to use each sensor as a toggle switch. Exercises that help teach debugging skills such as using sound to know where you are in a program or displaying output values to the screen.
3. Provide an actual example of using wires and passing information and place it after the imaginary block section.
4. The book is very useful and helps me solve problems and remind me how to complete some tasks.
5. As you noted in the first edition, you did not cover passing values into and out of the My Blocks via wires.

I went through college using books called "Algorithms in (pick your language)" which were useful to understand more advanced concepts. A set of My Blocks to cover common tasks would be useful, but may be a separate publication.
Aaron said…
I haven't read the book in a long time, but I think it should explain in detail what the "Reset Motor" block does, because I've heard lots of completely different things about it, like "it resets the Rotation and disables Auto-Correction", and "it makes sure the errors of this block don't get added or subtracted in the next block", and yada yada.... Like I can't use it if I don't even know what it does!

Also, maybe the pages about the Bluetooth blocks should be updated with the new 2.0 BT Connection Block.

And that's everything that I think should be updated, without re-reading the book of course!

Armagon said…
I have not read the first edition, having a reasonably good understanding of the NXT-G language.

One thing I have not figured out is how to make two bricks (or one brick and one computer) send arbitrary messages over bluetooth (or USB). (You may have already covered this -- I don't know).

The other thing I'd really like to see in such a book is a section on how to recover when the NXT-G software decides you did something it didn't like, and, for example, tells you there is internal error -- so far as I can tell, the only thing to do is to carefully recreate the program from scratch. [I've seen this happen on both occasions when I showed someone how to program their bot using a Finite State Machine (a simple, but not super-simple program).]
Unknown said…

I own your current version of the book. I wasn't able to find anything in it about multi-threading. I think this would be a good addition.

Armagon said…
I'll second the comment on multi-threading being valuable.

It might also be interesting to briefly go over the blocks made by the community (at http://nxtasy.org/repository/nxt-g-blocks/ )
Unknown said…
I use the first book mainly as a reference book when my creations are not working as I expected them to. I think you shouldn't change the book too much.

It would be nice if the dataplugs were all listed in a similar way because sometimes I don't get the datawires to work as expected. Which can connect with which and examples of when to use them.

Maybe to list some (or all) "third-party-blocks" availible.

I've learned a lot by doing some really simple creations. For example a flashlight where I just put the colorlight/sensor in one port and a touch sensor in another. Now it is possible to make it go on/off in different ways. Another thing I made was a counter going to a preset number before starting over. You can achieve the same result in many different ways. Maybe some examples like that where you talk about the +/- of each way of solving it.
Brian Davis said…
It's curious. Looking through these comments makes me wonder how many people have read the actual programming sections of the 1st "Idea Book". Not all (but a lot) of this is covered there... not to mention on-line (for free) over at places like NXTasy.

Popular Posts