Hi! You've got half of it working at least 🙂
Yes I think you're doing the right things. The "set home" needs to happen every time you restart the machine though. The "upload machine spec" happens once, it's a special occasion!
"Set home" needs to happen _after_ your upload machine spec too, you're best off uploading the machine spec, then restarting the arduino so it gets a freshly loaded specs from it's internal memory.
If the spec on the arduino matches the spec in the controller, then "Set home", by definition, places the pen into a drawable area - it's not possible to do a "set home", and then for a line at the same point to be off the page. You can test this by doing "set home" and then "move direct" and click just next to the home point. Perhaps you could click further and further away to troubleshoot?
So if the command ordering (above) doesn't help, that means there's a difference between the spec you have loaded in the controller, and the spec that has been loaded into the arduino. I have seen some where the commands get sent, but they don't get saved (for some reason), or they get corrupted along the way. Quite easy to diagnose though, if you're running the polargraph controller from source anyway.
The Processing console (the bottom half of the processing window - black and white text) shows you the raw communication between the arduino and the controller. When you restart the arduino, it reports the size (and spec) that it thinks it is. So watch that console and make sure the arduino is reporting the spec that you've told it. If the width or stepsperrev or mmperrev or stepmultiplier are wrong, then then it's a sign that uploading the machine spec is failing somehow.