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).