Archive

1290 posts · Page 26 of 108. ← Blog

Pratik Dhanave · ·6 min read

Contamination, Gaming, and Goodhart's Law

A benchmark score is trustworthy only if the model hasn't seen the answers and no one has optimized directly for the test. Both assumptions fail constantly. Training data contamination inflates scores by rewarding memorization; optimizing for a benchmark turns it from a measure into a target and destroys its meaning. This post is about the ways evaluation gets corrupted — and how to defend against them.

A benchmark score is trustworthy only if the model hasn't seen the answers and no one optimized directly for the test — and both assumptions fail constantly. Training-data contamination inflates scores by rewarding memorization; optimizing for a benchmark turns it from a measure into a target. Here's how evaluation gets corrupted, and how to defend it.

Pratik Dhanave · ·8 min read

Applied Cryptography: Pitfalls and a Decision Guide

The primitives in this series are unbreakable in practice — and yet crypto keeps failing in the real world. That's the paradox of applied cryptography: almost every vulnerability is a misuse of a sound primitive, not a broken one. A predictable random number, a comparison that returns early, a reused nonce, a missing authentication check — each is a one-line mistake that silently voids the guarantee. This closing post catalogs the pitfalls that matter and distills the whole series into a decision guide.

The primitives are unbreakable in practice, yet crypto keeps failing — because almost every vulnerability is a misuse of a sound primitive, not a broken one. A predictable random number, an early-exit comparison, a reused nonce: one-line mistakes that silently void the guarantee. Plus a decision guide.

Pratik Dhanave · ·7 min read

What Problem Does Kubernetes Solve?

Kubernetes is famously complex, and most explanations start with its parts — pods, deployments, services — which is exactly backwards. Start with the problem: you have containers, you have many machines, and you need something to run the right containers on the right machines and keep them running as things fail. Kubernetes is a control loop for that, and once you see it that way, the complexity becomes comprehensible.

Kubernetes is famously complex, and most explanations start with its parts — which is backwards. Start with the problem: you have containers, many machines, and need something to run the right containers on the right machines and keep them running as things fail.

Pratik Dhanave · ·6 min read

From DevOps to Platform Engineering

DevOps promised to tear down the wall between development and operations — and it worked, but it accidentally built a new problem: it made every developer responsible for a sprawling stack of infrastructure, pipelines, and tooling nobody has time to master. Platform engineering is the industry's answer: give developers a paved road instead of a pile of tools. Understanding that evolution is the key to the whole discipline.

DevOps tore down the wall between dev and ops — and accidentally built a new problem: it made every developer responsible for a sprawling stack nobody has time to master. Platform engineering is the answer: give developers a paved road instead of a pile of tools.

Pratik Dhanave · ·6 min read

Variables, Types, and Immutability by Default

In most languages, variables vary — that's the default, and you opt into constancy. Rust flips it: variables are immutable unless you say otherwise. That one inverted default, plus a strong static type system with inference, quietly shapes how Rust code is written and prevents a whole class of bugs before you meet ownership.

In most languages variables vary by default; Rust flips it — variables are immutable unless you say otherwise. That one inverted default, plus a strong static type system with inference, quietly shapes how Rust is written and prevents a class of bugs.

Pratik Dhanave · ·6 min read

Collections: Vec, String, and HashMap

Module 1's arrays and tuples were fixed-size and stack-bound. Real programs need growable, heap-backed collections — and Rust's three workhorses, Vec, String, and HashMap, are where ownership and borrowing stop being abstract rules and become the everyday texture of writing Rust. This opens Module 2: the data structures and abstractions you actually build with.

Real programs need growable, heap-backed collections — and Rust's three workhorses, Vec, String, and HashMap, are where ownership and borrowing stop being abstract rules and become the everyday texture of writing Rust.

Pratik Dhanave · ·6 min read

Why Code Actions Win

The claim that agents should write code isn't just aesthetic — Hugging Face backs it with measured results: code agents take fewer steps, make fewer LLM calls, and score better on hard benchmarks. This post examines the evidence and the mechanism, so you understand not just that code actions win but why.

The claim that agents should write code isn't just aesthetic — Hugging Face backs it with measured results: code agents take fewer steps, make fewer LLM calls, and score better on hard benchmarks. This examines the evidence and the mechanism.

Pratik Dhanave · ·6 min read

The Agent Loop

Strands's agent loop is deliberately small: a prompt goes in, the model decides, tools run if needed, results feed back, and it repeats until the model is done. What makes it distinctive isn't the loop's shape — every agent has one — but that Strands exposes it plainly and lets the model drive it, with only three ingredients you provide.

Strands's agent loop is deliberately small: a prompt goes in, the model decides, tools run if needed, results feed back, and it repeats until the model is done. Three ingredients you provide, and a loop the model drives.

Pratik Dhanave · ·7 min read

Model Selection and Prompt Audits

Model selection is the most commonly botched cost decision, because the intuitive answer — pick the cheaper model — is measured by the wrong number. The right number is cost per completed task, and by that measure the more capable model often wins. Paired with it is the least-known lever of all: auditing prompts written for an older model against your current one.

Model selection is the most commonly botched cost decision, because the intuitive answer — pick the cheaper model — is measured by the wrong number. The right number is cost per completed task, priced on the tail not the median.

Pratik Dhanave · ·6 min read

Chains and Composition

A "chain" is just Runnables composed with LCEL — but the word names the central idea of LangChain: build applications by wiring small, standard components into pipelines rather than writing monolithic prompt-and-parse code. Thinking in chains is thinking in composable steps, which is what makes LangChain applications modular, testable, and maintainable.

A chain is just Runnables composed with LCEL — but the word names the central idea of LangChain: build applications by wiring small standard components into pipelines rather than writing monolithic prompt-and-parse code.

Pratik Dhanave · ·6 min read

Tools and Function Calling

An agent that can only talk is a chatbot; an agent that can act needs tools. In Pydantic AI, a tool is just a typed Python function you decorate — the framework reads its type hints to tell the model how to call it, validates the model's arguments, and runs it. Function calling stops being schema-wrangling and becomes writing ordinary typed functions.

An agent that can only talk is a chatbot; one that can act needs tools. In Pydantic AI, a tool is just a typed Python function you decorate — the framework reads its type hints to tell the model how to call it, validates arguments, and runs it.

Pratik Dhanave · ·7 min read

Audit Trails and Immutability

Compliance ultimately comes down to one demand: prove it. Prove you verified the customer, prove you screened the transaction, prove you investigated the alert. The audit trail is how you prove it — an immutable, complete record of what happened and why — and it's the quiet backbone that makes every other compliance control defensible.

Compliance ultimately comes down to one demand: prove it. Prove you verified the customer, screened the transaction, investigated the alert. The audit trail is how you prove it — an immutable, complete record — the backbone that makes every other control defensible.