I absolutely love Processing. It's a subset of Java with a dead simple IDE. Bonus points for exporting to Android, javascript, and executable jars for the desktop. Comes with excellent examples. The community is generally quite supporting and open as well.
And to answer your question "why can't we get a simple way to create a simple 100x100 box for kids to draw in?"
Here's the processing code that does exactly that:
void setup() { size(100,100) }
That pops a blank 100x100 box onto the screen. Drawing a line is line(start_x, start_y, end_x, end_y).
Adding interactivity and animation is as simple as adding:
void draw(){ ... do stuff ... }
You, and everyone else, should check it out.
Logo is cool because you see the things you tell the little cursor to draw being drawn-- how could a kid implement something like his son's program, though, where a user is prompted to type their name and hit enter-- then a smiley face is drawn if their name is noah and a sadface is drawn if their name is anything else?
Handling hardware, give them primitives to write to and read from devices. Build up the code on top of that to handle more complex situations like manipulating external servos over a serial port.
Why do we need to install 50 frameworks, tell a window how to spawn, basically create a universe just to start experimenting with creating computer graphics? It's a (Width x Height) matrix of RGB values-- why can't we get a simple way to create a simple 100x100 box for kids to draw in?
No reason your son couldn't tell a screen to print colored pixels in RGB value with the right syntax.