With regard to hardware I'd have defer to others but when you get to the point where he's ready to try some programming (at 10 he is definitely old enough to give this a whirl) it is hard to beat python as a starting language.
Good resources include:
include:<br />
link:[http://www.learnpython.org/](http://www.learnpython.org/)
http://www.learnpython.org/](http://www.learnpython.org/<br />
link:[http://diveintopython3.ep.io/](http://diveintopython3.ep.io/)
http://diveintopython3.ep.io/<br />
link:[http://www.swaroopch.com/notes/Python](http://www.swaroopch.com/notes/Python)
http://www.swaroopch.com/notes/Python<br />
<br />
Slightly more advanced or faster-paced:
faster-paced:<br />
link:[http://code.google.com/edu/languages/google-python-class/](http://code.google.com/edu/languages/google-python-class/)
http://code.google.com/edu/languages/google-python-class/<br />
link:[http://learnpythonthehardway.org/](http://learnpythonthehardway.org/)
http://learnpythonthehardway.org/<br />
The trend over recent years is to start instruction in programming in a "higher-level" language like Python and then (if needed) learn a more complex "lower-level" languages like C-family/Java/PHP/etc.