Blog Posts

I try to post new content every week. The search bar above can help you find what you’re looking for.

You may also find the following links useful:
20262025Tags

Using Tools in LangGraph
Using Tools in LangGraph

LLMs are impressive, but they are limited to the knowledge baked in at training time and can’t take actions in the world on their own. Tools are what change that. By giving an LLM access to tools, you turn it from a system that is frozen in time into an agent that can look up live data, run …

Pydantic Settings: A Safer Config Option for your Python Apps
Pydantic Settings: A Safer Config Option for your Python Apps

Environment variables are the default way many Python apps handle configuration. They are simple, portable, and work in every deployment environment. But as soon as you add more than a handful of settings, raw env vars become fragile and hard to reason about.

Pydantic used to solve this with …

Improving Python Code Quality and Consistency Using Ruff
Improving Python Code Quality and Consistency Using Ruff

Consistency and quality are the foundations of maintainable Python code. As projects grow and teams expand, maintaining these standards becomes increasingly challenging without the right tools. Ruff is an extremely fast linter and code formatter written in Rust that helps teams improve their code …

Sudoku Series: Nishio Rule
Sudoku Series: Nishio Rule

The next rule to implement for the Sudoku solver is Nishio. This will make all outstanding puzzles solvable because it effectively brute forces the removal of an invalid candidate until other rules can take over.

If you like this post and you’d like to know more about how to plan and write …

Board Game Reviews: Fungi
Board Game Reviews: Fungi

Here’s a game my wife and I enjoy, imagining we’re a real life Radagast the Brown, strolling through a dusky forest, foraging for supper and cooking it over a campfire. Fungi offers this in a cosy two‑player card game that mixes simple rules with hand management and careful strategy to …

How To Use Text Embeddings
How To Use Text Embeddings

Embeddings let software work with meaning rather than just matching words, so you can search by intent, find related content, and give LLMs the right context to answer questions. In this post we will start from first principles, show what these vectors actually are, explain their useful properties, …

Structured Output in LangGraph
Structured Output in LangGraph

Large language models are incredibly versatile, but when your code depends on predictable data structures, free‑form text can be a headache. The same information can be expressed in countless ways, making downstream processing error-prone. Structured output bridges this gap: by defining a schema, …

New Year: New Money Plans!
New Year: New Money Plans!

Investing in the stock market has helped me aim for better long-term growth than I could get from a typical savings account, while keeping risk in check with some simple rules and tax-efficient wrappers. I will share the specific choices that worked for me, the mistakes I will not repeat, and the …

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

Day 8 is about mapping antennas on a 2D grid and marking antinodes where signals resonate in straight lines, first at a single step beyond a pair and then across entire lines. We will walk through a vector-stepping approach in Ruby that keeps the implementation small, readable, and fast. If you want …

New Year Plans for 2026
New Year Plans for 2026

First and foremost, let me wish you a Happy New Year for 2026. I hope everyone was able to take some well deserved time off and have recharged the batteries to make the most of 2026.

In this post, I am outlining my plans for 2026 — both at a personal level and in terms of what to expect in the near …

Advent of Code 2025: A Retrospective
Advent of Code 2025: A Retrospective

In software engineering, it’s typically very good to have a retrospective after a sprint of work. The goal isn’t just to celebrate successes or catalogue frustrations, but to step back and deliberately reflect: what worked well, what didn’t, and what lessons are worth carrying forward? Advent …

Advent of Code 2025: Day 12
Advent of Code 2025: Day 12

Day 12 is the last day of Advent of Code 2025, and the last day is historically quite easy. The puzzle today looks like a polyomino packing puzzle at first glance, but for this input it reduces neatly to a capacity check on occupied cells per region. This was an assumption on my part because of the …