Skip to content
Back home

Blog

RSS

Technical deep-dives on software engineering, systems architecture, and AI.

2026

5 min read

What These Statements Look Like in Code

Principles are only as good as the code they produce. Here are six of the 36 statements applied to real TypeScript code, showing before and after what each principle looks like when you actually write it.

20 min read

What a Struct Actually Is

A struct is a compiler-verified contract about where every field lives in memory. This article compares C, C++, and Zig to show what that contract actually guarantees—and what it doesn't.

5 min read

Why Structs

Structs solve real problems in production code: parameter explosion, scattered state, and fragile function signatures. Here are the patterns that show up again and again.

4 min read

What Is a Struct?

A struct is a user-defined composite type that combines multiple variables into a single object. Here is what structs are, why we need them, and how they map to memory.

3 min read

What Is a Polyfill?

Polyfills let you write modern JavaScript without leaving legacy browsers behind. Here is how they work under the hood and why they matter.

6 min read

The Object in the Machine

Git stores everything as objects named by their content. This post covers the three object types (blobs, trees, commits) and how they chain together to form Git's immutable history.

2 min read

Hello, I'm Bernard Katamanso

A proper introduction: who I am, what I build, why I write, and where to find me around the web.

2 min read

LLM Reasoning: From Next-Token Prediction to Constrained Decoding

A first-principles look at autoregressive transformers, the hallucination problem, and how constrained decoding can ground LLM outputs in structured knowledge.

11 min read

36 Things We Keep Learning About Software

After sixty years of software engineering, what have we actually learned? These 36 statements are a distillation of recurring truths about complexity, abstraction, data layout, and organizational boundaries that keep appearing across decades of research and practice.

5 min read

Explicit Errors and Functional Cores

Error handling doesn't have to be an afterthought. By treating errors as values, separating business logic from side effects, and pushing I/O to the edges, you can build TypeScript systems that are easier to reason about, test, and trust.

2025