Blog Posts

I try to post new content every week. The search bar above can help you find what you're looking for. The posts are also tagged to help find related content.
Advent of Code 2024 Ruby Solutions: Day 3
Advent of Code 2024 Ruby Solutions: Day 3

Advent of Code is an annual event that invites programmers to solve a series of themed puzzles each December, and this post is the third in my ongoing series for 2024. Day 3, “Mull It Over”, seemed simple at first glance: find and evaluate multiplications in a corrupted memory dump. But …

Sudoku Series: Implementing Hidden Set Rules
Sudoku Series: Implementing Hidden Set Rules

In the last Sudoku Series blog post we implemented the naked pair and the naked triple rules. In this post, we will look at implementing the hidden single, hidden pair and hidden triple rules. Applying these rules is documented on many websites, but the two I’ve liked during my research are …

Advent of Code 2024 Ruby Solutions: Day 2
Advent of Code 2024 Ruby Solutions: Day 2

A couple of weeks ago, I published the first post in my Ruby solutions to Advent of Code 2024. In this second post of the series, we’ll tackle Day 2’s challenge: “Red-Nosed Reports.” Join me as we explore the problem, understand the requirements, and walk through my Ruby …

Sudoku Series: Implementing Naked Set Rules
Sudoku Series: Implementing Naked Set Rules

In the last Sudoku Series blog post we implemented the single candidate rule. In this post, we will look at implementing both the naked pair rule and the naked triple rule. These are documented alongside more advanced rules on a Mastering Sudoku website.

If you like this post and you’d like to …

Advent of Code 2024 Ruby Solutions: Day 1
Advent of Code 2024 Ruby Solutions: Day 1

Advent of Code is an annual programming event that offers daily puzzles throughout December, delighting enthusiasts with clever challenges and a festive spirit. If you’d like to know more about what Advent of Code entails, take a look at my previous blog post: Advent of Code Introduction.

I’m …

Sudoku Series: Implementing the Single Candidate Rule
Sudoku Series: Implementing the Single Candidate Rule

This week, we hit a major milestone: our solver can now complete very easy Sudoku puzzles, thanks to the simplest rule of all — the single candidate rule. By writing code that parses the grid repeatedly and looks for opportunities to apply this rule, we’re able to solve some of the simplest …

Sudoku Series: Locating Your Neighbours
Sudoku Series: Locating Your Neighbours

When solving Sudoku puzzles, a lot of the logic is about spotting patterns among groups of cells. In this context, a group of cells are those which must not contain a number among them more than once. Let’s build some logic to pick out groups of cells we might want to work with in our solving …

Migrating from Poetry to UV in a Python Project
Migrating from Poetry to UV in a Python Project

This is a very short post about our move from Poetry to UV in the Sudoku Solver we’re building in Python. I don’t have a definitive reason for switching, but I’ve been experimenting with UV recently and I’m starting to prefer it over Poetry. In this post, we’ll outline the goals of the …

Using Agentic AI to Get the Most from LLMs
Using Agentic AI to Get the Most from LLMs

Agentic AI represents a generational leap forward in how artificial intelligence systems operate, moving beyond single, monolithic models to autonomous, goal-oriented agents.

If you missed it, my previous article on how LLMs work under the hood lays the foundation for how large language models …

Unit Testing Our Python Sudoku Solver
Unit Testing Our Python Sudoku Solver

This week we have a new topic for this blog, which is Unit Testing. While not as exciting as actually writing the functional code for a project, it is an important skill to have. By writing tests for your code, you get to check that it behaves the way you intended. Not only does this let you fix the …

Lazygit Series: The Commits Panel
Lazygit Series: The Commits Panel

This is the fifth post in the Lazygit series. You can see a list of all of the posts in this series by visiting the Lazygit Series tag. This week, we’ll look at how to best use the commits panel.

Lazygit’s commits panel allows you to track the hierarchy of commits in your …

Lazygit Series: The Branches Panel
Lazygit Series: The Branches Panel

This is the fourth post in the Lazygit series. You can see a list of all of the posts in this series by visiting the Lazygit Series tag. This week, we’ll look at how to best use the branches panel.

Lazygit’s branches panel allows you to manage the branching strategy for your project. You …