Snake in C - Under 400 Lines (Full Tutorial)

Learn how to build the classic Snake game in C from scratch! In this tutorial, we’ll create a fully functional Snake game in under 400 lines of clean, readable code using C and Raylib. Perfect for beginners wanting to learn game programming in C or anyone interested in understanding the fundamentals of game development without unnecessary complexity. ...

November 20, 2025 · 1 min

Code Pong in 220 Lines of C | Raylib Game Programming

Learn to code the classic Pong game in C using Raylib in just 220 lines of clean, beginner-friendly code! Perfect for beginners wanting to learn game programming in C or anyone interested in Raylib development. Source Code: https://github.com/bi3mer/raylib-pong Raylib: https://www.raylib.com/

November 13, 2025 · 1 min

How Games Find The Shortest Path Between Two Points

Learn how pathfinding algorithms work through interactive visualizations. In this video, I implement and compare three fundamental search algorithms - Depth-First Search (DFS), Breadth-First Search (BFS), and A* - showing exactly how each one explores a grid to find the optimal path. We’ll cover how DFS explores deeply before backtracking, why BFS guarantees the shortest path in unweighted grids, and how A* uses heuristics to find paths efficiently. Everything is implemented in C using Raylib for visualization with terrain generation via Perlin noise. ...

November 6, 2025 · 1 min

From 100 Compiles to Zero: adjust.h (C Hot Reload)

Stop recompiling your C code just to change a number. adjust.h is a single-header library that lets you edit variables while your program is running - no rebuilds needed. Just include the header, mark your variables, and watch them update live as you edit your source file. In this video, I’ll show you how to set it up and demonstrate why this simple tool can save you time. ...

October 28, 2025 · 1 min

Hot Reloading Constants: Tweak Values Without Recompiling

Tired of the compile-restart-test loop when tuning parameters? In this video, I show you a clever technique for hot reloading hardcoded constants. By wrapping values in a TWEAK() macro, you can edit numbers directly in your source code and see them update in real-time while your program is running—no recompiling or restarting needed. ...

October 7, 2025 · 1 min

Boids With Raylib and C++

In this video, I implement a Boids flocking simulation using C++ and Raylib. Watch as autonomous agents exhibit emergent behavior through simple rules of separation, alignment, and cohesion, creating mesmerizing patterns that mimic real-world flocking behaviors found in birds, fish, and other animals. Source Code: https://gist.github.com/bi3mer/0017a28837bfa4f380364c6a4e089f68 Raylib: https://www.raylib.com/ ...

September 15, 2025 · 1 min

Creating a Sorting Visualization With C++ and Raylib

In this video, I build a real-time sorting algorithm visualizer using C++ and Raylib. Watch as the sorting process comes to life through smooth animations and colorful graphics, demonstrating how the algorithm works under the hood with visual feedback for each comparison and swap operation. ...

September 8, 2025 · 1 min

Sokoban

While I was TA’ing C++, the professor for the class asked all the TAs to record a forty minute long video on some topic related to C++. I figured it may be useful to see someone coding a game from scratch, so that’s what I did with part 1, which was Sokoban with bitboards. I enjoyed programming the game and making the first video, though, and I decided to keep going. The result was a 31 Part Youtube Series! ...

August 25, 2025 · 1 min

Block Randomization

Last month I ran an online study with 250 participants. There were 5 possible conditions, and assignment was random. You would expect there to be ~50 participants per condition. In my case, though, one condition had 36 participants, creating an unideal skew in the dataset in terms of participants per condition. The problem was random assignment. What I should have used instead was block randomization. Block Randomization Block randomization is super simple to implement, but it comes with a major downside when compared to random assignment. Random assignment is great when you’re running an online study because it does not require a server. Every client can call select a random condition on its own. Block randomization needs a server. ...

April 30, 2025 · 6 min

Logging for Recformer

One of my regrets is not actively writing about Recformer1 as I implemented it. I realized this while writing my last blog post, and this post is me trying to rectify that mistake. So, in this post I am going to discuss logging for Recformer. Why Does Recformer Need Logging? Great question! Recformer is part of the work I’m doing for my dissertation. The work I have done up and to this point has shown that the method I created for dynamic difficulty adjustment via procedural level assembly works when tested with agents, but I have not shown that it has any effect when player’s (i.e., actual human beings) interact with it. To address this, I am running several studies with real player’s to see how the system works. And while I will be asking the user to fill out a survey to learn more about the player’s experience, I also want quantitative data (e.g, levels completed, time played, etc.), and this is why Recformer needs logging. ...

March 27, 2025 · 10 min