History

16th February 2026

1. How it started & interests

Chess was an interest of mine when I was in school. For my Computer Science coursework I decided to make a chess engine in Python while writing up a documentation about it.

The Python Chess engine consisted of book moves, minimax algorithm (search to a depth of ~3-4 moves ahead), a simple evaluation of Piece-Square Tables and material count, and move ordering.

In completing this project and naming it K16 (since I was 16 years old at the time when getting into chess programming), I made my code public here.

2. Speed bottleneck & solution

Realising how utterly slow Python was at searching at high depths, I figured I would move to a faster programming language. My first option was to cheat and use Cython but this did not work for me (sadly). Golang was my next move, after doing some basic research I read somewhere how it is 4x faster than Python, getting me quite excited. Additionally, I found a chess library which I could use so it looked rather promising!

Having researched a bit into this library by the creator notnil, I developed a basic replica converting my Python code to Golang after reading its documentation too. Not knowing much, it still was fairly slow, but did get up to depth 5 which I was pleased about, but I assumed it would quadruple my depth... which did not happen. I needed to find something faster.

3. Preface

HEADS UP: I waffle a lot so feel free to skip some parts! This will be a fairly detailed documentation of how I made my first (decent) chess engine and continued to develop it to become a higher level.