Journal Entry #13
I am getting close, but I’m not yet really close. I’ve been working slowly and steadily, on a whole range of little things rather than one or two big things. A good sign is that the code is no longer fighting me. Programmers might recognise that effect. To solve any programming problem, there are an essentially infinite number of approaches, some of which are good and some of which aren’t. When you are working on a big project, with a lot of subproblems, sometimes things just don’t gel properly and it’s hard to make progress. You fix that by reworking your approach to some of the subproblems, and eventually (hopefully) you reach a certain sweet point where the code stops fighting you and things start to flow properly again. Well that is how it works for me anyway.
Despite my good intentions, I have never posted a comprehensive feature list for Tarrasch V2 here. At this stage I feel sufficiently close that I really just want to press on and finish, then the program itself will be a statement of the feature list. I will say that the big unfinished features at this stage are partial and complete variation deletion, promoting from and demoting to text (which I’ve blogged about before), help and undo/redo.
My plan at this stage is to continue my current “making good” operations (basically wideranging detailing, tightening and other small fixes), then implement vaiation deletion, promotion from and demotion to text. I will then issue an alpha version of the program to a limited audience (maybe anyone who asks).
I am happy to leave help and undo/redo as unimplemented between alpha and beta versions.
Obviously I must have variation deletion. It’s so fundamental I sometimes forget I haven’t got around to implementing it properly. I am happy to report it will be just a one keypress operation. Pressing delete will delete all of the variation beyond the the current cursor location. If the cursor location precedes the first move in the variation (in which case the board will show the position before that first move – fixing a problem in Tarrasch V1, see the comment to the previous journal entry), then the whole variation will be deleted.
I also want promotion from and demotion to text in the alpha version since I think they will provide some unique “personality” for Tarrasch. Have you ever tried dealing with a damaged or partial game score, or a score that someone without chess computing experience has created from hand? For me it’s a fairly common scenario, and I hope Tarrasch will be better at handling such imperfect chess text than any other chess program. Basically Tarrasch will parse as many moves as possible. If this process breaks down, it will append the remainder of the game score as a comment. Using your human intelligence, something Tarrasch unfortunately doesn’t possess, you will hopefully be able to see what’s gone wrong at the point of breakdown and fix it by editing the beginning of the comment. Then promote the comment and presto, the game score is fixed.
Now undo/redo is also very important, in fact it’s more important as the program cannot be considered completely functional without it, especially given that as I’ve just stated above, you can delete all your work with one keypress. But it will take me some time to implement, and I am anxious to get the program into the hands of some users and testers as soon as possible.