You left a number of things out of your post. All the code, for one thing. Where you are seeing the "garbage, lots of squares and funny symbols." for another.
If the "garbage, lots of squares and funny symbols." are appearing in the serial monitor, does the baud rate shown in the lower, right of the Serial Monitor match that of the Serial.begin() statement in the code?
In the button example, there is nothing attached to pin 4. Why are you reading that pin?