Hans Niemann Is an Andy Kaufman-Like Character

I posted the following message on TalkChess, a forum focused on chess engine programming. The topic is tangentially related to chess engine programming. Drama in the World of Chess Nineteen year-old Hans Niemann, unknown in the world of elite chess until very recently, sporting an improbably flat then steep rating progression, defeated World Champion Magnus Carlsen in a tournament game. Did Hans cheat? Did he receive computer assistance? Or did Magnus play poorly? My Thoughts (Posted on TalkChess) Hans Niemann strikes me as an Andy Kaufman-like character. You know, someone who gets off on people hating him, loves playing the… Continue Reading

Judit Polgár Crushes Magnus Carlsen

I was up late last night playing chess online. Man, chess is a difficult game. It requires a humble attitude in order to accept losses and invest in the play and study time necessary to gradually improve. Which I’ve not done because I keep tinkering with my chess engine (a programming pursuit) instead of working on my game. Anyhow, after getting my ass handed to me online, I thought I’d spend time today to write a blog post about recent news that shocked the chess world. Last month, Magnus Carlsen was in Madrid, Spain where the Candidates Tournament was held.… Continue Reading

MadChess 3.0 Beta bef88d5 (Tweak Search, Tune Eval)

I’ll let my Pull Request notes (PR 3) explain where I began and where I finished (hint: not where I expected) with my latest code improvements to MadChess 3.0 Beta: Originally, I intended this PR to add Static Exchange Evaluation (SEE) to MadChess’ search method to reorder or skip evaluation of captures and / or quiet moves that enable the opponent to profitably capture the most recently moved piece. After numerous attempts to write a method that evaluates piece exchanges- either statically (without actually moving pieces) or dynamically (move pieces and search), and integrate it into the search, I could… Continue Reading

MadChess 2.0 Beta Build 022 (MVV / LVA Move Order)

I corrected a bug in move order. Moves mistakenly were ordered by most valuable victim, then most valuable attacker (MVV / MVA). I changed the order to most valuable victim, then least valuable attacker (MVV / LVA), so pawn takes queen captures are ordered before queen takes queen captures. In addition, I added code to recognize draws by insufficient material. And I corrected an index out of bounds bug involving move arrays. This added 30 Elo to the playing strength of MadChess 2.0 Beta. MadChess 2.0 1626 : 800 (+51,=79,-670), 11.3 % vs. : games ( +, =, -), (%)… Continue Reading

MadChess 2.0 Beta Build 020 (Baseline)

I’ve reached an important milestone in the development of my new chess engine. MadChess 2.0 Beta can play a timed game of chess. I’ve implemented an alpha / beta negamax search with aspiration windows and a capture / check evasion quiescence search. Evaluation is limited to material and middlegame piece square tables. No tapered evaluation, no passed pawn bonus, no piece mobility, no king safety, no reductions or pruning of moves, etc. I ran a gauntlet tournament, pitting MadChess 2.0 Beta against weak chess engines. MadChess 2.0 1489 : 800 (+17,=56,-727), 5.6 % vs. : games ( +, =, -),… Continue Reading