Daemon, I cast thee out!

A while back, I randomly saw that an ex coworker posted something in a comment on Reddit, saying, "If you want to practice programming, use exercism." He didn't include a link, but a quick search soon yielded up http://exercism.io/.

It turns out it's awesome. It's just the right level, for me at least, of challenge and reward that it's really easy to spend a couple hours in pleasant sort of reverie, just whittling away the cruft and inelegance from an initial working solution until it's as clean and pretty as it can be.

When I first started on exercism, the Racket track wasn't yet live. I noticed a couple minor things wrong, made a couple pull requests to the Racket track, and a few days later it happened to go live, so I switched from writing Scheme to Racket:

http://exercism.io/nebkor

Right now, I'm pretty sure there are only three or four other people solving the problems in the Racket track, but already I've picked up some nice tips and tricks, as well as taught a couple, and the atmosphere is friendly and helpful. The person who created the site, Katrina Owen, likely deserves much of the credit for that site-wide culture, as the whole thing seems like an extremely well-done labor of love from someone who's good at what they do (creating pro-social structure, process, and incentives, interaction design, etc.). I got a little busy in the last couple weeks, but there's a feature I'd like to implement for exercism once I have a little more breathing room in my schedule.

Without the little boost of "effort -> reward" dopamine hit that I got from working through these Racket exercises, I'd not have been able to write the code that was the technical foundation of my last post with such fluency, since I'm not that practiced in Racket, but I love it as much as I thought I would.

If you want to try playing with writing software or learning to think in a new programming language, give http://exercism.io a shot!