Skip to content

Working on Tarrasch Again

October 19, 2013

It’s a wonderful world we all live in these days. Modern computer technology has enabled an environment where individuals can express themselves by easily creating content (whether fiction, non-fiction, software, podcasts, videos whatever) and pushing it out to the world. I wanted to play my tiny part in this revolution and the Tarrasch Chess GUI is the result. It’s a small and modest thing, but it’s something. It’s different, it’s fit for purpose and I like it. The end.

Well actually no. It’s not the end, I am working on Tarrasch again, and I am sure I will be putting out a much enhanced new version. I haven’t written anything here for a long time, because I didn’t really want to commit to a new version. I’ve actually been working on the new version for months now. And it will be months more before I am ready to release an alpha or beta version. I am writing this because for a long time progress was glacial, and I wasn’t sure I would ever get anywhere. But recently I’ve turned a corner and started making faster progress. I’m starting to believe again and a public commitment is a good way to stay motivated. If you’ve promised something to an audience, giving up is just too embarrassing. I think this blog was a key factor in getting Tarrasch V2 out the door, and hopefully posting again (maybe not so frequently) will do the same thing for V3.

So how will V3 differ from V2 ? I know there have been posts and discussions here before about this very subject, but I am afraid the reality has nothing to do with those posts! Tarrasch has always been about me making the chess workbench that I need, with the hopeful side-effect that it would be useful to others as well. Basically I started playing around, adding the missing features that were forcing me to resort to other Chess GUIs sometimes.

So what have I been adding ? In rough order of importance;

  1. Database support.
  2. Multiple Tabs
  3. Web publishing
  4. Mac version

I can’t even remember if database support has ever been discussed in this blog before. But in retrospect it is such an obvious deficiency, and at the same time a great opportunity for improvement. When I am working as an (amateur) chess journalist on the New Zealand Chess Magazine or the Wellington Chess Club website, I need more than just engine evaluations. I need to know how the opening phase compares to master praxis. Obviously a keen player who is working on his game wants the same thing. Why I thought Tarrasch was complete without such a feature now puzzles me. 

Multiple Tabs arose as a side effect of database support. The database feature lets you call up a list of database games featuring the current position. You need to be able to load a game or games from this list into the normal Tarrasch interface without in any way sidelining the original game you were working with. After coming up with a variety of artificial and unsatisfactory ways to do that I realised there was an existing highly successful and fashionable user interface paradigm that was eminently suitable. A tabbed workspace not only solves the database dilemma, it extends Tarrasch in a useful and powerful way without requiring a complete new approach to everything. Software happiness achieved.

A web publishing feature arose from my needs as a chess journalist (see above) and also because I suffer from the slight arrogance that makes me think that existing solutions are poor and that I can do better. My idea is to create a traditional chess book like layout, with optional dynamic interactivity. How do you turn on interactivity ? Click on a move. The original point comes next – the nearest traditional chess book diagram then transforms into a dynamic, live computer board with media (forward/backward/play/pause) buttons. As you move through the game in interactive mode, the dynamic board smoothly transitions to whichever traditional chess book diagram is closest. I think it works sensationally well – but of course I am hugely biased. For an example, see

I bought a Mac a couple of years ago, not with the intention of leaving Windows forever, but with the idea of participating in Apple’s “ecosystem” and maybe making some money from my hobby sometime. Well that hasn’t happened yet but it’s early days 🙂 I didn’t want to waste my investment and so I decided to force myself to work on the new Tarrasch version on my idle Mac. I always wanted the C++ code to be portable, and this was a chance to move from theoretical portability to practical portability. The plan has worked well and I am now pretty much as happy in the XCode (Mac) environment as the Visual Studio (Windows) environment. Well maybe not quite. The Mac cultists won’t believe me, but I think Visual Studio is better. Getting Tarrasch to work at all in Mac was a lot of work, symptomatic of a big problem in the Tarrasch source code. Basically I took too many shortcuts to get Tarrasch 2 out, and I have some big internal messes that I am still trying to resolve. The technical management term for this situation is “technical debt”. I have to pay back my technical debt before I can move forward.

That’s enough for one post. I should quickly add something about the “maintenance version” of Tarrasch I released a few months ago. Keen observers might have noticed this, the only visible thing to have happened at for a long, long time. There’s not much too say so I won’t say much. Basically I had some bugs that I didn’t feel comfortable leaving unfixed. Not a problem for casual users, but if you use Tarrasch a lot (like me) it’s worth the effort to download and install the newer version on top of the original Tarrasch V2 release.



9 Comments leave one →
  1. cormac zoso / Kelly Patterson permalink
    October 19, 2013 6:37 am

    wow! this all sounds outstanding and very exciting … i use Tarrasch almost every day, literally, and so hearing news of your work that’s already well underway is something that perked this old guy up even at 1:30 a.m. up here in the USA 🙂

    and database support is really a great idea and tho overlooked til now, many great ideas are overlooked no matter how obvious it might seem later when that light bulb finally flicks on … and while i don’t do Mac, i’m sure many Mac users will be delighted once they get their “first” version of Tarrasch …

    while i can’t add any such thing as ‘coding’ support, you have my encouragement and best wishes for continued success with this great chess program … if I am not using Tarrasch to squeeze in a couple quick games during the day, when i have more time i use it to work on other aspects of my game, review games i’ve played and see where it sees better moves and ideas that i had, or simply to experiment and play with different engines, etc … Tarrasch is easily in my top five pieces of software i use on my computer and actually is probably number three after my web browser and word processing program 🙂

    so now i’ll have to work on my patience as i know all the ambitious improvements you’ve made plans for and already have underway will not be ready next week lol 🙂

    best wishes and keep up the great work

    • October 19, 2013 9:24 pm

      Thank you for this very kind and encouraging response. Feedback like this makes all the work put into Tarrasch so far worthwhile.

  2. rex empire permalink
    October 26, 2013 12:58 am

    A big Bravo!
    Thank you v.m.
    I find Tarrash the best and most useful chess GUI for engines.
    I use it every day to review my games.
    Keep the good work!

  3. Master-Chief permalink
    January 21, 2014 8:46 pm

    Is V3 available (as source code) somehwere? I thought about trying to build it on Mac; just downloaded Tarrasch V2 and am currently building wxWidgets on Mac. Then I stumbled upon your blog – post…
    I also thought it might be possible to add a “analyse game” feature, similar to Shredder UCI… Well all, in all, I’d love to play around with the current V3 source code…

    • January 21, 2014 9:20 pm

      Thanks for your comment. I have been working away slowly on V3 on my Mac, but unfortunately not providing timely blog updates. Sorry about that. Also, unfortunately, I haven’t yet incorporated the public source code repository into my workflow. This is a problem. I would prefer to be doing things the proper way, not just uploading a massively changed system once I am done. Just at the moment the state of V3 is in massive flux – the plan is to tidy everything up, and make a useful (although massively unfinished) V3 preview available soon. From that point on I plan to push into a public the source code repository, and keep it updated, according to best practice. Also I do plan to have an “analyse game” feature, but not in the preview. It might be something you can collaborate on if you are interested. Sorry that all my other commitments are getting in the way just at the moment – but things will change soon ! I am pretty excited about V3, it will be a huge step forward, and I hope to finish it in 2014.

    • January 21, 2014 9:26 pm

      I should have also pointed out that getting V2 to compile and work on Mac is a bit of a mission – that was my first step and it took a lot of effort to get it working reasonably well. It’s probably not sensible for you to waste all that time. If you like I could email you a .zip snapshot of my latest V3 build – at least it compiles and runs on Mac. Reply on this forum if you are interested.

      • Master-Chief permalink
        January 22, 2014 5:37 pm

        Thanks for your offer. Indeed, I would be very interested to play with the latest version. I cannot promise that I will make useful contributions/patches — me too having committments 🙂 — but I’ll do my best.

        One more question if I may: Did you base the whole build process on gcc and make, without any Mac-specific code (i.e. Carbon?)… Then a Linux-build should be a possibility?

      • January 22, 2014 10:41 pm

        I should point out a few things. I don’t have Tarrasch V2 for the Mac. I got enough of V2 working on the Mac for that to be a development basepoint to start developing V3 on the Mac. Since then I’ve been happily hacking away, not worrying too much about the V2 aspects I haven’t sorted out properly yet, and indeed actively destroying parts of V2 that I am planning rewrites for (example – the whole .pgn dialog). So what I have at the moment is (potentially) interesting, but it’s not fit for (any kind of) purpose. Also, I have found that Mac development seems more “version dependent” that Windows development. I decided to upgrade to Mavericks and XCode 5, and everything broke horribly and it took a week to get it working again. So don’t expect to work with the code unless you have Mavericks and XCode 5. I use wxWidgets as a GUI library and it abstracts away things like Carbon. Very fortuitously, wxWidgets very recently reached a major 3.0 production ready release milestone, which for the first time fully uses Cocoa (not Carbon) which is the modern OSX GUI library. But in general you are correct, making something that compiles and works with Windows and OSX should mean that a Linux version won’t be difficult (wxWidgets also supports Linux). After all that, please excuse me, I am going to take a day or two to do just a little more tidying up before dumping the current state of the code on you (or anyone else). In fact what I might to is put the .zip onto the for anyone interested to download. Along with a note explaining all the caveats in my last few comments.

    • February 9, 2014 5:13 am

      Hello, sorry for the delay, but I have now put the V3 source code on github (search for Tarrasch Chess GUI or my username which is billforsternz. My intention is to push all changes to the github repository from now on.

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 )

Google+ photo

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

Twitter picture

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

Facebook photo

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

Connecting to %s

%d bloggers like this: