Skip to content

Starting at the middle

September 24, 2010

This blog is intended to document the development process of a software product I have written. The product is the Tarrasch Chess GUI. I may as well admit upfront that if you are not interested in chess and you are not interested in software or programming there won’t be much here to interest you.

I’ve called this first post “Starting at the Middle” because I am starting the blog in the middle of the development process. Ideally I would have started at the beginning (of course) but sometimes life isn’t like that.

I have been working on the Tarrasch Chess GUI for a little over two years. I have an acute memory of the decision to start out. Basically, I had broken my jaw (it’s a long story) and I decided I needed something to take my mind off both the pain and the food I wasn’t allowed to eat.

I had dabbled with chess software off and on for years, but never really developed anything of substance. I decided that had to change. I would build a general purpose chess workbench (that’s my personal definition of what a Chess GUI is by the way). It would be something I would be proud of, and something I would use a lot myself. In fact the basic inspiration was that this should be a chess GUI that worked the way I thought such a tool should work. I was not a big chess computing guy (chess yes, computing yes, chess computing no). One reason for that was that the existing tools did not make much sense to me. I just didn’t find them intuitive, and I hadn’t got over the hump needed to become expert with them.

How did I think a chess GUI should work ? Well you should start it and see a standard chess board in the opening position (existing tools do that). By default the piece design should be the same design used in most books (existing tools don’t do that). You should be able to move the pieces around freely making legal moves without other constraints (some existing tools allow that). From now on I’ll list just things that existing tools don’t do, or don’t do as well as I think they should.

It should always be obvious what is going on and what my main options are. Its should be so obvious that a help file is not even needed, let’s be honest they’re so rarely any help. It should always be obvious which side is to move. It should always be easy to abandon the current position and set up a new one. Setting up a new arbitrary position should be as easy as it can possibly be.

There should be a default opening book in place that has the main lines in main openings. Right from the start I should be able to immediately see how many book moves are available in any position, and also see what those moves are without having to do anything that isn’t completely obvious.

I should be able to start a game against a decent chess engine at any time from the position on the board, irrespective of how I got to that position on the board. It should be absolutely obvious how to play either as white or black, and that decision should certainly not have anything to do with whether white or black is to play in the current position.

Once I am playing against the engine it should be as much like playing a human as possible. I don’t want to know what the engine thinks of this position unless I specifically ask! On the other hand it is nice to know when the engine has actually thought about a move and when it has come out of the book, it’s a distraction if you find yourself guessing based on whether the engine takes its time or not. In fact the instantaneous nature of book move replies is itself a distraction, and should be disguised with a small delay. That is consistent with the idea of making it as much like playing a human as possible.

There’s more, much more!

The engine should not only let me know whether it has played a book move or not, it should let me control whether it always plays book moves when available. And if not, I should be able to control just how often book moves are played with some easily understood and modified metric.

Given there’s a book available, I want it to help me not just the engine! If I play a move that’s not in the book when a book move is available, I’d like the opportunity to reconsider, with a list of book moves, in order of decreasing popularity.

Making a move should be as easy as possible. If I don’t slide the piece into place my choice may be ambiguous. I don’t want the GUI to guess though, I want it to smoothly offer me a menu, with some rudimentary ordering at least. For example most popular book moves first, blunders last. After the move 1.e4 if I click on c6 why would a GUI guess 1…Nc6 ? (Chessbase 9 I’m looking at you). If it’s going to guess surely 1…c6 is a more sensible selection. But preferably it won’t guess at all and 1…c6 will be listed in a menu ahead of 1…Nc6.

Now playing an engine can be a little daunting these days. The best engines will beat up just about anybody. How can we make it more fun? Well for a start don’t give the engine as much time to think as the human! By default, give the human more. Furthermore the chess GUI should be a tool that’s totally under the control of the human. Please, let me change the time on the clocks any time I want, in a very easy way. Like clicking on the onscreen clocks! Let me control other things about the game too. Let me label the players names any way I want, by say, clicking on those names and simply editing them.

In the spirit of making the game more fun, why not let me swap sides when I am getting beaten up badly? The engine should just be a slave. Let’s see how it likes this horrible position I’ve ended up in!

Finally a word about the engine as kibitzer. I want to easily start this up at any time, even when I am in a game, so that the engine will effectively give me advice as well as commentary about its own thought processes. Very importantly, I want to be able to stop the kibitzer without clearing the kibitz commentary. That way I can take a breath, sit back and look at that commentary without fear of it being overwritten by new insights from the engine.

As it happens the diatribe above serves as a fair description of the first version of the Tarrasch Chess GUI. I released that version (V1.00a, more recently V1.00b, Tarrasch V1 for short) more than a year ago now.

I think it’s fair to say Tarrasch V1 has been well received. Many thousands of people have downloaded it. I get a steady stream of feedback from all over the world, most of it very positive.  The people behind Rybka host Tarrasch V1 on the demo page of their website and indicate there that it is absolutely the easiest way to try out Rybka.

Unfortunately I haven’t yet met my goals. I am not (sufficiently) proud of Tarrasch and I use other GUIs more than I’d like. The problem is that there are some very important features missing from Tarrasch V1. I took some shortcuts in order to deliver something reasonable in a reasonable time span.

This blog is about delivering Tarrasch V2. Tarrasch V2 is intended to allow me to reach my goal by remedying those shortcuts. The goal is to deliver a more complete and useful tool, a really good chess GUI.

Subsequent posts are intended to describe in broad terms what is complete, and what is still missing, and to document the painstaking task of completion.

But for now I think I should write some more code…

8 Comments leave one →
  1. Paul Cook permalink
    September 24, 2010 11:23 pm

    Good blog, I learnt something about v1 regarding “If I play a move that’s not in the book when a book move is available, I’d like the opportunity to reconsider, with a list of book moves, in order of decreasing popularity”, I always wondered what the list of moves was for and even better to know the list is sorted from most popular to least.

    • September 24, 2010 11:53 pm

      Thanks Paul. I suppose that is the biggest single stumbling block when users sit down and start playing with Tarrasch. When I’ve seen my friends try the program for the first time they always trip over it. Particularly if they are playing an unambiguous move and the list is only popping up because they are playing a non book move when there are book moves. My attempt to make it obvious what is going on is to try and make the colour green synonomous with book moves. Maybe I should make it an option you can turn on later, but I suspect if you do that 95% of your users never discover the feature. Despite my comment about the unhelpfulness of help files, this is the sort of issue that can benefit from a help file. So a help file is one of the V2 wishlist features. One of the benefits of the blog is that it will make me list and prioritise the features, as well as mark off completion.

  2. September 25, 2010 12:25 pm

    Very nice try! We share the same ideas about, how a chess GUI should be.
    I will try the program once I find a machine with the appropriate OS(I have GNU/Linux installed).

    Keep being motivated and you will develop a very useful chess GUI.

    • September 26, 2010 2:45 am

      Thank you. I am using tools designed for portability (C++, wxWidgets GUI library) with a view to eventually porting to Mac and Linux. The key word is “eventually” though unfortunately. I can see this becoming a hobby for life, but this won’t be a bad thing. Once I have Tarrasch V2 out I will feel more relaxed as I will have something more substantial and complete already available.

  3. Chex Machine permalink
    October 27, 2010 2:17 pm

    I’ve tested the Tarrash Chess GUI using wine in a MAC OSX 10.6.4 and works perfectly! Nice job.

    • October 31, 2010 4:13 am

      Thanks you for this. All programmers love this kind of feedback (it works, I like it, no need to do anything right now) above all of course. Incidentally, I had no idea that Tarrasch could be made to work on a Mac.

  4. August 8, 2012 9:27 pm

    Thank you so much for Tarrasch! Inspired by my son & daughter-in-law’s latest achievements, I resolved to have a proper go at improving my abysmal chess and asked their advice about a piece of software that would be easy to use and let me play through games and work out where I was going wrong. ‘Our friend Bill..’ they replied. I suspect that you can work out who I am.. Thanks again for this (and also for all the rest).

    • August 9, 2012 9:36 am

      Thanks Tanya. Your son is very popular in this part of the world. In Wellington in particular we got to know him really well during his sojourn here. I’m sure you are very proud of him and he is a huge credit to you (and his dad of course!). He’s not just a 2600+ chess player, he’s a 2600+ young man!

      As far as Tarrasch is concerned, I hope it meets your needs. Don’t hesitate to ask if there’s anything you don’t understand. I designed Tarrasch for people who are more comfortable with chess than with computers. Perhaps strong players who aren’t computer savvy and don’t want to wrestle with a complicated program with too many features. Having said that, I get plenty of positive feedback from people who enjoy Tarrasch that don’t match my target profile at all so perhaps Tarrasch will meet your needs perfectly!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: