I just put my program suite Blunder online. Anyone who plays chess can check it out. It is LAMP (PHP, not Perl) based, and also uses the chess engine Crafty. I have to automate and simplify it more, but I was doing all of this manually in a notebook at one point and so Blunder is a lot simpler than that.
Most chess teachers will tell you there are a variety of ways to improve your chess game. One is to look over your tournament length games after they are played, and annotate them, and if possible to have your chess teacher annotate them as well and point out mistakes you made and opportunities you missed. Blunder is for people who don't have a chess teacher available. If someone wants to review a game they played so as to do better next time, they have Crafty annotate the game. Then using WINE and pgn2fen.exe, they pull the relevant moves (FENs) out of the game, where crafty notes they could have made a better move. I thought about rewriting pgn2fen.exe myself in PHP or Perl or something, but it already exists, and is usable with WINE, so I figured why reinvent the wheel? With the FEN and Crafty notation at hand, we now enter Blunder
First we enter the FEN via a web page and it gets a numerical ID and is put into the database. Then we enter the blunder information for that FEN - when the game was played, what move was originally played by us, what move Crafty says would have been better, and how many points Crafty gives to each move (if there is a one point difference in scores, I blundered away a pawn, or missed an opportunity to grab the opponent's pawn - if there is a three point difference, it is a knight or bishop which was squandered etc.) Now all the information is in the database.
So what I then do is go to the trainer, which is sorted by score difference, with my worst blunders at the top. I click on it and the board I was seeing when I made the mistake is displayed. I then ponder the move for a while, then click on the board. It pops up a window which shows what move I made, and what move Crafty advised. I continue revisiting the trainer page, which I am continually updating with bad moves I made from games played. After a while, I begin seeing the correct move, and the recognition gets quicker and quicker. Where I would have made a bad move before, now I am making the correct move. Soon, I start making the correct move in similar games I am playing, where before I may have made a bad move. My chess game improves. Reviewing your blunders like this is a long-time known method of improving your chess game. Psychologists have even done brain scans where they see chess grandmasters hitting the proper associative cerebral cortexes when considering moves.
When putting this together, I assumed there was some simple, free, public PHP program that when given FEN notation would display a chess board on a local web page. I was unable to find a program like that however, or at least one not tangled up in some massive program suite. I have a PHP displayfen() function in this program which will do just that, in case anyone wants to use just that part of the program for some reason.
Right now, the program suite for 0.1 only contains this one aspect of displaying blunders from ones own games. It could easily be modified to show two-to-mate problems or other such chess problems. But aside from that, I have begun writing an opening trainer that may become part of the Blunder suite. It is a little bit harder to do - in the first move of a game between white's opening move and black's, there are 400 possibilities. Chess teachers recommend students not memorize chess openings until they are at a high level anyhow (although they do say people should have a general understanding of openings). The opening component of the suite I have to think about some more - there is no way I can enter all of the opening book manually (although I may put something in for opening choices I favor).