After my son built a robotic arm, we wrote a program to control it. Unfortunately, the limitations of the NXT's user interface made it a little clunky (we needed to toggle between 3 different screens to control the robot's various motors). However, thanks to Google's App Inventor, we were able to write a far more sophisticated interface as an App that ran on my Android cell phone which communicated with the NXT via Bluetooth. Creating the App was fairly quick and easy. Download the source code.