Not quite to the middle of a two-week vacation and I thought I'd make a quick update.

When I've had some free time in the vacation I've started playing a little with some old tools I put together years ago (and have since stopped updating) for programming the Atari 2600 on the Macintosh. It's certainly helpful to program using assembler if you haven't, and it doesn't get much easier (at least with respect to the processor) than the 2600. One Y register, one X reg, and the accumulator. Only 128 bytes of RAM is another large plus. Makes you create some pretty tight code, and certainly helps you learn to count bytes.

Potentially the best bit of the 2600 is that you essentially have to hold the electron gun's hand as it paints to the screen. You have to time your code perfectly to process its screen drawing logic in the time it takes for the gun to move across the screen... One slip-up and the screen starts scrolling like mad.

Though I have a relatively unconventional programming education, learning assembler (enough to get by, anyhow) years ago has made me much better in my work today. It's taken me years to finally figure out how my experience has helped me program the way I do -- and why people who cut their proverbial teeth on Visual Basic take a much different approach, doing things like tying GUI to logic (eg, tying code that reads files in a directory to invisible directory and drive controls).

It's essential, imo, to get people started right by programming in a pure environment like the 2600 than one like VB where the controls and some pointing and clicking can make an app. Bad habits die hard.