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.

Orly

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 hold a bachelor degree of applied computer science from Zuyd University of Applied Sciences, with specialization in software engineering and writing embedded software. My main occupation at the moment is writing backends for business software.

Even though it would be easey to spend quite some time talking about my other hobbies, such as reading, martial arts (I hold a black belt in Hapkido), photography, music and others, I'm sure the main stuff you're interested in is about chess and computers. Therefore I'll continue with that before you quit reading altogether.

I've been playing chess off and on since I was about 10 years old and I also got to work with computers since that time. 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, using the only two useful books from the library: Borland Pascal 7.0 by Jeff Duntemann, and a book about chess computers 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. You also had to have own board present to see the actual position. It played legal chess (most of the time), but it was easy to crash and easy to defeat. Not blundering any pieces or mate 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 were always more important things to do: study, work, moving, 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 one (or both!) of those languages.

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. Three years later, Edition 2018 was released, and it did get better, by a lot. So in the summer of 2019, after my last move and my girlfriend having moved in with me, I decided to start writing Rustic.

Here it is, and this book/tutorial you are reading is its documentation. 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