Occasional ramblings on Computer Science and Mathematics

Long form thoughts on programming, development, system design, and more.

Devlog 0x7 - Generating Non-Capture Pawn Moves

Devlog 0x7. Today, I started the initial implementation of my generateMoves() function, which will eventually enumerate all possible moves in a chess position. My focus for this session was on the “quiet” (i.e., non-capturing) pawn moves for both White and Black pawns.

Devlog 0x6 - isSquareAttacked & Back To School

Devlog 0x6. Today, I implemented and tested the isSquareAttacked function, which determines whether a given square on the board is attacked by a specific side (white or black). This function is central to many chess-engine calculations—for instance, evaluating checks, pins, and tactical possibilities.

Devlog 0x3 - General Improvements and Printing Current Game State

Devlog 0x3. Today, I implemented a printBoard function that iterates through the list of piece bitboards and prints a representation of the current game state, along with general improvements to the popBit() and setBit() functions.

Devlog 0x2 - Magic Bitboards

Devlog 0x2. Today, I implemented magic bitboards for sliding pieces in Zig.

Devlog 0x0 - Relevant Bit Masks

Initial Devlog. This edition goes over creating relevant bit masks for the rook and bishop.

New Years Goals, Plans, and Resolutions

A brief writing of my New Years Goals, Plans, and Resolutions. I am writing them and making them publicly available in hopes that I actually follow my plans for once, and to hold myself accountable to my goals and resolutions.

First thoughts on Zig for crafting a chess engine

In my first semester at Mines, I wrote a chess engine in C named Kirin. During Winter Break, I took it upon myself to learn Zig by rewriting Kirin in this new, fun systems level language.