
For the past couple of weeks, I built a board exam review tool called Bleppi. In this article, I talk about what problem it solves and what I learned from building it.

For the past couple of weeks, I built a board exam review tool called Bleppi. In this article, I talk about what problem it solves and what I learned from building it.

A curiosity-driven teardown of a Papa's Scooperia save: cracking the base64/AMF3 encoding open, reading the data inside, and rewriting my own progress

Learn why password hashing is deliberately slow, how salts defeat rainbow tables, and why Argon2id's memory-hardness stops GPU attacks. A developer's deep dive.

Authentication is a feature that's present in virtually every system you touch. In this article, I'll discuss h

Harness Engineering refers to designing the environment around AI to extend its capabilities. I applied it to Claude Code to build a learning system.

A practical guide to test-driven development: understand the TDD cycle, benefits, and how to apply it in real-world software projects.

Hexagonal architecture enforces a codebase structure where business logic is isolated from external systems. In this article, we cover it in depth.

Dependency inversion and dependency injection are terms that developers often mix up the two. In this article, we tackle this confusion.

Information retrieval metrics allow us to diagnose issues in our retriever's performance. In this post, we cover some of these diagnostic patterns.

Self-learning has become more attainable now than ever thanks to AI. Here's how I built a self-learning system that leverages Claude Code.

Order-aware retrieval metrics help quantify how well your retriever orders relevant documents. In this article, we talk about three of these metrics.

The thundering herd problem is a common issue one's system may run into under heavy load. In this post, we discuss what it is and how to solve it.