A Start in the Craft of Quality Software Development
I've taken on an open source software development apprentice.
He's passionate about music and gaming, so we looked at The Music Suite as an introduction to Haskell, but it's too bleeding edge: the Hello World example has an extraneous dependency on unix, which won't fly on his Windows development machine. I looked into re-arranging the dependencies, but even on linux, the released version doesn't install cleanly. We looked at haskell games, but installing OpenGL doesn't look like instant gratification either.
It turns out he has an idea for a web site to automate some game player-ranking stuff that he does.
He's done some Java development, so I thought perhaps using Joe-E would be a good way to expose him to object capability security, but Joe-E evidently went fallow in 2011. I can't get it to work with any handy version of Eclipse.
Starting with Scala seems reasonable; it was my bridge from python to functional programming, after all.
As I had hoped, the tools have matured. While I'm an emacs addict, I don't think I should infect the next generation, so I'm happy to find that IntelliJ is open source and its plug-in support does as well or better at things like:
IntelliJ gets along with SBT now too, granting wishes for software from our peers via maven.
The raw data for the player ranking is on the Web, so our first two wishes were:
Dispatch makes good use of types, and using jsoup involved only a little adaptation between Java and Scala types. He was pretty excited when he saw the program extracting various bits of information about each match.
The next episode looks to be deployment with Google App Engine.