About me
Hi again,
Right before the end of all things, I'll drop in a short scribble about myself. I'm sure you're just dying to read a rambling piece of text that's all about me, myself and I.
crickets
Oh. Right. Just let's forge on anyway :)
My name is Marcel, as you may already know from the preface. I'll mention it because you probably skipped the preface like everyone else. Guilty as charged... I thought about not even writing it. I have a degree in Applied Computer Science (called "Technische Informatica" at the time, in Dutch) from Zuyd University of Applied Sciences, with specialization in software engineering with regard to writing embedded software. My main occupation at the moment is writing backends for business software.
Even though it would be easy to spend quite some time talking about my other hobbies, such as reading, martial arts, photography, music and others, I'm sure the main stuff you're interested in is about chess and computers, so I'll just focus on that.
I've been playing chess off and on since I was about 7-8 years old and I also got to work with computers since I was about 10. Ever since I got my first chess computer and later, chess program on a PC, I wanted to write my own chess-playing software. At around 1994/1995, when I was just a teenager who had been jacking around with computers for a few years, I tried to do so in Turbo/Borland Pascal 7.0, using the only two useful books from the library: "Borland Pascal 7.0" by Jeff Duntemann, published by Academic Service, and a book about chess computers and algorithms I don't really remember.
This chess program partially succeeded. The program just had a command-line interface, so you had to put in your moves on the keyboard, just like the chess computers from the 70's, by typing e2e4 and pressing Enter. You also had to have own board present to see the position. It played legal chess most of the time, but it was easy to crash and easy to defeat. Not blundering any pieces was enough to win.
After I finished high-school and went to study computer science, playing chess as a hobby basically dropped by the wayside for quite a number of years, but I still wanted to write a chess engine "some day." It took me nearly 20 years to get around to it, because there are always more important things to do: study, work, moving, having a girlfriend, sports... well, you know. There's no human alive who has never postponed anything. Also, I didn't want to write a chess engine in C or C++, because everybody else already had one in either or both (!) of those languages.
So I finished my studies, got to work at several companies, and chess remained just a hobby with writing a chess engine stuffed away in the back of my mind somewhere.
Then at some point I heard about Rust as an alternative to C and C++. I started following the language, and serious thoughts about finally writing that chess engine cropped up again when it reached version 1.0 in 2015. While I was intrigued with the premise of this language and tinkered around with it, I found it somewhat cumbersome to use. The authors promised that this would get better in newer editions. Three years later, Edition 2018 was released, and it did get better, by a lot, so I started to dabble with the first bits of code that are now Rustic, in the summer of 2019. Around that time my girlfriend had moved in with me, saving lots of time travelling back and forth. We also know what happened in November of that year: the COVID-19 outbreak and the pandemic following it. That showed that working from actually was possible. So in 2020 I started working from home, which cut down on home-work travel time. All that extra time was enough to finally start writing that chess engine in earnest.
Here it is, and this book you are reading is its documentation, written in such a way that it hopefully can be used to create a similar chess engine in any desired programming language. I hope you enjoy using this engine, or reading the book and the comments in the code, trying to learn how to write your own.
Kind regards, Marcel