Tell me about your setup

Discussion of chess software programming and technical issues.

Moderator: Ras

RayLeeIsmay
Posts: 7
Joined: Sun Jul 03, 2022 10:39 pm
Full name: Rayleigh Langhoff

Tell me about your setup

Post by RayLeeIsmay »

So, you're sitting down for a few hours of chess programming. What tools are you using? What is your IDE/language obviously, but all the other stuff to!

What is your testing framework like? How do you test your program? What guis do you use?

Do you use off-the-shelf tools? Did you write any custom ones? What was your setup for creating and testing those?

Got the idea while watching ddugovic's stream vods and seeing the tools he was using. What do you use?
smatovic
Posts: 3230
Joined: Wed Mar 10, 2010 10:18 pm
Location: Hamburg, Germany
Full name: Srdja Matovic

Re: Tell me about your setup

Post by smatovic »

You first ;)

--
Srdja
User avatar
hgm
Posts: 28353
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Tell me about your setup

Post by hgm »

I am using NotePad and gcc (under Cygwin) on Windows. Or FireFox, when I am programming in JavaScript. And gedit, git and gcc under Linux. For developing more complex projects I prefer to work under Linux. But for testing a Windows GUI front-end I need to be on Windows. I run engine games mostly on Windows. Always using WinBoard as GUI.

For debugging engines I usually include a few lines of code in them that would display critical information about the nodes along a selected branch of the tree. This allows me to always zoom in quickly on a problem reproducibly causing an obvious bad move (or hanging engine). If an engine uses tricky incremetal update of complex data structures (such as attack maps) I usually include code to calculate these structures from scratch, and compare it to the incrementally updated version, aborting the search when a difference occurs.
KhepriChess
Posts: 93
Joined: Sun Aug 08, 2021 9:14 pm
Full name: Kurt Peters

Re: Tell me about your setup

Post by KhepriChess »

IDE I use is VS Code. The vast majority of my debugging is done in the browser (Firefox). If I need to debug something specific to UCI, then I'll run the debugger in VS Code. I wrote a test suite (that just calls my perft function for each perft position) to auto-run all the perft tests if I need to make sure I haven't broken something in my move functions.

For engine strength testing, I run the Cute Chess CLI (or the GUI if I need to be able to see something or capture a particular UCI input/output).
Puffin: Github
KhepriChess: Github
Witek
Posts: 87
Joined: Thu Oct 07, 2021 12:48 am
Location: Warsaw, Poland
Full name: Michal Witanowski

Re: Tell me about your setup

Post by Witek »

I use Visual Studio 2022 on Windows and this is my main platform for development and testing. Occasionally, when working on Linux, I use VS Code with clang+CMake. I use C++ exclusively - both for the engine itself as well as all tools around it: unit tests, performance tests, network trainer, self-play data generator, etc.

For strength testing I use cute-chess-cli and sometimes c-chess-cli as it provides better engine log output. I have bunch of manually-edited batch files that I run over a night.

I very rarely use GUI but if I do, I mostly use Nibbler and very rarely Cute Chess. And to setup some test position ad-hoc I usually just use lichess and copy FEN over.
Author of Caissa Chess Engine: https://github.com/Witek902/Caissa
clayt
Posts: 29
Joined: Thu Jun 09, 2022 5:09 am
Full name: Clayton Ramsey

Re: Tell me about your setup

Post by clayt »

Text editor: VSCodium. It's a distribution of VS code without the closed-source Microsoft telemetry, and it's (in my anecdotal experience) a good deal more performant.

Language: Rust.

Testing: I have a suite of unit tests (about 120 total) that I use to verify the correctness of all parts of my engine. Since I use Rust, all I have to do to run them is `cargo test`. For testing Elo differences, I use the cutechess GUI.

I use perf and inferno-flamegraph to get performance data on some tests, and use that to guide my optimization efforts.

I make liberal use of the `debug_assert!` macro to verify the correctness of my program in testing.
AndrewGrant
Posts: 1957
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: Tell me about your setup

Post by AndrewGrant »

RayLeeIsmay wrote: Sat Aug 20, 2022 3:16 pm So, you're sitting down for a few hours of chess programming. What tools are you using? What is your IDE/language obviously, but all the other stuff to!

What is your testing framework like? How do you test your program? What guis do you use?

Do you use off-the-shelf tools? Did you write any custom ones? What was your setup for creating and testing those?

Got the idea while watching ddugovic's stream vods and seeing the tools he was using. What do you use?
Notepad++, OpenBench :)
User avatar
Ras
Posts: 2696
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: Tell me about your setup

Post by Ras »

C, Xed, GCC, GBD (commandline), c-chess-cli.
Rasmus Althoff
https://www.ct800.net
c_j_bolt
Posts: 7
Joined: Wed Jan 29, 2020 6:47 pm
Full name: Chris Bolt

Re: Tell me about your setup

Post by c_j_bolt »

Because I wrote my engine in Java I decided to use Eclipse as my IDE. I develop on Windows and have found Eclipse to be pretty good apart from some occassional headaches with the eGit integration.

I make extensive use of JUnit unit tests, I have over 400 tests ranging from simple move generation checks to more complicated full engine execution from UCI commands (like KQk and KRk find mate-in-X type tests). I know I haven't quite got the right sweetspot with these tests (the coverage of the search algorithm is loose to say the least), but they have enabled me to catch regressions from time to time. of course they are no substitute for cold, hard Tournament testing in Arena.

My Engine has the capability to log quite a lot of debug output to files, so early on, I wrote a log file analyser to assemble statistics from a large number of logs. To be honest I have found that of questionable benefit, even when trying to tune parameters like lazy_eval thresholds etc.

I even developed verbose logging of alpha, beta, movelist, best move etc at each node visited(!). However once I got the speed of my engine beyond that of a tortoise, I gave up ever using this, as the output became unusable very quickly. (Notepad++ doesn't like GB text files, who would have thought it!)

I also use Heroku to host my engine, so I have a CLI environment for that, then there are various github repos.

Because my engine was my first open source project, I also experimented with Maven as a package manager to pull in dependencies. That has proven to be pretty useful as I moved to using some some nice container implementations for the hash table (fast-utils).

I develop and run everything on Windows, using Arena for testing so far, though I want to take a look at Banksia, as I am getting fed up with managing N concurrent Arena tournies on various PCs through RDP! Hopefully that will help me with that. I even resort to adding up tournament scores using a calculator. I really need to invest some effort in doing that smarter :D
RayLeeIsmay
Posts: 7
Joined: Sun Jul 03, 2022 10:39 pm
Full name: Rayleigh Langhoff

Re: Tell me about your setup

Post by RayLeeIsmay »

smatovic wrote: Sat Aug 20, 2022 5:19 pm You first ;)

--
Srdja
I'm a newbie so this may not be ideal.

I use visual studio 2022 for programming, I'm testing with cutechess gui to run tournaments. Usually I run it as a gauntlet (10s+0.01s) against 2 stable earlier versions along with TSCP to get an estimate of relative ELO. This is not ideal.

Being a newish programmer, I had a really hard time figuring out unit testing with C++ in visual studio. I'm actually considering starting over with Qt or a similar framework. I'd like to have (in a debug build) a simple gui for settings like doNull, which book to use, thresholds for LMR, etc. It would also make unit testing a lot easier since it's something I've only done on small scales in python before. Picture a dialog box next to the console which has comboboxes, spins, a perft button, etc.

Other tools are Notepad++ for reading examples and going through logs. I recently went back and am putting in debug_assert commands and finding a lot of bugs that somehow survived perft, that's part of the need to restart.

I've tried using BanksiaGui and it's really nice, I just haven't found documentation/tutorials that really works for me. Arena is great for playing against the engine, testing ad hoc positions, and watching games on longer time controls.

That's about it. I'm about to start over and probably start using some different tools along with Qt to simplify coding and testing, which was why I posted this thread. Thanks everyone for the responses!