It has been a productive couple of days. I released three new CPAN modules and updated an old one; I did a small amount more programming on shishi, which is turning out to be much simpler than I expected. (Until we get to the garbage collection of circular referenced objects, but I may just declare that the end-user's problem.) I also had the really scary thought that, since shishi is pretty much totally re-entrant, you can very easily have sub-parsing going on by embedding one parser inside another. Yow!
We also got the rest of the editing for the Bald Guy Smoking book finished off, and that's to bed now; we just sit back and wait for the copies to appear in the post. It's weird not having to do anything in my "free time" any more.
I started thinking about this go playing program, figuring that I'd start with Games::Go::Board
and go from there. And then when I sat down to code, I couldn't find Games::Go::Board
anywhere on my hard disk. I even tried on CPAN (since I've been caught out several times with a newer version of a module on CPAN than on my hard drive) but it wasn't there either. I must have got fed up with it and deleted it, since I remember that there were a few things wrong with it.
It's weird, but no matter how enthusiastic I am about an idea initially, once I get a setback like that - more precisely, any time I have to redo work I know I've done before - I get really fed up and turned off the idea altogether.
But then I started thinking about it in the bath, and realised that the old Games::Go::Board
code was pretty crap, and I could make a much more flexible system starting with a "generic board" class, a "referee" class to ensure moves are legal, and then additional plugin classes to do things like scoring and analysis. (Props to pdcawley for this idea, which he came up with the first time I explained Games::Go::Board
to him.)
So I'll be working on the Games::Goban
module either tomorrow or Tuesday, with additional modules like Games::Goban::Rules::Gomoku
, Games::Goban::Rules::Renju
and Games::Goban::Rules::Go
to come. Then I can work on porting the Yoshikawa go estimator, and then...