Scratch is Awesome. It's a programming environment for kids that runs on any computer (Mac, Windows, Linux).
When I was a kid we had Logo affectionately known as Turtle Graphics. It was a cool idea but was not effective mainly because Logo couldn't do anything practical - it was more or less purely an educational tool.
My daughter started talking about software at school kids were using to write their own video games. She said it was called "Scratch". So I Googled it and found the Scratch home page at MIT. I discovered that it has native versions to run on MacOS (like at her school), Windows, and Linux. Her computer runs Ubuntu Linux, so I opened the Ubuntu Software Center and there it was. One click later it was installed and running on her computer.
Scratch's simplicity belies a sophisticated environment. It's easy to do simple stuff like make a graphic move around on the screen, tracking the mouse, and check the colors of things it hits. This alone is the basis for myriad simple games kids can write.
But it also supports variables, if-then-else, do-while, and event publish/subscribe - emitting & handling events in different parts of your program. All this logic is scoped to individual sprites. It also lets kids draw their own graphics (or use scanned images) and record their own sound effects (you can imagine the kind of sounds that come from that!).
Scratch programs are portable across versions, so she can write stuff at home, bring it to school on a flash drive, run it on the Macs to show her friends, edit it at school, bring it back home and keep working on it.
Scratch is the best way I've ever seen for kids and curious adults to learn about software programming. Kudos to the team who built it. It is funded by a combination of tax dollars and contributions from Microsoft, Intel, Google and other companies.